Skip to main content

DeriWeave 0.4.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

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[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-0.4.0-cp312-cp312-win_amd64.whl
python examples\demo.py

Le nom du paquet et de l'import est désormais deriweave. 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.

Migrer depuis deriweave-python 0.3.0

Pour conserver les anciens scripts :

python -m pip install --upgrade deriweave-python

La version 0.4.0 de ce paquet installe deriweave et conserve import deriweave_py as dw. Les deux noms donnent accès aux mêmes classes et au même moteur natif ; ils peuvent être utilisés ensemble sans mélanger deux moteurs. Les nouveaux projets utilisent import deriweave as dw. La procédure détaillée figure dans docs/MIGRATION.md, 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 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 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 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 --migration

Cette commande construit les deux paquets depuis leurs archives source, contrôle leurs contenus et installe les wheels dans un venv neuf. Elle vérifie d'abord le pricing sans NumPy, puis exécute tous les tests Python et les cinq exemples. --migration teste aussi une mise à jour de la wheel historique 0.3.0 sous Windows/CPython 3.12, puis la désinstallation du paquet de compatibilité. --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 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for deriweave 0.4.0
File Size Uploaded Provenance Actions
deriweave-0.4.0.tar.gz 1.3 MB Without provenance Details for deriweave-0.4.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for deriweave 0.4.0
File Interpreter ABI Platform Actions
deriweave-0.4.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for deriweave-0.4.0-cp312-cp312-win_amd64.whl

Total release size: 1.6 MB

Release files / deriweave-0.4.0.tar.gz

Download URL deriweave-0.4.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
2a3e39e1e4a2c79c8935cf2967bd51620167f617004956b7bef5c4ee17eafc9c
BLAKE2b-256 checksum
How to use checksums
672e2de060b4cd7f313f435755649f050a02d6761120a0b863e0e51421cd09ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / deriweave-0.4.0-cp312-cp312-win_amd64.whl

Download URL deriweave-0.4.0-cp312-cp312-win_amd64.whl
Size 330.2 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
d8987133a19035f876ebacae3c7ff192c33e8545f7cb19f60dea04b231ab1135
BLAKE2b-256 checksum
How to use checksums
80e6022388fd7c458cffe98da2d8075aa0808314cc2b051168e1e56ffc8a53f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Security for deriweave 0.4.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.

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page