deriweave-python 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- deriweave_python-0.3.0/.gitattributes +6 -0
- deriweave_python-0.3.0/.github/workflows/tests.yml +42 -0
- deriweave_python-0.3.0/.gitignore +18 -0
- deriweave_python-0.3.0/CHANGELOG.md +14 -0
- deriweave_python-0.3.0/CMakeLists.txt +60 -0
- deriweave_python-0.3.0/INSTALL_WINDOWS.bat +36 -0
- deriweave_python-0.3.0/LICENSE +21 -0
- deriweave_python-0.3.0/PKG-INFO +211 -0
- deriweave_python-0.3.0/README.md +189 -0
- deriweave_python-0.3.0/benchmarks/benchmark.py +45 -0
- deriweave_python-0.3.0/benchmarks/results_windows.json +56 -0
- deriweave_python-0.3.0/bindings/composition.cpp +538 -0
- deriweave_python-0.3.0/bindings/module.cpp +242 -0
- deriweave_python-0.3.0/cmake/Eigen3Config.cmake.in +9 -0
- deriweave_python-0.3.0/docs/AUDIT.md +260 -0
- deriweave_python-0.3.0/docs/coverage.md +120 -0
- deriweave_python-0.3.0/docs/files-changed.md +81 -0
- deriweave_python-0.3.0/docs/guide.md +255 -0
- deriweave_python-0.3.0/docs/native-changes.patch +288 -0
- deriweave_python-0.3.0/docs/release.md +93 -0
- deriweave_python-0.3.0/examples/composition_demo.py +50 -0
- deriweave_python-0.3.0/examples/demo.py +30 -0
- deriweave_python-0.3.0/examples/exercise_demo.py +16 -0
- deriweave_python-0.3.0/examples/models_demo.py +25 -0
- deriweave_python-0.3.0/examples/structured_demo.py +19 -0
- deriweave_python-0.3.0/native-engine.json +67 -0
- deriweave_python-0.3.0/prepare_windows.py +147 -0
- deriweave_python-0.3.0/pyproject.toml +55 -0
- deriweave_python-0.3.0/src/deriweave_py/__init__.py +112 -0
- deriweave_python-0.3.0/src/deriweave_py/_core.pyi +108 -0
- deriweave_python-0.3.0/src/deriweave_py/composition.py +560 -0
- deriweave_python-0.3.0/src/deriweave_py/py.typed +0 -0
- deriweave_python-0.3.0/src/deriweave_py/structured.py +165 -0
- deriweave_python-0.3.0/tests/native_reference.cpp +129 -0
- deriweave_python-0.3.0/tests/reference_cases.py +78 -0
- deriweave_python-0.3.0/tests/test_composition.py +122 -0
- deriweave_python-0.3.0/tests/test_contracts.py +93 -0
- deriweave_python-0.3.0/tests/test_exercise.py +81 -0
- deriweave_python-0.3.0/tests/test_financial.py +89 -0
- deriweave_python-0.3.0/tests/test_native_parity.py +49 -0
- deriweave_python-0.3.0/tests/test_numeric_limits.py +37 -0
- deriweave_python-0.3.0/tests/test_preparation.py +72 -0
- deriweave_python-0.3.0/tests/test_robustness.py +166 -0
- deriweave_python-0.3.0/tests/test_smoke.py +52 -0
- deriweave_python-0.3.0/tools/build_local.py +44 -0
- deriweave_python-0.3.0/tools/check_distribution.py +129 -0
- deriweave_python-0.3.0/tools/memory_check.py +53 -0
- deriweave_python-0.3.0/vendor/deriweave/AGENTS.md +59 -0
- deriweave_python-0.3.0/vendor/deriweave/CMakeLists.txt +392 -0
- deriweave_python-0.3.0/vendor/deriweave/LICENSE +21 -0
- deriweave_python-0.3.0/vendor/deriweave/README.md +146 -0
- deriweave_python-0.3.0/vendor/deriweave/cmake/DeriWeaveConfig.cmake.in +12 -0
- deriweave_python-0.3.0/vendor/deriweave/examples/support/heston_reference.cpp +110 -0
- deriweave_python-0.3.0/vendor/deriweave/examples/support/heston_reference.hpp +22 -0
- deriweave_python-0.3.0/vendor/deriweave/examples/support/kou_reference.hpp +42 -0
- deriweave_python-0.3.0/vendor/deriweave/examples/support/merton_fixed_jump_reference.hpp +46 -0
- deriweave_python-0.3.0/vendor/deriweave/examples/support/merton_reference.hpp +42 -0
- deriweave_python-0.3.0/vendor/deriweave/examples/support/nig_reference.hpp +39 -0
- deriweave_python-0.3.0/vendor/deriweave/examples/support/quantlib-reference-requirements.txt +2 -0
- deriweave_python-0.3.0/vendor/deriweave/examples/support/variance_gamma_reference.hpp +40 -0
- deriweave_python-0.3.0/vendor/deriweave/include/cashflow/cashflow.hpp +16 -0
- deriweave_python-0.3.0/vendor/deriweave/include/deriweave.hpp +67 -0
- deriweave_python-0.3.0/vendor/deriweave/include/market/market_data.hpp +46 -0
- deriweave_python-0.3.0/vendor/deriweave/include/market/market_path.hpp +63 -0
- deriweave_python-0.3.0/vendor/deriweave/include/market/underlying.hpp +19 -0
- deriweave_python-0.3.0/vendor/deriweave/include/model/black_scholes_model.hpp +53 -0
- deriweave_python-0.3.0/vendor/deriweave/include/model/heston_model.hpp +57 -0
- deriweave_python-0.3.0/vendor/deriweave/include/model/kou_model.hpp +59 -0
- deriweave_python-0.3.0/vendor/deriweave/include/model/merton_model.hpp +59 -0
- deriweave_python-0.3.0/vendor/deriweave/include/model/model.hpp +31 -0
- deriweave_python-0.3.0/vendor/deriweave/include/model/nig_model.hpp +59 -0
- deriweave_python-0.3.0/vendor/deriweave/include/model/variance_gamma_model.hpp +59 -0
- deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/antithetic_random_source.hpp +42 -0
- deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/bivariate_statistics.hpp +42 -0
- deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/block_seed.hpp +14 -0
- deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/control_variate.hpp +37 -0
- deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/erlang_transform.hpp +15 -0
- deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/gamma_transform.hpp +21 -0
- deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/inverse_gaussian_transform.hpp +17 -0
- deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/poisson_transform.hpp +22 -0
- deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/pseudo_random_source.hpp +26 -0
- deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/random_source.hpp +26 -0
- deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/simulation_config.hpp +55 -0
- deriweave_python-0.3.0/vendor/deriweave/include/monte_carlo/statistics.hpp +42 -0
- deriweave_python-0.3.0/vendor/deriweave/include/pricing/black_scholes_spot_control.hpp +28 -0
- deriweave_python-0.3.0/vendor/deriweave/include/pricing/kou_spot_control.hpp +29 -0
- deriweave_python-0.3.0/vendor/deriweave/include/pricing/longstaff_schwartz.hpp +32 -0
- deriweave_python-0.3.0/vendor/deriweave/include/pricing/merton_spot_control.hpp +28 -0
- deriweave_python-0.3.0/vendor/deriweave/include/pricing/nig_spot_control.hpp +29 -0
- deriweave_python-0.3.0/vendor/deriweave/include/pricing/pricer.hpp +41 -0
- deriweave_python-0.3.0/vendor/deriweave/include/pricing/pricing_context.hpp +33 -0
- deriweave_python-0.3.0/vendor/deriweave/include/pricing/pricing_control.hpp +28 -0
- deriweave_python-0.3.0/vendor/deriweave/include/pricing/pricing_result.hpp +25 -0
- deriweave_python-0.3.0/vendor/deriweave/include/pricing/simulation_dates.hpp +31 -0
- deriweave_python-0.3.0/vendor/deriweave/include/pricing/variance_gamma_spot_control.hpp +29 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/aggregation/arithmetic_average.hpp +18 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/aggregation/geometric_average.hpp +18 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/aggregation/value_aggregation.hpp +17 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/average_value.hpp +24 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/basket.hpp +21 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/best_of.hpp +19 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/call.hpp +22 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/cashflow_rule.hpp +29 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/composed_product.hpp +27 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/conditional_value.hpp +21 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/constant_value.hpp +18 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/digital.hpp +28 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/put.hpp +22 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/scaled_value.hpp +20 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/terminal_value.hpp +19 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/value_expression.hpp +42 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/variance_value.hpp +17 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/composition/worst_of.hpp +19 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/features/discrete_barrier.hpp +62 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/features/product_feature.hpp +31 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/product.hpp +39 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/structured/autocall_product.hpp +76 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/structured/exercise_contract.hpp +71 -0
- deriweave_python-0.3.0/vendor/deriweave/include/product/structured/exercise_policy_product.hpp +68 -0
- deriweave_python-0.3.0/vendor/deriweave/src/cashflow/cashflow.cpp +21 -0
- deriweave_python-0.3.0/vendor/deriweave/src/market/market_data.cpp +117 -0
- deriweave_python-0.3.0/vendor/deriweave/src/market/market_path.cpp +154 -0
- deriweave_python-0.3.0/vendor/deriweave/src/market/underlying.cpp +18 -0
- deriweave_python-0.3.0/vendor/deriweave/src/model/black_scholes_model.cpp +211 -0
- deriweave_python-0.3.0/vendor/deriweave/src/model/heston_model.cpp +260 -0
- deriweave_python-0.3.0/vendor/deriweave/src/model/kou_model.cpp +170 -0
- deriweave_python-0.3.0/vendor/deriweave/src/model/merton_model.cpp +158 -0
- deriweave_python-0.3.0/vendor/deriweave/src/model/nig_model.cpp +182 -0
- deriweave_python-0.3.0/vendor/deriweave/src/model/variance_gamma_model.cpp +179 -0
- deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/antithetic_random_source.cpp +78 -0
- deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/bivariate_statistics.cpp +129 -0
- deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/block_seed.cpp +17 -0
- deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/control_variate.cpp +106 -0
- deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/erlang_transform.cpp +127 -0
- deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/gamma_transform.cpp +180 -0
- deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/inverse_gaussian_transform.cpp +62 -0
- deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/poisson_transform.cpp +100 -0
- deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/pseudo_random_source.cpp +31 -0
- deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/random_source.cpp +62 -0
- deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/simulation_config.cpp +55 -0
- deriweave_python-0.3.0/vendor/deriweave/src/monte_carlo/statistics.cpp +123 -0
- deriweave_python-0.3.0/vendor/deriweave/src/pricing/black_scholes_spot_control.cpp +85 -0
- deriweave_python-0.3.0/vendor/deriweave/src/pricing/kou_spot_control.cpp +89 -0
- deriweave_python-0.3.0/vendor/deriweave/src/pricing/longstaff_schwartz.cpp +273 -0
- deriweave_python-0.3.0/vendor/deriweave/src/pricing/merton_spot_control.cpp +87 -0
- deriweave_python-0.3.0/vendor/deriweave/src/pricing/nig_spot_control.cpp +89 -0
- deriweave_python-0.3.0/vendor/deriweave/src/pricing/pricer.cpp +276 -0
- deriweave_python-0.3.0/vendor/deriweave/src/pricing/pricing_context.cpp +27 -0
- deriweave_python-0.3.0/vendor/deriweave/src/pricing/simulation_dates.cpp +88 -0
- deriweave_python-0.3.0/vendor/deriweave/src/pricing/variance_gamma_spot_control.cpp +89 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/aggregation/arithmetic_average.cpp +30 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/aggregation/geometric_average.cpp +32 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/average_value.cpp +42 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/basket.cpp +38 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/best_of.cpp +25 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/call.cpp +28 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/cashflow_rule.cpp +31 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/composed_product.cpp +63 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/conditional_value.cpp +21 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/constant_value.cpp +16 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/digital.cpp +59 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/numeric.hpp +33 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/put.cpp +28 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/scaled_value.cpp +27 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/terminal_value.cpp +16 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/value_expression.cpp +67 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/variance_value.cpp +16 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/composition/worst_of.cpp +25 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/features/discrete_barrier.cpp +135 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/features/product_feature.cpp +27 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/product.cpp +19 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/structured/autocall_product.cpp +156 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/structured/exercise_contract.cpp +103 -0
- deriweave_python-0.3.0/vendor/deriweave/src/product/structured/exercise_policy_product.cpp +105 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/antithetic_random_source_tests.cpp +197 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/asian_composition_tests.cpp +176 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/autocall_product_tests.cpp +320 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/average_aggregation_tests.cpp +150 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/basket_composition_tests.cpp +187 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/bivariate_statistics_tests.cpp +196 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/black_scholes_model_tests.cpp +265 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/black_scholes_spot_control_tests.cpp +196 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/blocked_pricer_tests.cpp +228 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/composed_product_tests.cpp +518 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/conditional_value_tests.cpp +91 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/consumer/CMakeLists.txt +42 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/consumer/main.cpp +173 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/consumer/shared.cpp +12 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/control_variate_tests.cpp +216 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/coupon_memory_tests.cpp +252 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/digital_expression_tests.cpp +243 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/discrete_barrier_tests.cpp +353 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/early_exercise_tests.cpp +371 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/erlang_transform_tests.cpp +83 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/expression_barrier_tests.cpp +251 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/extrema_expression_tests.cpp +276 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/gamma_transform_tests.cpp +101 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/heston_model_tests.cpp +393 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/heston_reference_tests.cpp +71 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/inverse_gaussian_transform_tests.cpp +94 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/kou_model_tests.cpp +203 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/kou_pricing_tests.cpp +204 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/lookback_composition_tests.cpp +186 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/market_data_tests.cpp +193 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/market_path_tests.cpp +111 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/merton_early_exercise_tests.cpp +132 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/merton_model_tests.cpp +227 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/merton_multi_asset_tests.cpp +136 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/merton_product_integration_tests.cpp +190 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/merton_spot_control_tests.cpp +94 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/multivariate_lsm_tests.cpp +213 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/nig_model_tests.cpp +179 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/nig_pricing_tests.cpp +377 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/openmp_pricer_tests.cpp +309 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/poisson_transform_tests.cpp +103 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/pricer_tests.cpp +326 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/pricing_context_tests.cpp +122 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/pseudo_random_source_tests.cpp +97 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/put_expression_tests.cpp +214 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/random_source_tests.cpp +143 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/simulation_config_tests.cpp +125 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/simulation_dates_tests.cpp +183 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/statistics_tests.cpp +223 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/support/composed_contracts.hpp +68 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/support/reference_product.hpp +83 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/variance_gamma_model_tests.cpp +314 -0
- deriweave_python-0.3.0/vendor/deriweave/tests/variance_gamma_pricing_tests.cpp +370 -0
- deriweave_python-0.3.0/vendor/eigen-source/COPYING.APACHE +203 -0
- deriweave_python-0.3.0/vendor/eigen-source/COPYING.BSD +26 -0
- deriweave_python-0.3.0/vendor/eigen-source/COPYING.GPL +674 -0
- deriweave_python-0.3.0/vendor/eigen-source/COPYING.LGPL +502 -0
- deriweave_python-0.3.0/vendor/eigen-source/COPYING.MINPACK +51 -0
- deriweave_python-0.3.0/vendor/eigen-source/COPYING.MPL2 +373 -0
- deriweave_python-0.3.0/vendor/eigen-source/COPYING.README +18 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/.gitignore +4 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/Cholesky +45 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/CholmodSupport +48 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/Core +384 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/Dense +7 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/Eigen +2 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/Eigenvalues +60 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/Geometry +59 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/Householder +29 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/IterativeLinearSolvers +48 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/Jacobi +32 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/KLUSupport +41 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/LU +47 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/MetisSupport +35 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/OrderingMethods +70 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/PaStiXSupport +49 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/PardisoSupport +35 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/QR +50 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/QtAlignedMalloc +39 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/SPQRSupport +34 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/SVD +50 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/Sparse +34 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/SparseCholesky +37 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/SparseCore +69 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/SparseLU +50 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/SparseQR +36 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/StdDeque +27 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/StdList +26 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/StdVector +27 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/SuperLUSupport +64 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/UmfPackSupport +40 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Cholesky/LDLT.h +688 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Cholesky/LLT.h +558 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/ArithmeticSequence.h +413 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Array.h +417 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/ArrayBase.h +226 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/ArrayWrapper.h +209 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Assign.h +90 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/AssignEvaluator.h +1010 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Assign_MKL.h +178 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/BandMatrix.h +353 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Block.h +448 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/BooleanRedux.h +162 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CommaInitializer.h +164 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/ConditionEstimator.h +175 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CoreEvaluators.h +1741 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CoreIterators.h +132 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CwiseBinaryOp.h +183 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CwiseTernaryOp.h +197 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CwiseUnaryOp.h +103 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/CwiseUnaryView.h +132 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/DenseBase.h +701 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/DenseCoeffsBase.h +685 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/DenseStorage.h +652 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Diagonal.h +258 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/DiagonalMatrix.h +391 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/DiagonalProduct.h +28 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Dot.h +318 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/EigenBase.h +160 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/ForceAlignedAccess.h +150 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Fuzzy.h +155 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/GeneralProduct.h +465 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/GenericPacketMath.h +1040 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/GlobalFunctions.h +194 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/IO.h +258 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/IndexedView.h +237 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Inverse.h +117 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Map.h +171 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/MapBase.h +310 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/MathFunctions.h +2057 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/MathFunctionsImpl.h +200 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Matrix.h +565 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/MatrixBase.h +547 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/NestByValue.h +85 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/NoAlias.h +109 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/NumTraits.h +335 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/PermutationMatrix.h +605 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/PlainObjectBase.h +1128 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Product.h +191 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/ProductEvaluators.h +1179 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Random.h +218 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Redux.h +515 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Ref.h +381 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Replicate.h +142 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Reshaped.h +454 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/ReturnByValue.h +119 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Reverse.h +217 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Select.h +164 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/SelfAdjointView.h +365 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Solve.h +188 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/SolveTriangular.h +235 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/SolverBase.h +168 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/StableNorm.h +251 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/StlIterators.h +463 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Stride.h +116 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Swap.h +68 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Transpose.h +464 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Transpositions.h +386 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/TriangularMatrix.h +1001 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/VectorBlock.h +96 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/VectorwiseOp.h +784 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/Visitor.h +381 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX/Complex.h +372 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/Default/Half.h +942 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/Default/Settings.h +49 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/MSA/Complex.h +648 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/NEON/Complex.h +584 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SSE/Complex.h +351 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/functors/StlFunctors.h +166 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/Parallelizer.h +180 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/BlasUtil.h +583 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/Constants.h +563 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/IntegralConstant.h +272 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/MKL_support.h +137 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/Macros.h +1464 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/Memory.h +1163 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/Meta.h +812 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/NonMPL2.h +3 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/StaticAssert.h +221 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/SymbolicIndex.h +293 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Core/util/XprHelper.h +856 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/RealQZ.h +657 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/RealSchur.h +558 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/AlignedBox.h +486 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/AngleAxis.h +247 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/EulerAngles.h +114 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Homogeneous.h +501 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Hyperplane.h +282 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/OrthoMethods.h +235 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/ParametrizedLine.h +232 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Quaternion.h +870 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Rotation2D.h +199 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/RotationBase.h +206 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Scaling.h +188 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Transform.h +1563 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Translation.h +202 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/Umeyama.h +166 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Householder/BlockHouseholder.h +110 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Householder/Householder.h +176 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Householder/HouseholderSequence.h +545 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/Jacobi/Jacobi.h +483 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/KLUSupport/KLUSupport.h +358 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/LU/Determinant.h +117 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/LU/FullPivLU.h +877 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/LU/InverseImpl.h +432 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/LU/PartialPivLU.h +624 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/LU/arch/InverseSize4.h +351 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/MetisSupport/MetisSupport.h +137 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/OrderingMethods/Amd.h +435 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/OrderingMethods/Ordering.h +153 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/QR/HouseholderQR.h +434 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SVD/BDCSVD.h +1366 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SVD/JacobiSVD.h +812 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SVD/SVDBase.h +376 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/AmbiVector.h +378 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/CompressedStorage.h +274 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseAssign.h +270 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseBlock.h +571 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseColEtree.h +206 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseDot.h +98 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseMap.h +305 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparsePermutation.h +178 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseProduct.h +181 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseRedux.h +49 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseRef.h +397 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseTranspose.h +92 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseUtil.h +186 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseVector.h +478 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/SparseView.h +254 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseCore/TriangularSolver.h +315 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU.h +923 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SparseQR/SparseQR.h +758 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/StlSupport/StdDeque.h +116 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/StlSupport/StdList.h +106 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/StlSupport/StdVector.h +131 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/StlSupport/details.h +84 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/misc/Image.h +82 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/misc/Kernel.h +79 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/misc/RealSvd2x2.h +55 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/misc/blas.h +440 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/misc/lapack.h +152 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/misc/lapacke.h +16292 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/misc/lapacke_mangling.h +17 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/BlockMethods.h +1442 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/IndexedViewMethods.h +262 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
- deriweave_python-0.3.0/vendor/eigen-source/Eigen/src/plugins/ReshapedMethods.h +149 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: Build and test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
validate:
|
|
13
|
+
strategy:
|
|
14
|
+
fail-fast: false
|
|
15
|
+
matrix:
|
|
16
|
+
os: [ubuntu-latest, windows-latest]
|
|
17
|
+
python: ["3.10", "3.12", "3.14"]
|
|
18
|
+
openmp: ["OFF"]
|
|
19
|
+
include:
|
|
20
|
+
- os: ubuntu-latest
|
|
21
|
+
python: "3.12"
|
|
22
|
+
openmp: "ON"
|
|
23
|
+
- os: windows-latest
|
|
24
|
+
python: "3.12"
|
|
25
|
+
openmp: "ON"
|
|
26
|
+
runs-on: ${{ matrix.os }}
|
|
27
|
+
timeout-minutes: 30
|
|
28
|
+
env:
|
|
29
|
+
CMAKE_BUILD_PARALLEL_LEVEL: "4"
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@v6
|
|
32
|
+
- uses: actions/setup-python@v6
|
|
33
|
+
with:
|
|
34
|
+
python-version: ${{ matrix.python }}
|
|
35
|
+
- name: Install development dependencies
|
|
36
|
+
run: python -m pip install "scikit-build-core>=1.0" "pybind11>=3.0,<4" "pytest>=8" "numpy>=1.23" "build>=1.2" "twine>=6"
|
|
37
|
+
- name: Build and install the native extension; run C++ suites
|
|
38
|
+
run: python tools/build_local.py --openmp ${{ matrix.openmp }} --tests
|
|
39
|
+
- name: Build distributions and test the wheel in a fresh environment
|
|
40
|
+
run: python tools/check_distribution.py --tests
|
|
41
|
+
- name: Check release metadata
|
|
42
|
+
run: python -c "import glob, subprocess, sys; subprocess.run([sys.executable, '-m', 'twine', 'check', '--strict', *glob.glob('dist/*.whl'), *glob.glob('dist/*.tar.gz')], check=True)"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/.venv/
|
|
2
|
+
/build/
|
|
3
|
+
/_skbuild/
|
|
4
|
+
*.egg-info/
|
|
5
|
+
__pycache__/
|
|
6
|
+
.pytest_cache/
|
|
7
|
+
/.audit/
|
|
8
|
+
/dist/
|
|
9
|
+
*.pyd
|
|
10
|
+
*.so
|
|
11
|
+
|
|
12
|
+
# Keep the pinned engine and Eigen headers in source control for pip install .
|
|
13
|
+
/vendor/*
|
|
14
|
+
!/vendor/deriweave/
|
|
15
|
+
!/vendor/eigen-source/
|
|
16
|
+
/vendor/eigen-source/*
|
|
17
|
+
!/vendor/eigen-source/Eigen/
|
|
18
|
+
!/vendor/eigen-source/COPYING*
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.3.0 — 2026-11-07
|
|
4
|
+
|
|
5
|
+
- Six native models and reusable expressions, with autocalls and separate LSM training/evaluation.
|
|
6
|
+
- Native paths, deterministic contract evaluation, moment diagnostics, NumPy interoperability and type information.
|
|
7
|
+
- Numerical portability fixes validated on Windows/MSVC and Linux/GCC; details in docs/AUDIT.md.
|
|
8
|
+
- Self-contained sources with an explicit archive whitelist and sequential Windows CPython 3.12 wheel; native dependencies are retained in source control.
|
|
9
|
+
- Source preparation reuses existing headers without compiling Eigen and patches new engine sources before installing them.
|
|
10
|
+
- Development builds install the actual extension they validate; clean-environment distribution checks are reproducible.
|
|
11
|
+
|
|
12
|
+
## 0.2.0
|
|
13
|
+
|
|
14
|
+
Initial Python bindings with six models, declarative compositions and historical pricing helpers.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.20)
|
|
2
|
+
project(DeriWeavePython VERSION 0.3.0 LANGUAGES CXX)
|
|
3
|
+
|
|
4
|
+
option(DERIWEAVE_PY_BUILD_TESTS "Build native tests and the Python reference executable" OFF)
|
|
5
|
+
option(DERIWEAVE_ENABLE_OPENMP "Enable native OpenMP pricing (runtime required)" OFF)
|
|
6
|
+
if(NOT DEFINED DERIWEAVE_SOURCE_DIR)
|
|
7
|
+
if(DEFINED ENV{DERIWEAVE_CPP_DIR} AND NOT "$ENV{DERIWEAVE_CPP_DIR}" STREQUAL "")
|
|
8
|
+
set(DERIWEAVE_SOURCE_DIR "$ENV{DERIWEAVE_CPP_DIR}" CACHE PATH "DeriWeave C++ sources")
|
|
9
|
+
else()
|
|
10
|
+
set(DERIWEAVE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vendor/deriweave" CACHE PATH "DeriWeave C++ sources")
|
|
11
|
+
endif()
|
|
12
|
+
endif()
|
|
13
|
+
if(NOT EXISTS "${DERIWEAVE_SOURCE_DIR}/CMakeLists.txt")
|
|
14
|
+
message(FATAL_ERROR "DeriWeave C++ sources missing. Run python prepare_windows.py or set DERIWEAVE_SOURCE_DIR.")
|
|
15
|
+
endif()
|
|
16
|
+
find_package(Eigen3 3.4 QUIET NO_MODULE)
|
|
17
|
+
if(NOT Eigen3_FOUND)
|
|
18
|
+
set(DERIWEAVE_EIGEN_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vendor/eigen-source")
|
|
19
|
+
if(NOT EXISTS "${DERIWEAVE_EIGEN_INCLUDE_DIR}/Eigen/Core")
|
|
20
|
+
message(FATAL_ERROR "Eigen 3.4+ missing. Install Eigen or run python prepare_windows.py.")
|
|
21
|
+
endif()
|
|
22
|
+
include(CMakePackageConfigHelpers)
|
|
23
|
+
set(Eigen3_DIR "${CMAKE_CURRENT_BINARY_DIR}/eigen-package")
|
|
24
|
+
file(MAKE_DIRECTORY "${Eigen3_DIR}")
|
|
25
|
+
configure_file(cmake/Eigen3Config.cmake.in "${Eigen3_DIR}/Eigen3Config.cmake" @ONLY)
|
|
26
|
+
write_basic_package_version_file("${Eigen3_DIR}/Eigen3ConfigVersion.cmake"
|
|
27
|
+
VERSION 3.4.0 COMPATIBILITY SameMajorVersion ARCH_INDEPENDENT)
|
|
28
|
+
find_package(Eigen3 3.4 REQUIRED NO_MODULE)
|
|
29
|
+
endif()
|
|
30
|
+
set(DERIWEAVE_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
|
31
|
+
set(DERIWEAVE_BUILD_TESTS ${DERIWEAVE_PY_BUILD_TESTS} CACHE BOOL "" FORCE)
|
|
32
|
+
if(DERIWEAVE_PY_BUILD_TESTS)
|
|
33
|
+
include(CTest)
|
|
34
|
+
endif()
|
|
35
|
+
find_package(Python COMPONENTS Interpreter Development.Module REQUIRED)
|
|
36
|
+
set(PYBIND11_FINDPYTHON ON)
|
|
37
|
+
find_package(pybind11 3.0 CONFIG REQUIRED)
|
|
38
|
+
add_subdirectory("${DERIWEAVE_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/deriweave_cpp" EXCLUDE_FROM_ALL)
|
|
39
|
+
pybind11_add_module(_core NO_EXTRAS bindings/module.cpp bindings/composition.cpp)
|
|
40
|
+
target_compile_features(_core PRIVATE cxx_std_20)
|
|
41
|
+
target_link_libraries(_core PRIVATE DeriWeave::deriweave_core)
|
|
42
|
+
install(TARGETS _core LIBRARY DESTINATION deriweave_py COMPONENT python RUNTIME DESTINATION deriweave_py COMPONENT python)
|
|
43
|
+
install(FILES "${DERIWEAVE_SOURCE_DIR}/LICENSE" DESTINATION deriweave_py/licenses
|
|
44
|
+
RENAME DeriWeave-LICENSE COMPONENT python)
|
|
45
|
+
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/vendor/eigen-source/COPYING.MPL2")
|
|
46
|
+
install(FILES vendor/eigen-source/COPYING.MPL2 vendor/eigen-source/COPYING.BSD
|
|
47
|
+
vendor/eigen-source/COPYING.MINPACK vendor/eigen-source/COPYING.README
|
|
48
|
+
DESTINATION deriweave_py/licenses COMPONENT python)
|
|
49
|
+
endif()
|
|
50
|
+
if(DERIWEAVE_PY_BUILD_TESTS)
|
|
51
|
+
add_custom_target(native_tests)
|
|
52
|
+
get_property(_native_targets DIRECTORY "${DERIWEAVE_SOURCE_DIR}" PROPERTY BUILDSYSTEM_TARGETS)
|
|
53
|
+
foreach(_target IN LISTS _native_targets)
|
|
54
|
+
if(_target MATCHES "_tests$")
|
|
55
|
+
add_dependencies(native_tests "${_target}")
|
|
56
|
+
endif()
|
|
57
|
+
endforeach()
|
|
58
|
+
add_executable(native_reference tests/native_reference.cpp)
|
|
59
|
+
target_link_libraries(native_reference PRIVATE DeriWeave::deriweave_core)
|
|
60
|
+
endif()
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
setlocal
|
|
3
|
+
cd /d "%~dp0"
|
|
4
|
+
where cl >nul 2>&1
|
|
5
|
+
if errorlevel 1 (
|
|
6
|
+
echo ERROR: Open an x64 Native Tools Command Prompt for Visual Studio.
|
|
7
|
+
exit /b 1
|
|
8
|
+
)
|
|
9
|
+
where cmake >nul 2>&1
|
|
10
|
+
if errorlevel 1 (
|
|
11
|
+
if exist "%ProgramFiles%\CMake\bin\cmake.exe" set "PATH=%ProgramFiles%\CMake\bin;%PATH%"
|
|
12
|
+
)
|
|
13
|
+
where cmake >nul 2>&1
|
|
14
|
+
if errorlevel 1 (
|
|
15
|
+
echo ERROR: CMake is required.
|
|
16
|
+
exit /b 1
|
|
17
|
+
)
|
|
18
|
+
if not exist ".venv\Scripts\python.exe" (
|
|
19
|
+
py -3 -m venv .venv
|
|
20
|
+
if errorlevel 1 exit /b 1
|
|
21
|
+
)
|
|
22
|
+
call ".venv\Scripts\activate.bat"
|
|
23
|
+
python prepare_windows.py
|
|
24
|
+
if errorlevel 1 exit /b 1
|
|
25
|
+
python -m pip install ".[test]"
|
|
26
|
+
if errorlevel 1 exit /b 1
|
|
27
|
+
python tools\build_local.py --tests
|
|
28
|
+
if errorlevel 1 exit /b 1
|
|
29
|
+
python -m pytest -q
|
|
30
|
+
if errorlevel 1 exit /b 1
|
|
31
|
+
for %%f in (examples\*.py) do (
|
|
32
|
+
python "%%f"
|
|
33
|
+
if errorlevel 1 exit /b 1
|
|
34
|
+
)
|
|
35
|
+
echo SUCCESS: installation, native tests, Python tests and examples passed.
|
|
36
|
+
endlocal
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 DeriWeave contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: deriweave-python
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Composable derivatives pricing with the native DeriWeave C++20 engine
|
|
5
|
+
Keywords: derivatives,monte-carlo,quantitative-finance,pricing
|
|
6
|
+
Author: DeriWeave contributors
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Requires-Python: >=3.10
|
|
10
|
+
Provides-Extra: numpy
|
|
11
|
+
Requires-Dist: numpy>=1.23; extra == "numpy"
|
|
12
|
+
Provides-Extra: test
|
|
13
|
+
Requires-Dist: pytest>=8; extra == "test"
|
|
14
|
+
Requires-Dist: numpy>=1.23; extra == "test"
|
|
15
|
+
Requires-Dist: build>=1.2; extra == "test"
|
|
16
|
+
Requires-Dist: scikit-build-core>=1.0; extra == "test"
|
|
17
|
+
Requires-Dist: pybind11<4,>=3.0; extra == "test"
|
|
18
|
+
Provides-Extra: release
|
|
19
|
+
Requires-Dist: build>=1.2; extra == "release"
|
|
20
|
+
Requires-Dist: twine>=6; extra == "release"
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
|
|
23
|
+
# DeriWeavePython 0.3.0
|
|
24
|
+
|
|
25
|
+
Contrats financiers composables en Python, avec **DeriWeave C++20** pour la
|
|
26
|
+
simulation, les cashflows, les statistiques et Longstaff-Schwartz.
|
|
27
|
+
Les descriptions Python sont réutilisables ; aucun callback Python ne s'exécute
|
|
28
|
+
dans les boucles Monte Carlo.
|
|
29
|
+
|
|
30
|
+
Six modèles, expressions imbriquées, barrières discrètes, autocalls avec mémoire
|
|
31
|
+
et politiques LSM sont disponibles. La documentation détaillée accompagne
|
|
32
|
+
l'archive source : `docs/guide.md`, `docs/coverage.md` et `docs/AUDIT.md`.
|
|
33
|
+
|
|
34
|
+
## Installation avec pip
|
|
35
|
+
|
|
36
|
+
~~~bash
|
|
37
|
+
python -m pip install deriweave-python
|
|
38
|
+
~~~
|
|
39
|
+
|
|
40
|
+
La wheel prête à l'emploi cible **CPython 3.12, Windows x64**. Pour les autres
|
|
41
|
+
configurations, pip construit depuis les sources : un compilateur C++20 et
|
|
42
|
+
CMake sont alors nécessaires. La construction Linux/GCC est vérifiée sur Python 3.12.
|
|
43
|
+
NumPy est facultatif pour le pricing ; pour les matrices et diagnostics de chemin :
|
|
44
|
+
|
|
45
|
+
~~~bash
|
|
46
|
+
python -m pip install "deriweave-python[numpy]"
|
|
47
|
+
~~~
|
|
48
|
+
|
|
49
|
+
## Installer la wheel Windows fournie
|
|
50
|
+
|
|
51
|
+
Pour **CPython 3.12, Windows x64**, la wheel de `dist/` s'installe sans
|
|
52
|
+
compilateur C++. Dans un environnement virtuel activé :
|
|
53
|
+
|
|
54
|
+
~~~bat
|
|
55
|
+
python -m pip install dist\deriweave_python-0.3.0-cp312-cp312-win_amd64.whl
|
|
56
|
+
python examples\demo.py
|
|
57
|
+
~~~
|
|
58
|
+
|
|
59
|
+
Le nom du paquet est `deriweave-python`, l'import est `deriweave_py`.
|
|
60
|
+
La wheel et les sources permettent aussi une installation à partir d'un fichier
|
|
61
|
+
local. Les instructions de maintenance et de publication figurent dans
|
|
62
|
+
`docs/release.md`, inclus dans l'archive source.
|
|
63
|
+
|
|
64
|
+
## Compiler et installer sous Windows
|
|
65
|
+
|
|
66
|
+
Prérequis : Python 64 bits 3.10+, MSVC C++20 et CMake 3.20+.
|
|
67
|
+
Validation sur Python 3.12.3, MSVC 19.51 et pybind11 3.1.0.
|
|
68
|
+
Ouvrir une **x64 Native Tools Command Prompt** de Visual Studio :
|
|
69
|
+
|
|
70
|
+
~~~bat
|
|
71
|
+
python -m venv .venv
|
|
72
|
+
.venv\Scripts\activate
|
|
73
|
+
python -m pip install .
|
|
74
|
+
~~~
|
|
75
|
+
|
|
76
|
+
Réutiliser le .venv existant sans le recréer si souhaité.
|
|
77
|
+
Le moteur et les en-têtes Eigen sont inclus dans les sources et conservés par
|
|
78
|
+
les règles Git du projet : un checkout complet suffit pour `pip install .`.
|
|
79
|
+
CMake n'a pas besoin du réseau ; pip peut télécharger le backend de construction.
|
|
80
|
+
Pour une copie privée de ses dépendances, `python prepare_windows.py` récupère
|
|
81
|
+
uniquement les sources manquantes, sur Windows ou Linux. Il réutilise les sources
|
|
82
|
+
existantes et ne compile pas Eigen. Les corrections vérifiées par empreintes sont
|
|
83
|
+
appliquées avant d'installer une nouvelle copie du moteur.
|
|
84
|
+
|
|
85
|
+
Avec NumPy et les tests :
|
|
86
|
+
|
|
87
|
+
~~~bat
|
|
88
|
+
python -m pip install ".[test]"
|
|
89
|
+
python tools\build_local.py --tests
|
|
90
|
+
python -m pytest -q
|
|
91
|
+
~~~
|
|
92
|
+
|
|
93
|
+
`tools/build_local.py` installe le binaire qu'il construit avant de lancer les
|
|
94
|
+
tests natifs ; les appels Python suivants utilisent donc cette compilation.
|
|
95
|
+
INSTALL_WINDOWS.bat automatise préparation, installation, tests et exemples.
|
|
96
|
+
|
|
97
|
+
## Installation Linux
|
|
98
|
+
|
|
99
|
+
Avec Python, venv, les en-têtes de développement Python, un compilateur C++20 et
|
|
100
|
+
CMake installés :
|
|
101
|
+
|
|
102
|
+
~~~bash
|
|
103
|
+
python3 -m venv .venv
|
|
104
|
+
. .venv/bin/activate
|
|
105
|
+
python -m pip install .
|
|
106
|
+
~~~
|
|
107
|
+
|
|
108
|
+
Un Eigen 3.4+ installé est prioritaire ; les en-têtes inclus servent de repli.
|
|
109
|
+
La validation Linux/GCC et ses limites figurent dans le rapport d'audit.
|
|
110
|
+
|
|
111
|
+
## Premier prix
|
|
112
|
+
|
|
113
|
+
~~~python
|
|
114
|
+
import deriweave_py as dw
|
|
115
|
+
|
|
116
|
+
asset = dw.Asset("AAPL")
|
|
117
|
+
product = dw.Product(dw.Call(dw.Spot(asset, 1.0), 100), payment_date=1.05)
|
|
118
|
+
market = dw.Market({"AAPL": 100}, rate=0.03, dividend_yields={"AAPL": 0.02})
|
|
119
|
+
model = dw.BlackScholes(0.20)
|
|
120
|
+
settings = dw.SimulationSettings(n_simulations=20_000, seed=42, antithetic=True)
|
|
121
|
+
result = dw.price(product, market=market, model=model, settings=settings)
|
|
122
|
+
print(result.price, result.standard_error, result.confidence_interval_95)
|
|
123
|
+
~~~
|
|
124
|
+
|
|
125
|
+
L'observation à 1.0 et le paiement à 1.05 restent distincts.
|
|
126
|
+
20 000 observations antithétiques produisent 40 000 trajectoires.
|
|
127
|
+
|
|
128
|
+
## Produits composables
|
|
129
|
+
|
|
130
|
+
~~~python
|
|
131
|
+
import deriweave_py as dw
|
|
132
|
+
|
|
133
|
+
observations = [
|
|
134
|
+
dw.Basket([dw.Spot("A", t), dw.Spot("B", t)], [0.5, 0.5])
|
|
135
|
+
for t in [0.25, 0.5, 0.75, 1.0]
|
|
136
|
+
]
|
|
137
|
+
product = dw.Product(dw.Call(dw.Average(observations), 105), payment_date=1.0)
|
|
138
|
+
result = dw.price(product, market=dw.Market({"A": 100, "B": 110}, 0.03),
|
|
139
|
+
model=dw.BlackScholes([0.20, 0.25], [[1, 0.4], [0.4, 1]]))
|
|
140
|
+
print(result.price)
|
|
141
|
+
~~~
|
|
142
|
+
|
|
143
|
+
Un call sur panier diffère d'un panier de calls. Les moyennes imbriquées
|
|
144
|
+
conservent leur ordre et leurs observations répétées.
|
|
145
|
+
|
|
146
|
+
## Exercice anticipé
|
|
147
|
+
|
|
148
|
+
~~~python
|
|
149
|
+
import deriweave_py as dw
|
|
150
|
+
|
|
151
|
+
t = dw.ExerciseTime
|
|
152
|
+
contract = dw.American(
|
|
153
|
+
payoff=dw.Put(dw.Spot("A", t), 100),
|
|
154
|
+
states=[dw.Spot("A", t)], start=0, maturity=1,
|
|
155
|
+
)
|
|
156
|
+
market = dw.Market({"A": 100}, 0.03)
|
|
157
|
+
model = dw.BlackScholes(0.20)
|
|
158
|
+
policy = dw.train_longstaff_schwartz(
|
|
159
|
+
contract, market=market, model=model,
|
|
160
|
+
settings=dw.LsmSettings(training_paths=4000, seed=7919,
|
|
161
|
+
max_exercise_time_step=1/12),
|
|
162
|
+
)
|
|
163
|
+
result = dw.price(policy, market=market, model=model,
|
|
164
|
+
settings=dw.SimulationSettings(n_simulations=6000, seed=42))
|
|
165
|
+
print(result.price, policy.exercise_dates)
|
|
166
|
+
~~~
|
|
167
|
+
|
|
168
|
+
L'entraînement reste séparé de l'évaluation. Sous Heston, utiliser au minimum
|
|
169
|
+
spot et variance comme états pour une vanille. L'intervalle de confiance est
|
|
170
|
+
conditionnel à la politique apprise.
|
|
171
|
+
|
|
172
|
+
## Vérifier une distribution
|
|
173
|
+
|
|
174
|
+
Après installation de `.[test,release]` et construction de la référence C++ avec
|
|
175
|
+
`python tools/build_local.py --tests` :
|
|
176
|
+
|
|
177
|
+
~~~bash
|
|
178
|
+
python tools/check_distribution.py --tests
|
|
179
|
+
~~~
|
|
180
|
+
|
|
181
|
+
Cette commande construit la wheel depuis l'archive source, contrôle ses contenus
|
|
182
|
+
et installe la wheel dans un venv neuf. Elle vérifie d'abord le pricing sans
|
|
183
|
+
NumPy, puis exécute tous les tests Python et les cinq exemples.
|
|
184
|
+
`--no-isolation` réutilise les dépendances de construction déjà installées.
|
|
185
|
+
|
|
186
|
+
## Exemples et OpenMP
|
|
187
|
+
|
|
188
|
+
~~~bash
|
|
189
|
+
python examples/demo.py
|
|
190
|
+
python examples/composition_demo.py
|
|
191
|
+
python examples/models_demo.py
|
|
192
|
+
python examples/structured_demo.py
|
|
193
|
+
python examples/exercise_demo.py
|
|
194
|
+
python tools/memory_check.py
|
|
195
|
+
~~~
|
|
196
|
+
|
|
197
|
+
OpenMP est désactivé par défaut. Pour l'activer :
|
|
198
|
+
|
|
199
|
+
~~~bash
|
|
200
|
+
python -m pip install . -Ccmake.define.DERIWEAVE_ENABLE_OPENMP=ON
|
|
201
|
+
~~~
|
|
202
|
+
|
|
203
|
+
Utiliser ensuite SimulationSettings(use_openmp=True, num_threads=4).
|
|
204
|
+
dw.build_info() indique les capacités réelles du binaire.
|
|
205
|
+
Le runtime du compilateur est requis : vcomp140.dll sous MSVC, libgomp avec GCC.
|
|
206
|
+
La wheel séquentielle évite cette dépendance.
|
|
207
|
+
|
|
208
|
+
Les fonctions historiques european, asian et basket restent disponibles.
|
|
209
|
+
Base : [DeriWeave 0.1.0](https://github.com/AmineFendi94/DeriWeave),
|
|
210
|
+
commit 8e54378b0800c936e22c2abca0afaca751c73888, avec les corrections de portabilité
|
|
211
|
+
documentées dans l'audit. Licence MIT ; Eigen conserve ses licences.
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# DeriWeavePython 0.3.0
|
|
2
|
+
|
|
3
|
+
Contrats financiers composables en Python, avec **DeriWeave C++20** pour la
|
|
4
|
+
simulation, les cashflows, les statistiques et Longstaff-Schwartz.
|
|
5
|
+
Les descriptions Python sont réutilisables ; aucun callback Python ne s'exécute
|
|
6
|
+
dans les boucles Monte Carlo.
|
|
7
|
+
|
|
8
|
+
Six modèles, expressions imbriquées, barrières discrètes, autocalls avec mémoire
|
|
9
|
+
et politiques LSM sont disponibles. La documentation détaillée accompagne
|
|
10
|
+
l'archive source : `docs/guide.md`, `docs/coverage.md` et `docs/AUDIT.md`.
|
|
11
|
+
|
|
12
|
+
## Installation avec pip
|
|
13
|
+
|
|
14
|
+
~~~bash
|
|
15
|
+
python -m pip install deriweave-python
|
|
16
|
+
~~~
|
|
17
|
+
|
|
18
|
+
La wheel prête à l'emploi cible **CPython 3.12, Windows x64**. Pour les autres
|
|
19
|
+
configurations, pip construit depuis les sources : un compilateur C++20 et
|
|
20
|
+
CMake sont alors nécessaires. La construction Linux/GCC est vérifiée sur Python 3.12.
|
|
21
|
+
NumPy est facultatif pour le pricing ; pour les matrices et diagnostics de chemin :
|
|
22
|
+
|
|
23
|
+
~~~bash
|
|
24
|
+
python -m pip install "deriweave-python[numpy]"
|
|
25
|
+
~~~
|
|
26
|
+
|
|
27
|
+
## Installer la wheel Windows fournie
|
|
28
|
+
|
|
29
|
+
Pour **CPython 3.12, Windows x64**, la wheel de `dist/` s'installe sans
|
|
30
|
+
compilateur C++. Dans un environnement virtuel activé :
|
|
31
|
+
|
|
32
|
+
~~~bat
|
|
33
|
+
python -m pip install dist\deriweave_python-0.3.0-cp312-cp312-win_amd64.whl
|
|
34
|
+
python examples\demo.py
|
|
35
|
+
~~~
|
|
36
|
+
|
|
37
|
+
Le nom du paquet est `deriweave-python`, l'import est `deriweave_py`.
|
|
38
|
+
La wheel et les sources permettent aussi une installation à partir d'un fichier
|
|
39
|
+
local. Les instructions de maintenance et de publication figurent dans
|
|
40
|
+
`docs/release.md`, inclus dans l'archive source.
|
|
41
|
+
|
|
42
|
+
## Compiler et installer sous Windows
|
|
43
|
+
|
|
44
|
+
Prérequis : Python 64 bits 3.10+, MSVC C++20 et CMake 3.20+.
|
|
45
|
+
Validation sur Python 3.12.3, MSVC 19.51 et pybind11 3.1.0.
|
|
46
|
+
Ouvrir une **x64 Native Tools Command Prompt** de Visual Studio :
|
|
47
|
+
|
|
48
|
+
~~~bat
|
|
49
|
+
python -m venv .venv
|
|
50
|
+
.venv\Scripts\activate
|
|
51
|
+
python -m pip install .
|
|
52
|
+
~~~
|
|
53
|
+
|
|
54
|
+
Réutiliser le .venv existant sans le recréer si souhaité.
|
|
55
|
+
Le moteur et les en-têtes Eigen sont inclus dans les sources et conservés par
|
|
56
|
+
les règles Git du projet : un checkout complet suffit pour `pip install .`.
|
|
57
|
+
CMake n'a pas besoin du réseau ; pip peut télécharger le backend de construction.
|
|
58
|
+
Pour une copie privée de ses dépendances, `python prepare_windows.py` récupère
|
|
59
|
+
uniquement les sources manquantes, sur Windows ou Linux. Il réutilise les sources
|
|
60
|
+
existantes et ne compile pas Eigen. Les corrections vérifiées par empreintes sont
|
|
61
|
+
appliquées avant d'installer une nouvelle copie du moteur.
|
|
62
|
+
|
|
63
|
+
Avec NumPy et les tests :
|
|
64
|
+
|
|
65
|
+
~~~bat
|
|
66
|
+
python -m pip install ".[test]"
|
|
67
|
+
python tools\build_local.py --tests
|
|
68
|
+
python -m pytest -q
|
|
69
|
+
~~~
|
|
70
|
+
|
|
71
|
+
`tools/build_local.py` installe le binaire qu'il construit avant de lancer les
|
|
72
|
+
tests natifs ; les appels Python suivants utilisent donc cette compilation.
|
|
73
|
+
INSTALL_WINDOWS.bat automatise préparation, installation, tests et exemples.
|
|
74
|
+
|
|
75
|
+
## Installation Linux
|
|
76
|
+
|
|
77
|
+
Avec Python, venv, les en-têtes de développement Python, un compilateur C++20 et
|
|
78
|
+
CMake installés :
|
|
79
|
+
|
|
80
|
+
~~~bash
|
|
81
|
+
python3 -m venv .venv
|
|
82
|
+
. .venv/bin/activate
|
|
83
|
+
python -m pip install .
|
|
84
|
+
~~~
|
|
85
|
+
|
|
86
|
+
Un Eigen 3.4+ installé est prioritaire ; les en-têtes inclus servent de repli.
|
|
87
|
+
La validation Linux/GCC et ses limites figurent dans le rapport d'audit.
|
|
88
|
+
|
|
89
|
+
## Premier prix
|
|
90
|
+
|
|
91
|
+
~~~python
|
|
92
|
+
import deriweave_py as dw
|
|
93
|
+
|
|
94
|
+
asset = dw.Asset("AAPL")
|
|
95
|
+
product = dw.Product(dw.Call(dw.Spot(asset, 1.0), 100), payment_date=1.05)
|
|
96
|
+
market = dw.Market({"AAPL": 100}, rate=0.03, dividend_yields={"AAPL": 0.02})
|
|
97
|
+
model = dw.BlackScholes(0.20)
|
|
98
|
+
settings = dw.SimulationSettings(n_simulations=20_000, seed=42, antithetic=True)
|
|
99
|
+
result = dw.price(product, market=market, model=model, settings=settings)
|
|
100
|
+
print(result.price, result.standard_error, result.confidence_interval_95)
|
|
101
|
+
~~~
|
|
102
|
+
|
|
103
|
+
L'observation à 1.0 et le paiement à 1.05 restent distincts.
|
|
104
|
+
20 000 observations antithétiques produisent 40 000 trajectoires.
|
|
105
|
+
|
|
106
|
+
## Produits composables
|
|
107
|
+
|
|
108
|
+
~~~python
|
|
109
|
+
import deriweave_py as dw
|
|
110
|
+
|
|
111
|
+
observations = [
|
|
112
|
+
dw.Basket([dw.Spot("A", t), dw.Spot("B", t)], [0.5, 0.5])
|
|
113
|
+
for t in [0.25, 0.5, 0.75, 1.0]
|
|
114
|
+
]
|
|
115
|
+
product = dw.Product(dw.Call(dw.Average(observations), 105), payment_date=1.0)
|
|
116
|
+
result = dw.price(product, market=dw.Market({"A": 100, "B": 110}, 0.03),
|
|
117
|
+
model=dw.BlackScholes([0.20, 0.25], [[1, 0.4], [0.4, 1]]))
|
|
118
|
+
print(result.price)
|
|
119
|
+
~~~
|
|
120
|
+
|
|
121
|
+
Un call sur panier diffère d'un panier de calls. Les moyennes imbriquées
|
|
122
|
+
conservent leur ordre et leurs observations répétées.
|
|
123
|
+
|
|
124
|
+
## Exercice anticipé
|
|
125
|
+
|
|
126
|
+
~~~python
|
|
127
|
+
import deriweave_py as dw
|
|
128
|
+
|
|
129
|
+
t = dw.ExerciseTime
|
|
130
|
+
contract = dw.American(
|
|
131
|
+
payoff=dw.Put(dw.Spot("A", t), 100),
|
|
132
|
+
states=[dw.Spot("A", t)], start=0, maturity=1,
|
|
133
|
+
)
|
|
134
|
+
market = dw.Market({"A": 100}, 0.03)
|
|
135
|
+
model = dw.BlackScholes(0.20)
|
|
136
|
+
policy = dw.train_longstaff_schwartz(
|
|
137
|
+
contract, market=market, model=model,
|
|
138
|
+
settings=dw.LsmSettings(training_paths=4000, seed=7919,
|
|
139
|
+
max_exercise_time_step=1/12),
|
|
140
|
+
)
|
|
141
|
+
result = dw.price(policy, market=market, model=model,
|
|
142
|
+
settings=dw.SimulationSettings(n_simulations=6000, seed=42))
|
|
143
|
+
print(result.price, policy.exercise_dates)
|
|
144
|
+
~~~
|
|
145
|
+
|
|
146
|
+
L'entraînement reste séparé de l'évaluation. Sous Heston, utiliser au minimum
|
|
147
|
+
spot et variance comme états pour une vanille. L'intervalle de confiance est
|
|
148
|
+
conditionnel à la politique apprise.
|
|
149
|
+
|
|
150
|
+
## Vérifier une distribution
|
|
151
|
+
|
|
152
|
+
Après installation de `.[test,release]` et construction de la référence C++ avec
|
|
153
|
+
`python tools/build_local.py --tests` :
|
|
154
|
+
|
|
155
|
+
~~~bash
|
|
156
|
+
python tools/check_distribution.py --tests
|
|
157
|
+
~~~
|
|
158
|
+
|
|
159
|
+
Cette commande construit la wheel depuis l'archive source, contrôle ses contenus
|
|
160
|
+
et installe la wheel dans un venv neuf. Elle vérifie d'abord le pricing sans
|
|
161
|
+
NumPy, puis exécute tous les tests Python et les cinq exemples.
|
|
162
|
+
`--no-isolation` réutilise les dépendances de construction déjà installées.
|
|
163
|
+
|
|
164
|
+
## Exemples et OpenMP
|
|
165
|
+
|
|
166
|
+
~~~bash
|
|
167
|
+
python examples/demo.py
|
|
168
|
+
python examples/composition_demo.py
|
|
169
|
+
python examples/models_demo.py
|
|
170
|
+
python examples/structured_demo.py
|
|
171
|
+
python examples/exercise_demo.py
|
|
172
|
+
python tools/memory_check.py
|
|
173
|
+
~~~
|
|
174
|
+
|
|
175
|
+
OpenMP est désactivé par défaut. Pour l'activer :
|
|
176
|
+
|
|
177
|
+
~~~bash
|
|
178
|
+
python -m pip install . -Ccmake.define.DERIWEAVE_ENABLE_OPENMP=ON
|
|
179
|
+
~~~
|
|
180
|
+
|
|
181
|
+
Utiliser ensuite SimulationSettings(use_openmp=True, num_threads=4).
|
|
182
|
+
dw.build_info() indique les capacités réelles du binaire.
|
|
183
|
+
Le runtime du compilateur est requis : vcomp140.dll sous MSVC, libgomp avec GCC.
|
|
184
|
+
La wheel séquentielle évite cette dépendance.
|
|
185
|
+
|
|
186
|
+
Les fonctions historiques european, asian et basket restent disponibles.
|
|
187
|
+
Base : [DeriWeave 0.1.0](https://github.com/AmineFendi94/DeriWeave),
|
|
188
|
+
commit 8e54378b0800c936e22c2abca0afaca751c73888, avec les corrections de portabilité
|
|
189
|
+
documentées dans l'audit. Licence MIT ; Eigen conserve ses licences.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""Compare repeated native engine runs with end-to-end Python price calls."""
|
|
2
|
+
import argparse
|
|
3
|
+
import json
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
import platform
|
|
6
|
+
from statistics import median
|
|
7
|
+
import subprocess
|
|
8
|
+
import sys
|
|
9
|
+
from time import perf_counter
|
|
10
|
+
sys.path.insert(0,str(Path(__file__).resolve().parents[1]/"tests"))
|
|
11
|
+
from reference_cases import case
|
|
12
|
+
import deriweave_py as dw
|
|
13
|
+
|
|
14
|
+
parser=argparse.ArgumentParser()
|
|
15
|
+
parser.add_argument("--native",type=Path,required=True)
|
|
16
|
+
parser.add_argument("--observations",type=int,default=30000)
|
|
17
|
+
parser.add_argument("--repetitions",type=int,default=7)
|
|
18
|
+
parser.add_argument("--output",type=Path)
|
|
19
|
+
args=parser.parse_args()
|
|
20
|
+
rows=[]
|
|
21
|
+
for dynamics,contract in [("bs","european"),("bs","nested"),("heston","european"),("vg","autocall")]:
|
|
22
|
+
p,kwargs=case(dynamics,contract,args.observations)
|
|
23
|
+
dw.price(p,**kwargs)
|
|
24
|
+
durations=[]
|
|
25
|
+
for _ in range(args.repetitions):
|
|
26
|
+
start=perf_counter()
|
|
27
|
+
result=dw.price(p,**kwargs)
|
|
28
|
+
durations.append(perf_counter()-start)
|
|
29
|
+
native=json.loads(subprocess.check_output([
|
|
30
|
+
str(args.native.resolve()),dynamics,contract,str(args.observations),str(args.repetitions)],text=True))
|
|
31
|
+
if abs(result.price-native["price"])>2e-10:
|
|
32
|
+
raise RuntimeError("Native/Python price mismatch")
|
|
33
|
+
baseline=median(native["native_seconds"])
|
|
34
|
+
elapsed=median(durations)
|
|
35
|
+
rows.append(dict(model=dynamics,contract=contract,observations=args.observations,
|
|
36
|
+
repetitions=args.repetitions,native_seconds=baseline,python_seconds=elapsed,
|
|
37
|
+
ratio=elapsed/baseline,extra_microseconds=(elapsed-baseline)*1e6))
|
|
38
|
+
report=dict(platform=platform.platform(),python=platform.python_version(),
|
|
39
|
+
build=dw.build_info(),rows=rows,
|
|
40
|
+
scope="Python includes description conversion and native construction; native reuses prebuilt objects. Timings exclude process startup.")
|
|
41
|
+
text=json.dumps(report,indent=2)
|
|
42
|
+
print(text)
|
|
43
|
+
if args.output:
|
|
44
|
+
args.output.parent.mkdir(parents=True,exist_ok=True)
|
|
45
|
+
args.output.write_text(text+"\n",encoding="utf8")
|