DeriWeavePython 0.3.0
Contrats financiers composables en Python, avec DeriWeave C++20 pour la simulation, les cashflows, les statistiques et Longstaff-Schwartz. Les descriptions Python sont réutilisables ; aucun callback Python ne s'exécute dans les boucles Monte Carlo.
Six modèles, expressions imbriquées, barrières discrètes, autocalls avec mémoire
et politiques LSM sont disponibles. La documentation détaillée accompagne
l'archive source : docs/guide.md, docs/coverage.md et docs/AUDIT.md.
Installation avec pip
python -m pip install deriweave-python
La wheel prête à l'emploi cible CPython 3.12, Windows x64. Pour les autres configurations, pip construit depuis les sources : un compilateur C++20 et CMake sont alors nécessaires. La construction Linux/GCC est vérifiée sur Python 3.12. NumPy est facultatif pour le pricing ; pour les matrices et diagnostics de chemin :
python -m pip install "deriweave-python[numpy]"
Installer la wheel Windows fournie
Pour CPython 3.12, Windows x64, la wheel de dist/ s'installe sans
compilateur C++. Dans un environnement virtuel activé :
python -m pip install dist\deriweave_python-0.3.0-cp312-cp312-win_amd64.whl
python examples\demo.py
Le nom du paquet est deriweave-python, l'import est deriweave_py.
La wheel et les sources permettent aussi une installation à partir d'un fichier
local. Les instructions de maintenance et de publication figurent dans
docs/release.md, inclus dans l'archive source.
Compiler et installer sous Windows
Prérequis : Python 64 bits 3.10+, MSVC C++20 et CMake 3.20+. Validation sur Python 3.12.3, MSVC 19.51 et pybind11 3.1.0. Ouvrir une x64 Native Tools Command Prompt de Visual Studio :
python -m venv .venv
.venv\Scripts\activate
python -m pip install .
Réutiliser le .venv existant sans le recréer si souhaité.
Le moteur et les en-têtes Eigen sont inclus dans les sources et conservés par
les règles Git du projet : un checkout complet suffit pour pip install ..
CMake n'a pas besoin du réseau ; pip peut télécharger le backend de construction.
Pour une copie privée de ses dépendances, python prepare_windows.py récupère
uniquement les sources manquantes, sur Windows ou Linux. Il réutilise les sources
existantes et ne compile pas Eigen. Les corrections vérifiées par empreintes sont
appliquées avant d'installer une nouvelle copie du moteur.
Avec NumPy et les tests :
python -m pip install ".[test]"
python tools\build_local.py --tests
python -m pytest -q
tools/build_local.py installe le binaire qu'il construit avant de lancer les
tests natifs ; les appels Python suivants utilisent donc cette compilation.
INSTALL_WINDOWS.bat automatise préparation, installation, tests et exemples.
Installation Linux
Avec Python, venv, les en-têtes de développement Python, un compilateur C++20 et CMake installés :
python3 -m venv .venv
. .venv/bin/activate
python -m pip install .
Un Eigen 3.4+ installé est prioritaire ; les en-têtes inclus servent de repli. La validation Linux/GCC et ses limites figurent dans le rapport d'audit.
Premier prix
import deriweave_py as dw
asset = dw.Asset("AAPL")
product = dw.Product(dw.Call(dw.Spot(asset, 1.0), 100), payment_date=1.05)
market = dw.Market({"AAPL": 100}, rate=0.03, dividend_yields={"AAPL": 0.02})
model = dw.BlackScholes(0.20)
settings = dw.SimulationSettings(n_simulations=20_000, seed=42, antithetic=True)
result = dw.price(product, market=market, model=model, settings=settings)
print(result.price, result.standard_error, result.confidence_interval_95)
L'observation à 1.0 et le paiement à 1.05 restent distincts. 20 000 observations antithétiques produisent 40 000 trajectoires.
Produits composables
import deriweave_py as dw
observations = [
dw.Basket([dw.Spot("A", t), dw.Spot("B", t)], [0.5, 0.5])
for t in [0.25, 0.5, 0.75, 1.0]
]
product = dw.Product(dw.Call(dw.Average(observations), 105), payment_date=1.0)
result = dw.price(product, market=dw.Market({"A": 100, "B": 110}, 0.03),
model=dw.BlackScholes([0.20, 0.25], [[1, 0.4], [0.4, 1]]))
print(result.price)
Un call sur panier diffère d'un panier de calls. Les moyennes imbriquées conservent leur ordre et leurs observations répétées.
Exercice anticipé
import deriweave_py as dw
t = dw.ExerciseTime
contract = dw.American(
payoff=dw.Put(dw.Spot("A", t), 100),
states=[dw.Spot("A", t)], start=0, maturity=1,
)
market = dw.Market({"A": 100}, 0.03)
model = dw.BlackScholes(0.20)
policy = dw.train_longstaff_schwartz(
contract, market=market, model=model,
settings=dw.LsmSettings(training_paths=4000, seed=7919,
max_exercise_time_step=1/12),
)
result = dw.price(policy, market=market, model=model,
settings=dw.SimulationSettings(n_simulations=6000, seed=42))
print(result.price, policy.exercise_dates)
L'entraînement reste séparé de l'évaluation. Sous Heston, utiliser au minimum spot et variance comme états pour une vanille. L'intervalle de confiance est conditionnel à la politique apprise.
Vérifier une distribution
Après installation de .[test,release] et construction de la référence C++ avec
python tools/build_local.py --tests :
python tools/check_distribution.py --tests
Cette commande construit la wheel depuis l'archive source, contrôle ses contenus
et installe la wheel dans un venv neuf. Elle vérifie d'abord le pricing sans
NumPy, puis exécute tous les tests Python et les cinq exemples.
--no-isolation réutilise les dépendances de construction déjà installées.
Exemples et OpenMP
python examples/demo.py
python examples/composition_demo.py
python examples/models_demo.py
python examples/structured_demo.py
python examples/exercise_demo.py
python tools/memory_check.py
OpenMP est désactivé par défaut. Pour l'activer :
python -m pip install . -Ccmake.define.DERIWEAVE_ENABLE_OPENMP=ON
Utiliser ensuite SimulationSettings(use_openmp=True, num_threads=4). dw.build_info() indique les capacités réelles du binaire. Le runtime du compilateur est requis : vcomp140.dll sous MSVC, libgomp avec GCC. La wheel séquentielle évite cette dépendance.
Les fonctions historiques european, asian et basket restent disponibles. Base : DeriWeave 0.1.0, commit 8e54378b0800c936e22c2abca0afaca751c73888, avec les corrections de portabilité documentées dans l'audit. Licence MIT ; Eigen conserve ses licences.
Metadata
Release files for deriweave-python 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| deriweave_python-0.3.0.tar.gz | 1.3 MB | Without provenance | Details for deriweave_python-0.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| deriweave_python-0.3.0-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details for deriweave_python-0.3.0-cp312-cp312-win_amd64.whl |
Total release size: 1.6 MB
Release files / deriweave_python-0.3.0.tar.gz
| Download URL | deriweave_python-0.3.0.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
69c9ea4d1f93195b3c33e4958c7bee4142a5809a3b276690e42db37f89b07d18
|
|
BLAKE2b-256 checksum How to use checksums |
02b43d27873ecdd87e7d6186c5a2897d91cea3943f74d127b6ec38f38d456df3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / deriweave_python-0.3.0-cp312-cp312-win_amd64.whl
| Download URL | deriweave_python-0.3.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 330.1 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b6ab0661a9b13259c56550075431a01eac330a3838af7c9010c582117c9c0178
|
|
BLAKE2b-256 checksum How to use checksums |
19ca6f2116a865c2f9158aad48b2685911a1c075ce73c9ce7f3d4c25233ad6c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for deriweave-python 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.