quantark 0.2.5__tar.gz → 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.
- quantark-0.3.0/CHANGELOG.md +201 -0
- {quantark-0.2.5 → quantark-0.3.0}/PKG-INFO +3 -1
- quantark-0.3.0/docs/execution/README.md +82 -0
- quantark-0.3.0/example/mo_volmodels/README.md +104 -0
- {quantark-0.2.5 → quantark-0.3.0}/pyproject.toml +2 -2
- {quantark-0.2.5 → quantark-0.3.0}/quantark/__init__.py +1 -1
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/__init__.py +54 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/accumulator_analytical_engine.py +0 -2
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/black_scholes_engine.py +0 -2
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/deltaone_engine.py +12 -1
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/digital_option_engine.py +0 -2
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/double_barrier_option_engine.py +0 -2
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/double_sharkfin_option_analytical_engine.py +0 -2
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/range_accrual_analytical_engine.py +0 -2
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/single_sharkfin_option_analytical_engine.py +0 -2
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/base_engine.py +13 -0
- quantark-0.3.0/quantark/asset/equity/engine/capabilities.py +178 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/event_stats.py +34 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/__init__.py +45 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/accumulator_mc_engine.py +28 -4
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/american_option_mc_engine.py +33 -10
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/asian_option_mc_engine.py +32 -9
- quantark-0.3.0/quantark/asset/equity/engine/mc/autocallable_dask_batch.py +137 -0
- quantark-0.3.0/quantark/asset/equity/engine/mc/autocallable_execution_adapters.py +224 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/barrier_option_mc_engine.py +49 -20
- quantark-0.3.0/quantark/asset/equity/engine/mc/barrier_vol_mc_engines.py +189 -0
- quantark-0.3.0/quantark/asset/equity/engine/mc/dcn_execution_adapters.py +824 -0
- quantark-0.3.0/quantark/asset/equity/engine/mc/dcn_mc_engine.py +366 -0
- quantark-0.3.0/quantark/asset/equity/engine/mc/dcn_payoff.py +119 -0
- quantark-0.3.0/quantark/asset/equity/engine/mc/dcn_vol_mc_engines.py +393 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/digital_option_mc_engine.py +24 -12
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/double_sharkfin_option_mc_engine.py +40 -16
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/euro_mc_engine.py +30 -14
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/heston_slv_mc_engine.py +1 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/phoenix_mc_engine.py +172 -131
- quantark-0.3.0/quantark/asset/equity/engine/mc/phoenix_vol_mc_engines.py +768 -0
- quantark-0.3.0/quantark/asset/equity/engine/mc/qmc_draws.py +64 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/range_accrual_mc_engine.py +32 -9
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/sabr_mc_engine.py +7 -1
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/single_sharkfin_option_mc_engine.py +34 -10
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/snowball_mc_engine.py +264 -246
- quantark-0.3.0/quantark/asset/equity/engine/mc/snowball_vol_mc_engines.py +820 -0
- quantark-0.3.0/quantark/asset/equity/engine/mc/term_inputs.py +64 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/__init__.py +28 -0
- quantark-0.3.0/quantark/asset/equity/engine/pde/barrier_vol_pde_solvers.py +189 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/base_pde_solver.py +435 -13
- quantark-0.3.0/quantark/asset/equity/engine/pde/dcn_pde_solver.py +251 -0
- quantark-0.3.0/quantark/asset/equity/engine/pde/dcn_vol_pde_solvers.py +333 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/european_pde_solver.py +5 -5
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/heston_pde_solver.py +5 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/ko_reset_snowball_pde_solver.py +9 -17
- quantark-0.3.0/quantark/asset/equity/engine/pde/pde_execution_adapters.py +469 -0
- quantark-0.3.0/quantark/asset/equity/engine/pde/pde_session_prep.py +311 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/phoenix_pde_solver.py +23 -21
- quantark-0.3.0/quantark/asset/equity/engine/pde/phoenix_vol_pde_solvers.py +774 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/snowball_pde_solver.py +177 -83
- quantark-0.3.0/quantark/asset/equity/engine/pde/snowball_vol_pde_solvers.py +634 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/quad/discrete_quad_engine.py +22 -4
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/quad/european_quad_engine.py +23 -9
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/quad/ko_reset_snowball_quad_engine.py +44 -23
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/quad/phoenix_quad_engine.py +32 -13
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/quad/quad_adapters.py +71 -33
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/quad/snowball_quad_engine.py +82 -23
- quantark-0.3.0/quantark/asset/equity/engine/quad/term_inputs.py +36 -0
- quantark-0.3.0/quantark/asset/equity/market/__init__.py +14 -0
- quantark-0.3.0/quantark/asset/equity/market/index_futures_curve.py +145 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/process/bsm/bsm_process.py +2 -2
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/process/bsm/qmc_path_generator.py +47 -19
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/__init__.py +14 -0
- quantark-0.3.0/quantark/asset/equity/product/option/dcn_grid.py +80 -0
- quantark-0.3.0/quantark/asset/equity/product/option/dcn_option.py +150 -0
- quantark-0.3.0/quantark/asset/equity/product/option/dcn_schedule.py +198 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/report/autocallable_risk_report.py +40 -46
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/report/term_structure.py +26 -2
- quantark-0.3.0/quantark/asset/equity/riskmeasures/__init__.py +25 -0
- quantark-0.3.0/quantark/asset/equity/riskmeasures/bucketed_greeks.py +300 -0
- quantark-0.3.0/quantark/asset/equity/riskmeasures/greek_conventions_report.py +166 -0
- quantark-0.3.0/quantark/asset/equity/riskmeasures/greeks_calculator.py +2497 -0
- quantark-0.3.0/quantark/asset/equity/riskmeasures/surface_shock_pipeline.py +291 -0
- quantark-0.3.0/quantark/asset/equity/riskmeasures/surface_shock_scenarios.py +315 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/mc/heston_slv_mc_engine.py +1 -0
- quantark-0.3.0/quantark/asset/fx/engine/pde/fx_pde_execution_adapters.py +164 -0
- quantark-0.3.0/quantark/execution/__init__.py +112 -0
- quantark-0.3.0/quantark/execution/api.py +327 -0
- quantark-0.3.0/quantark/execution/backends/__init__.py +6 -0
- quantark-0.3.0/quantark/execution/backends/admission.py +48 -0
- quantark-0.3.0/quantark/execution/backends/dask_backend.py +203 -0
- quantark-0.3.0/quantark/execution/backends/processes.py +128 -0
- quantark-0.3.0/quantark/execution/backends/serial.py +26 -0
- quantark-0.3.0/quantark/execution/backends/threads.py +85 -0
- quantark-0.3.0/quantark/execution/cache/__init__.py +1 -0
- quantark-0.3.0/quantark/execution/cache/artifacts.py +219 -0
- quantark-0.3.0/quantark/execution/cache/draws.py +147 -0
- quantark-0.3.0/quantark/execution/cache/fingerprint.py +73 -0
- quantark-0.3.0/quantark/execution/capability_matrix.py +150 -0
- quantark-0.3.0/quantark/execution/context.py +59 -0
- quantark-0.3.0/quantark/execution/contracts.py +221 -0
- quantark-0.3.0/quantark/execution/diagnostics.py +28 -0
- quantark-0.3.0/quantark/execution/errors.py +41 -0
- quantark-0.3.0/quantark/execution/greeks.py +472 -0
- quantark-0.3.0/quantark/execution/inventory.py +541 -0
- quantark-0.3.0/quantark/execution/kernel.py +231 -0
- quantark-0.3.0/quantark/execution/leases.py +88 -0
- quantark-0.3.0/quantark/execution/legacy_adapter.py +151 -0
- quantark-0.3.0/quantark/execution/manifest.py +50 -0
- quantark-0.3.0/quantark/execution/policy.py +182 -0
- quantark-0.3.0/quantark/execution/prep/__init__.py +10 -0
- quantark-0.3.0/quantark/execution/prep/dupire.py +72 -0
- quantark-0.3.0/quantark/execution/prep/verify.py +57 -0
- quantark-0.3.0/quantark/execution/registry.py +336 -0
- quantark-0.3.0/quantark/execution/scenario/__init__.py +23 -0
- quantark-0.3.0/quantark/execution/scenario/contracts.py +104 -0
- quantark-0.3.0/quantark/execution/scenario/planner.py +304 -0
- quantark-0.3.0/quantark/execution/scenario/registries.py +207 -0
- quantark-0.3.0/quantark/execution/scenario/runner.py +246 -0
- quantark-0.3.0/quantark/execution/scenario/validate.py +159 -0
- quantark-0.3.0/quantark/execution/scenario/worker.py +636 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/montecarlo/__init__.py +10 -1
- {quantark-0.2.5 → quantark-0.3.0}/quantark/montecarlo/qmc_brownian_bridge.py +13 -2
- {quantark-0.2.5 → quantark-0.3.0}/quantark/montecarlo/qmc_rqmc_driver.py +106 -52
- {quantark-0.2.5 → quantark-0.3.0}/quantark/montecarlo/qmc_sobol.py +132 -7
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/__init__.py +5 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/div/__init__.py +2 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/div/dividend_yield.py +62 -14
- quantark-0.3.0/quantark/param/div/forward_carry_curve.py +163 -0
- quantark-0.3.0/quantark/param/extrapolation.py +109 -0
- quantark-0.3.0/quantark/param/node_roles.py +65 -0
- quantark-0.3.0/quantark/param/rrf/key_rate.py +43 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/rrf/rate_curve.py +40 -9
- quantark-0.3.0/quantark/param/term_sampling.py +123 -0
- quantark-0.3.0/quantark/param/vol/marketquotes.py +302 -0
- quantark-0.3.0/quantark/param/vol/sticky.py +56 -0
- quantark-0.3.0/quantark/param/vol/svi/__init__.py +20 -0
- quantark-0.3.0/quantark/param/vol/svi/svi_fit.py +166 -0
- quantark-0.3.0/quantark/param/vol/svi/svi_surface.py +186 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/vol_surface.py +21 -10
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/equity/__init__.py +6 -0
- quantark-0.3.0/quantark/portfolio/equity/futures_buckets.py +81 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/priceenv/__init__.py +4 -0
- quantark-0.3.0/quantark/priceenv/flat_builders.py +54 -0
- quantark-0.3.0/quantark/priceenv/market_context.py +138 -0
- quantark-0.3.0/quantark/priceenv/term_sampling.py +104 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/calendar/business_calendar.py +28 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/enum/__init__.py +8 -1
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/enum/engine_enums.py +3 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/enum/greek_conventions.py +7 -2
- quantark-0.3.0/quantark/util/enum/greeks_enums.py +50 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/marketdata/models.py +2 -2
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/numerical/__init__.py +18 -0
- quantark-0.3.0/quantark/util/numerical/finite_difference.py +98 -0
- quantark-0.3.0/quantark/util/numerical/tridiag.py +64 -0
- quantark-0.3.0/quantark/volmodels/adi_core.py +700 -0
- quantark-0.3.0/quantark/volmodels/barrier.py +153 -0
- quantark-0.3.0/quantark/volmodels/curves.py +10 -0
- quantark-0.3.0/quantark/volmodels/diagnostics.py +162 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/heston/__init__.py +5 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/heston/analytical_kernel.py +122 -22
- quantark-0.3.0/quantark/volmodels/heston/calibration.py +333 -0
- quantark-0.3.0/quantark/volmodels/heston/from_quotes.py +161 -0
- quantark-0.3.0/quantark/volmodels/heston/mc_kernel.py +524 -0
- quantark-0.3.0/quantark/volmodels/heston/pde_kernel.py +274 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/localvol/__init__.py +2 -1
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/localvol/dupire.py +46 -74
- quantark-0.3.0/quantark/volmodels/localvol/mc_kernel.py +229 -0
- quantark-0.3.0/quantark/volmodels/localvol/pde_kernel.py +338 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/localvol/surface.py +11 -1
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/slv/fokkerplanck/calibration.py +3 -4
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/slv/fokkerplanck/config.py +25 -12
- quantark-0.3.0/quantark/volmodels/slv/fokkerplanck/fp_solver.py +205 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/slv/leverage.py +16 -8
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/slv/slv_mc_kernel.py +166 -22
- quantark-0.3.0/quantark/volmodels/slv/slv_pde_kernel.py +231 -0
- quantark-0.2.5/CHANGELOG.md +0 -85
- quantark-0.2.5/quantark/asset/equity/riskmeasures/__init__.py +0 -7
- quantark-0.2.5/quantark/asset/equity/riskmeasures/greeks_calculator.py +0 -1297
- quantark-0.2.5/quantark/util/enum/greeks_enums.py +0 -29
- quantark-0.2.5/quantark/volmodels/curves.py +0 -61
- quantark-0.2.5/quantark/volmodels/heston/calibration.py +0 -162
- quantark-0.2.5/quantark/volmodels/heston/mc_kernel.py +0 -201
- quantark-0.2.5/quantark/volmodels/heston/pde_kernel.py +0 -395
- quantark-0.2.5/quantark/volmodels/localvol/mc_kernel.py +0 -95
- quantark-0.2.5/quantark/volmodels/localvol/pde_kernel.py +0 -153
- quantark-0.2.5/quantark/volmodels/slv/fokkerplanck/fp_solver.py +0 -108
- quantark-0.2.5/quantark/volmodels/slv/slv_pde_kernel.py +0 -281
- {quantark-0.2.5 → quantark-0.3.0}/.gitignore +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/LICENSE +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/NOTICE +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/README.md +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/_compat.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/analytical/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/analytical/black_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/analytical/bond_forward_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/analytical/bond_futures_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/convertible/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/convertible/convertible_bond_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/discount/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/discount/bond_discount_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/discount/frn_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/pde/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/pde/convertible/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/pde/convertible/jump_diffusion_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/pde/convertible/pde_params.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/pde/convertible/tf_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/tree/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/tree/convertible/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/tree/convertible/binomial_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/tree/convertible/tree_params.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/engine/tree/convertible/trinomial_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/product/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/product/base_bond_product.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/product/convertible/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/product/convertible/convertible_bond.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/product/couponbond/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/product/couponbond/fixed_bond.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/product/couponbond/frn.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/product/forward/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/product/forward/base_bond_forward.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/product/forward/bond_forward.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/product/futures/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/product/futures/bond_futures.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/product/option/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/product/option/euro_short_term_bond_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/riskmeasures/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/riskmeasures/bond_greeks_calculator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/schedule/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/bond/schedule/cashflow.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/conventions.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/engine/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/engine/analytical/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/engine/analytical/reduced_form.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/engine/base_credit_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/engine/mc/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/engine/mc/basket_copula.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/engine/schedule.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/product/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/product/base_credit_product.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/product/basket_cds.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/product/cds.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/riskmeasures/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/credit/riskmeasures/credit_greeks_calculator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/analysis/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/analysis/autocallable_path_analyzer.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/american_option_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/asian_option_analytical_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/barrier_analytical_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/heston_analytical_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/one_touch_analytical_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/cashflow/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/cashflow/accrual_calculator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/cashflow/total_return_swap_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/cashflow/trs_cva_exposure.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/cashflow/trs_cva_repricer.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/cashflow/trs_valuation.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/localvol_greeks.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/heston_mc_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/mc/local_vol_mc_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/american_pde_solver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/backward_operator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/barrier_pde_solver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/double_barrier_pde_solver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/double_one_touch_pde_solver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/heston_slv_pde_solver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/local_vol_pde_solver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/one_touch_pde_solver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/spatial_grid.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde/time_grid.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/pde_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/quad/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/quad/quad_core.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/quad/quad_math.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/benchmark_check_american_analytical.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/benchmark_check_american_pde.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/benchmark_check_asian_analytical.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/benchmark_check_barrier_analytical.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/benchmark_check_barrier_pde_solver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/benchmark_check_digital_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/benchmark_check_snowball_pde_solver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/boundary_check_american_analytical.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/boundary_check_american_pde.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/boundary_check_asian_analytical.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/boundary_check_barrier_analytical.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/boundary_check_barrier_pde_solver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/boundary_check_digital_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/boundary_check_snowball_pde_solver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/greeks_check_digital_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/mc_comparison_barrier_pde.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/quick_mc_compare.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/validation/script/validation_stepdown_improved.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/lifecycle/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/lifecycle/autocallable.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/lifecycle/barrier.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/lifecycle/events.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/lifecycle/manager.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/lifecycle/state.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/param/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/param/engine_param_profiles.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/param/engine_params.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/process/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/process/bsm/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/process/bsm/qmc_brownian_bridge.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/process/bsm/qmc_rqmc_driver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/process/bsm/qmc_sobol.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/process/bsm/qmc_variance_reduction.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/process/sabr/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/process/sabr/sabr_process.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/base_equity_product.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/deltaone/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/deltaone/base_deltaone_product.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/deltaone/futures.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/deltaone/spot_instrument.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/accumulator_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/american_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/asian_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/barrier_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/base_equity_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/digital_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/double_barrier_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/double_one_touch_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/double_sharkfin_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/european_vanilla_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/ko_reset_snowball_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/observation_schedule.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/one_touch_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/phoenix_config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/phoenix_helpers.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/phoenix_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/range_accrual_config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/range_accrual_helpers.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/range_accrual_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/single_sharkfin_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/snowball_config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/snowball_helpers.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/option/snowball_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/swap/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/swap/base_swap.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/swap/multi_asset_trs.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/swap/one_asset_trs.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/swap/one_asset_trs_dual_ccy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/swap/trs_event_handler.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/swap/trs_params.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/product/swap/trs_schedule.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/report/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/report/plotting.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/report/snowball_risk_comparison_report.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/report/surfaces.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/riskmeasures/vol_model_risk.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/fx_deltaone_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/fx_digital_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/fx_foreign_range_accrual_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/fx_heston_analytical_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/fx_quanto_digital_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/fx_quanto_range_accrual_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/fx_quanto_vanilla_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/fx_range_accrual_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/garman_kohlhagen_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/vannavolga/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/vannavolga/arbitrage.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/vannavolga/attenuation.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/vannavolga/barrier_bs.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/vannavolga/vv_barrier.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/vannavolga/vv_barrier_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/analytical/vannavolga/vv_vanilla_barrier.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/base_fx_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/localvol_common.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/localvol_greeks.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/mc/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/mc/fx_barrier_mc_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/mc/fx_mc_params.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/mc/fx_range_accrual_mc_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/mc/fx_sharkfin_mc_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/mc/fx_tarf_mc_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/mc/fx_tarn_note_mc_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/mc/heston_mc_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/mc/local_vol_mc_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/pde/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/pde/heston_pde_solver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/pde/heston_slv_pde_solver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/engine/pde/local_vol_pde_solver.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/process/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/process/fx_gk_path_generator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/process/garman_kohlhagen_process.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/base_fx_product.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/currency_pair.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/deltaone/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/deltaone/base_fx_deltaone.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/deltaone/fx_forward.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/deltaone/fx_spot.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/deltaone/fx_swap.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/option/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/option/fx_barrier_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/option/fx_digital_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/option/fx_foreign_range_accrual_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/option/fx_one_touch_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/option/fx_quanto_digital_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/option/fx_quanto_range_accrual_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/option/fx_quanto_vanilla_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/option/fx_range_accrual_config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/option/fx_range_accrual_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/option/fx_sharkfin_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/option/fx_target_redemption_forward.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/option/fx_target_redemption_note.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/product/option/fx_vanilla_option.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/report/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/report/fx_report.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/riskmeasures/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/riskmeasures/fx_greeks_calculator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/fx/riskmeasures/vol_model_risk.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/rate/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/rate/engine/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/rate/engine/cap_floor_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/rate/engine/fra_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/rate/engine/irs_discount_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/rate/engine/swaption_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/rate/product/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/rate/product/cap_floor.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/rate/product/fra.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/rate/product/irs.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/rate/product/swaption.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/asset/vol_model_risk.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/base.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/credit/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/credit/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/credit/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/credit/results.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/dashboard.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/equity/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/equity/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/equity/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/equity/hedge_executor.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/equity/metrics.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/equity/multi_hedge_executor.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/equity/results.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/equity/state.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/examples/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/examples/advanced_backtest.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/examples/basic_delta_hedge.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/examples/fi_dv01_hedge.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/fi/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/fi/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/fi/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/fi/hedge_executor.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/fi/metrics.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/fi/results.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/fi/state.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/fx/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/fx/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/fx/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/fx/results.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/logger.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/otc/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/otc/_replay.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/otc/book_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/otc/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/otc/dashboard.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/otc/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/otc/engine_factory.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/otc/market.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/otc/results.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/otc/state.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/report_generator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/barrier_trigger_strategy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/base_strategy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/convexity_neutral_strategy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/credit_spread_neutral_strategy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/delta_neutral_strategy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/dv01_neutral_strategy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/fx_delta_neutral_strategy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/hedge_instruments.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/hedge_optimizer.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/min_variance_delta_strategy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/multi_greek_strategy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/scenario_hedge_strategy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/scenarios.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/semi_static_strategy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/triggered_hedge_strategy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/strategy/whalley_wilmott_strategy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/transaction_costs.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/backtest/visualizer.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/cashleg/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/cashleg/accrual_leg.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/cashleg/autocallable_leg.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/cashleg/base.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/cashleg/base_amount.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/cashleg/deterministic_leg.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/cashleg/event_distribution.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/cashleg/fixed_payoff_leg.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/cashleg/leg_schedule.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/cashleg/leg_valuator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/base.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/credit/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/credit/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/credit/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/credit/path_library.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/equity/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/fi/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/fi/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/fi/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/fi/results.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/fx/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/fx/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/fx/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/fx/path_library.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/lifecycle_manager.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/path/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/path/day_path.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/path/fi_path_library.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/path/path_builder.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/path/path_library.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/report/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/report/dynamic_report.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/report/visualizer.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/results/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/results/dynamic_results.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/dynamicscenario/results/result_exporter.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/montecarlo/qmc_variance_reduction.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/basis/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/basis/basis_yield.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/credit/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/credit/ajd_hazard_curve.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/credit/hazard_curve.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/index/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/index/rate_index.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/quote/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/quote/spot_quote.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/rrf/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/collapse_guard.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/sabr/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/sabr/calibration.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/sabr/diagnostics.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/sabr/hagan.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/sabr/sabr_surface.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/vannavolga/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/vannavolga/bs_fx.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/vannavolga/market_conventions.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/vannavolga/smile_builder.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/vannavolga/vv_core.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/vannavolga/vv_surface.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/param/vol/vannavolga/vv_term_structure.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/base.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/credit/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/credit/portfolio.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/credit/position.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/equity/portfolio.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/equity/position.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/equity/swap_position.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/fi/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/fi/portfolio.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/fi/position.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/fx/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/fx/portfolio.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/fx/position.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/portfolio_snapshot.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/portfolio/portfolio_storage.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/priceenv/credit_pricing_environment.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/priceenv/fx_pricing_environment.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/priceenv/pricing_environment.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/rfq/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/rfq/builders.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/rfq/models.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/rfq/registry.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/rfq/service.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/calculator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/dashboard.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/engines/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/engines/addons/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/engines/addons/base.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/engines/addons/commodity.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/engines/addons/credit.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/engines/addons/equity.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/engines/addons/fx.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/engines/addons/interest_rate.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/engines/maths.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/engines/pfe.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/engines/replacement_cost.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/models/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/models/enums.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/models/netting_set.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/models/trade.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/parameters/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/parameters/supervisory.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/results/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/saccr/results/result.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/calculator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/cva/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/cva/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/dashboard.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/engines/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/engines/base.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/engines/commodity.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/engines/correlations.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/engines/counterparty_credit.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/engines/equity.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/engines/fx.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/engines/interest_rate.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/engines/reference_credit.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/asof.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/correlation.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/curves.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/grid.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/historical/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/historical/calibration.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/historical/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/historical/path_generator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/historical/pfe.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/historical/resampling.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/paths.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/phoenix_surface.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/repricer.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/simulator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/snowball_surface.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/statemachine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/exposure/value_surface.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/models/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/models/enums.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/models/portfolio.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/models/sensitivity.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/parameters/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/parameters/supervisory.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/portfolio/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/portfolio/counterparty.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/portfolio/credit_curve.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/portfolio/netting.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/portfolio/trade.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/portfolio/trade_portfolio.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/results/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/results/result.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/sacva_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/sensitivities/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/sensitivities/curve_bump.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/sensitivities/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/sacva/sensitivities/shifts.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/calibration/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/calibration/accessors.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/calibration/commodity.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/calibration/credit_non_qualifying.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/calibration/credit_qualifying.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/calibration/cross_risk.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/calibration/equity.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/calibration/fx.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/calibration/ir.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/calibration/version.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/crif/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/crif/models.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/crif/parser.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/dashboard.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/aggregation/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/aggregation/addon.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/aggregation/bucket_aggregator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/aggregation/concentration.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/aggregation/correlations.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/aggregation/product_class_aggregator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/aggregation/risk_class_aggregator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/aggregation/simm_calculator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/aggregation/weighted_sensitivity.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/base.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/classification/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/classification/bucket_mapper.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/factory.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/portfolio_adapter.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/result.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/risk_class/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/risk_class/equity_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/risk_class/ir_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/engines/risk_class/provider_engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/market_data.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/report/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/report/crif_export.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/report/excel_generator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/report/html_generator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/results/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/results/attribution.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/results/simm_result.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/results/whatif.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/sensitivity.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/taxonomy.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/template/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/template/xlsx_loader.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/simm/template/xlsx_template.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/base.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/credit/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/credit/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/credit/credit_stress_applicator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/credit/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/equity/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/equity/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/equity/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/equity/report/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/equity/report/report_generator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/equity/report/visualizer.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/equity/results.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/fi/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/fi/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/fi/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/fi/metrics.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/fi/results.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/fx/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/fx/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/fx/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/fx/fx_stress_applicator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/report/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/report/report_generator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/report/visualizer.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/results/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/results/result_aggregator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/results/result_exporter.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/results/stress_results.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/scenario/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/scenario/scenario.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/scenario/scenario_builder.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/scenario/scenario_library.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/scenario/scenario_storage.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/stress/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/stress/stress_applicator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/stresstest/stress/stress_types.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/barrier_shift.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/calendar/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/calendar/day_counter.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/calendar/holidayfile/china.csv +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/calendar/holidayfile/china_sse.csv +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/enum/bond_enums.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/enum/deltaone_enums.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/enum/fx_enums.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/enum/option_enums.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/exceptions.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/marketdata/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/marketdata/adapter/base_adapter.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/marketdata/adapter/mock_adapter.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/marketdata/converter.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/marketdata/example_usage.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/marketdata/generator/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/marketdata/generator/mock_generator.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/marketdata/storage/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/marketdata/storage/parquet_storage.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/numerical/comparison.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/numerical/constants.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/numerical/formatting.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/numerical/pnl.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/numerical/safe_math.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/util/numerical/validation.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/attribution.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/backtest/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/backtest/var_backtester.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/base.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/credit/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/credit/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/credit/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/credit/revaluation.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/engines/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/engines/historical.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/engines/monte_carlo.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/engines/parametric.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/fx/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/fx/config.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/fx/engine.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/fx/revaluation.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/results/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/results/incremental_var_result.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/results/var_report.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/results/var_result.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/risk_factors/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/risk_factors/base.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/risk_factors/equity_factors.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/var/risk_factors/fi_factors.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/black_scholes.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/heston/params.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/risk/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/risk/contracts.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/risk/scenarios.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/slv/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/slv/fokkerplanck/__init__.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/slv/fokkerplanck/bootstrap.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/slv/fokkerplanck/coordinates.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark/volmodels/slv/fokkerplanck/fp_operators.py +0 -0
- {quantark-0.2.5 → quantark-0.3.0}/quantark_compat.pth +0 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
5
|
+
and the project adheres to [Semantic Versioning](https://semver.org/).
|
|
6
|
+
During 0.x the public API may still change between minor versions.
|
|
7
|
+
|
|
8
|
+
## [0.3.0] - 2026-07-20
|
|
9
|
+
|
|
10
|
+
First release of the `quantark.execution` framework kernel and the
|
|
11
|
+
`quantark.execution.greeks` scenario layer. The `test_snowball_quad_flat_identity_golden`
|
|
12
|
+
failure predates this program and remains quarantined (reproduces on
|
|
13
|
+
unmodified main). The spec §20 controlled-host performance gates in
|
|
14
|
+
`docs/execution/README.md` are documented as release-preparation evidence
|
|
15
|
+
and were not re-measured on the release host.
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- **`quantark.execution.greeks` — greek bumps as scenario cells** (spec
|
|
19
|
+
2026-07-20): `TradeState` per-trade base, same-type `greek-bump/v1`
|
|
20
|
+
transformer with real spot/vol/rate/div/time mutation attribution,
|
|
21
|
+
`greek-value/v1` float runner, and assemblers mirroring
|
|
22
|
+
`EquityPosition.get_trade_risk` / `GreeksCalculator.
|
|
23
|
+
calculate_numerical_greeks` operation-for-operation (bitwise unit gate).
|
|
24
|
+
- **`PricingSession.run_scenario_plans`** — many `(base, specs)` plans
|
|
25
|
+
packed through ONE bounded-window process pool (per-cell worker-spec
|
|
26
|
+
payloads; the portfolio × bumps shape), with a per-plan error boundary
|
|
27
|
+
under `collect_errors=True` (base-resolution/planning failures become
|
|
28
|
+
aligned typed `PricingFailure`s while other plans execute).
|
|
29
|
+
- **`quantark.execution` — composable execution kernel** (framework contract
|
|
30
|
+
v1; spec `docs/superpowers/specs/2026-07-15-mc-pde-performance-generalization-design.md`).
|
|
31
|
+
`PricingSession` wraps every exported MC/PDE engine without changing direct
|
|
32
|
+
legacy behavior: adapter registry, resource budgets/leases, prepared-artifact
|
|
33
|
+
and session draw caches, reproducibility manifests and immutable diagnostics.
|
|
34
|
+
Capabilities: fixed-batch MC backends (serial/threads, bit-identical
|
|
35
|
+
reductions in canonical order), adaptive RQMC session mode (bitwise vs
|
|
36
|
+
direct across the 12 autocallable vol engines), PDE preparation artifacts
|
|
37
|
+
(grids, step coefficients, factorization packs; one-solve PV/event/grid
|
|
38
|
+
outputs across 18 prepared engines + FX LV), typed scenario execution with
|
|
39
|
+
verified mutation footprints, spawn-safe `WorkerSpec` process workers, a
|
|
40
|
+
Dask backend over the same plans, `price_many` grouping, and a
|
|
41
|
+
complete-payload scenario validator. Published artifacts: generated
|
|
42
|
+
[capability matrix](docs/execution/capability-matrix.md) (CI-fresh), policy
|
|
43
|
+
guide, legacy-internals rationale, reproducibility JSON Schemas (validated
|
|
44
|
+
against live payloads), and runnable migration examples. Adoption is
|
|
45
|
+
inventory-driven and honest: `temporary_legacy` rows remain, and no
|
|
46
|
+
universal framework support is claimed until the controlled-host gates pass.
|
|
47
|
+
- **DCN (Digital Coupon Note)**: product + observation-schedule generator,
|
|
48
|
+
curve-aware MC engine with leg decomposition and event stats, two-surface
|
|
49
|
+
PDE engine with MC↔PDE cross-validation gates, LocalVol/Heston/QE/SLV DCN
|
|
50
|
+
MC engines sharing one payoff kernel, MLMC-style coupled timestep-ladder
|
|
51
|
+
Heston pair, SVI/cleaned-quote calibration layers with no-arbitrage and
|
|
52
|
+
repricing-residual reports, node-bump vega buckets and carry-invariant rate
|
|
53
|
+
bumps.
|
|
54
|
+
- **Implied futures carry**: `IndexFuturesCurve` implied q(T), futures-tenor
|
|
55
|
+
delta/rhoq buckets, delta-one futures rhoq, portfolio aggregation and hedge
|
|
56
|
+
integration.
|
|
57
|
+
- **Engine term-structure upgrade**: MC, PDE, and quadrature autocallable
|
|
58
|
+
engines consume full r/q/vol term structures with a cross-family term
|
|
59
|
+
agreement gate.
|
|
60
|
+
- **Vol-model barrier exotics**: LV/Heston/SLV barrier MC pricers on a shared
|
|
61
|
+
monitoring core, LV 1D barrier PDE, Heston/SLV 2D barrier ADI solvers.
|
|
62
|
+
- **Vol-model numerics program (phases 2–5)**: vectorized Lewis Heston
|
|
63
|
+
calibration (~21x), unified Heston/SLV ADI core, opt-in Krylov and TR-BDF2
|
|
64
|
+
Fokker–Planck marches, opt-in QE-M martingale correction, concentrated
|
|
65
|
+
(x,v) grids, degenerate v=0 Feller boundary, LV Rannacher start-up
|
|
66
|
+
(default on), opt-in QMC sampling for Heston/SLV/LV kernels.
|
|
67
|
+
- **PDE event-stats API** on Snowball/Phoenix vol solvers with event
|
|
68
|
+
distributions surfaced through session outputs.
|
|
69
|
+
|
|
70
|
+
### Changed
|
|
71
|
+
- DCN MC engine performance: draw cache, batched threads, LV build hoist.
|
|
72
|
+
- The legacy autocallable Dask batch loop (Snowball vanilla/KO-reset,
|
|
73
|
+
Phoenix) is consolidated into one shared reducer
|
|
74
|
+
(`autocallable_dask_batch`) with byte-preserved behavior, gated by frozen
|
|
75
|
+
bitwise goldens. The legacy `use_dask` route itself is unchanged and
|
|
76
|
+
preserved (see `docs/execution/internals-and-legacy.md` for the §17.3
|
|
77
|
+
removal preconditions).
|
|
78
|
+
- Dev extras now include `dask[distributed]` and `jsonschema`.
|
|
79
|
+
|
|
80
|
+
### Fixed
|
|
81
|
+
- `PhoenixMCEngine` silently disabled its Dask parallel path on modern dask
|
|
82
|
+
(`from dask.compute import compute` no longer resolves); availability now
|
|
83
|
+
matches `SnowballMCEngine`, with a regression test.
|
|
84
|
+
- Processes scenario backend: a parent whose `__main__` cannot be
|
|
85
|
+
re-imported by spawn children (stdin/heredoc scripts record
|
|
86
|
+
`__file__ = '<stdin>'`; deleted script files) now fails closed with a
|
|
87
|
+
typed `CapabilityError` before any worker is spawned, instead of every
|
|
88
|
+
child dying at bootstrap and surfacing as an opaque
|
|
89
|
+
`BrokenProcessPool` with zero completed cells.
|
|
90
|
+
- Craig–Sneyd ADI corrector order restored (base `Y0` + implicit `-rU`),
|
|
91
|
+
QE sampler sign bug, and the 2026-07 PDE/QUAD audit fixes (13 findings)
|
|
92
|
+
are included via the programs above.
|
|
93
|
+
|
|
94
|
+
## [0.2.5] - 2026-07-03
|
|
95
|
+
|
|
96
|
+
### Fixed
|
|
97
|
+
- 2026-07 PDE/QUAD audit: 13 numerical findings fixed (discrete-monitoring
|
|
98
|
+
boundary handling, Rannacher terminal off-by-one, BGK state resolution,
|
|
99
|
+
smoothed KI for Phoenix/KO-reset, shared theta damping schedule) with
|
|
100
|
+
solver-family consolidation and regression tests.
|
|
101
|
+
|
|
102
|
+
## [0.2.4] - 2026-07-02
|
|
103
|
+
|
|
104
|
+
### Added
|
|
105
|
+
- Opt-in BGK continuous-KI mode for Snowball and Phoenix PDE solvers
|
|
106
|
+
(direction-aware shifted barrier, per-product flag).
|
|
107
|
+
- `EquityPosition.get_trade_risk` (product + total, frozen one-loop) and
|
|
108
|
+
`AutocallableCashLeg.time_shift`; event streams selected by leg
|
|
109
|
+
requirements.
|
|
110
|
+
|
|
111
|
+
### Fixed
|
|
112
|
+
- Portfolio vega/rho/dividend-rho aligned with the canonical greek
|
|
113
|
+
convention; bump contexts freeze PDE critical points for grid steadiness.
|
|
114
|
+
|
|
115
|
+
## [0.2.3] - 2026-07-01
|
|
116
|
+
|
|
117
|
+
### Added
|
|
118
|
+
- Cross-engine-consistent `ki_ever` / `ki_survive` event-stat fields.
|
|
119
|
+
|
|
120
|
+
### Fixed
|
|
121
|
+
- Theta advances by business day; quadrature event-stats recursion uses
|
|
122
|
+
smoothed barrier indicators.
|
|
123
|
+
|
|
124
|
+
## [0.2.2] - 2026-07-01
|
|
125
|
+
|
|
126
|
+
### Fixed
|
|
127
|
+
- PDE numerical Greeks: freeze the base spatial domain for finite-difference
|
|
128
|
+
bump repricing so rho and dividend rho measure market sensitivity without
|
|
129
|
+
contamination from auto-grid/domain movement under bumped rate, dividend,
|
|
130
|
+
volatility, or time inputs.
|
|
131
|
+
|
|
132
|
+
## [0.2.1] - 2026-06-30
|
|
133
|
+
|
|
134
|
+
### Fixed
|
|
135
|
+
- `PhoenixPDESolver`: apply a KO observation scheduled exactly at maturity.
|
|
136
|
+
The inherited grid builder stores the maturity KO in `_ko_terminal_record`
|
|
137
|
+
(intentionally kept out of `_ko_observation_indices`), but the Phoenix
|
|
138
|
+
`_solve` override looked the terminal KO up in `_ko_observation_indices`
|
|
139
|
+
and therefore dropped it — mispricing products with a terminal KO date by
|
|
140
|
+
several percent versus the quadrature and Monte Carlo engines. Terminal KO
|
|
141
|
+
is now applied after the terminal coupon/KI jumps (matching
|
|
142
|
+
`SnowballPDESolver._solve`), routed through `_apply_ko_jump_vector` so the
|
|
143
|
+
same-date coupon-at-KO payoff is preserved.
|
|
144
|
+
|
|
145
|
+
## [0.1.2] - 2026-06-13
|
|
146
|
+
|
|
147
|
+
### Added
|
|
148
|
+
- Credit dual-measure framework: a recovery convention layer
|
|
149
|
+
(`quantark.asset.credit.conventions`, `STANDARD_RECOVERY=0.40`) that
|
|
150
|
+
separates the canonical shared-curve **hazard01** factor from the
|
|
151
|
+
recovery-converted **CS01** used by products and SIMM. Curve shocks stay
|
|
152
|
+
in hazard space; spread stresses convert through the recovery convention.
|
|
153
|
+
- Single-name CDS **roll-down / as-of pricing** via effective and maturity
|
|
154
|
+
dates (seasoned and forward-start), with `schedule_asof` and a
|
|
155
|
+
total-return coupon cash ledger threaded through the dynamic-scenario and
|
|
156
|
+
backtest engines. SIMM buckets the remaining tenor. (Basket as-of is
|
|
157
|
+
deferred.)
|
|
158
|
+
|
|
159
|
+
## [0.1.1] - 2026-06-11
|
|
160
|
+
|
|
161
|
+
### Added
|
|
162
|
+
- `SnowballQuadEngine`: explicit `ki_monitoring_mode` on `QuadParams`
|
|
163
|
+
(`KnockInMonitoringMode`). `EXACT_DISCRETE` (default) prices every KI
|
|
164
|
+
observation date exactly with adaptive spatial-grid refinement.
|
|
165
|
+
`BGK_APPROXIMATION` is an opt-in performance mode that replaces a dense
|
|
166
|
+
discrete KI schedule with continuous monitoring at a
|
|
167
|
+
Broadie-Glasserman-Kou shifted barrier; the engine validates approximately
|
|
168
|
+
regular spacing (median-band dispersion test), a constant resolved
|
|
169
|
+
barrier, full-horizon coverage, stable volatility, and a minimum schedule
|
|
170
|
+
density (`bgk_min_ki_observations`), raising `ValidationError` otherwise.
|
|
171
|
+
Converted pricing matches the equivalent shifted-continuous product
|
|
172
|
+
exactly (grid-aligned to the shifted barrier) while the valuation-time KI
|
|
173
|
+
state keeps contractual discrete semantics. A first-order residual bias
|
|
174
|
+
remains (a few bp of PV at daily spacing, growing with observation
|
|
175
|
+
spacing and drift).
|
|
176
|
+
|
|
177
|
+
### Fixed
|
|
178
|
+
- `SnowballQuadEngine`: dense discrete KI schedules now retain their explicit
|
|
179
|
+
observation dates instead of being delegated to continuous monitoring. The
|
|
180
|
+
engine adaptively refines its internal spatial grid to resolve short
|
|
181
|
+
diffusion intervals (accuracy-oriented default of 2.5 cells per interval
|
|
182
|
+
diffusion stddev; lower to 1.25 or opt into BGK for speed), avoiding the
|
|
183
|
+
material fair-KO-rate bias caused by the previous continuous-monitoring
|
|
184
|
+
approximation.
|
|
185
|
+
|
|
186
|
+
## [0.1.0] - 2026-06-11
|
|
187
|
+
|
|
188
|
+
### Added
|
|
189
|
+
- First public release.
|
|
190
|
+
- Equity derivatives: European/American/Asian vanilla options, barrier,
|
|
191
|
+
one-touch, digital, sharkfin, and autocallable products (snowball,
|
|
192
|
+
phoenix, KO-reset snowball, range accrual) with analytical, Monte
|
|
193
|
+
Carlo, PDE, quadrature, and tree engines.
|
|
194
|
+
- Fixed income: fixed bonds, FRNs, bond options, bond forwards/futures,
|
|
195
|
+
convertible bonds, interest rate swaps.
|
|
196
|
+
- Market data layer (`quantark.param`, `quantark.priceenv`), Greeks
|
|
197
|
+
calculators, portfolio VaR (parametric/historical/Monte Carlo),
|
|
198
|
+
ISDA SIMM v2.6, stress testing, multi-day scenario simulation, and a
|
|
199
|
+
hedging backtest framework.
|
|
200
|
+
- Legacy flat-import compatibility shim (`asset`, `util`, …) with
|
|
201
|
+
`DeprecationWarning`; slated for removal in 1.0.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: quantark
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Modular derivatives pricing and risk library: options, autocallables, bonds, VaR, SIMM
|
|
5
5
|
Project-URL: Homepage, https://github.com/deiiiiii93/quantark
|
|
6
6
|
Project-URL: Repository, https://github.com/deiiiiii93/quantark
|
|
@@ -34,6 +34,8 @@ Requires-Dist: pyyaml>=6.0.0
|
|
|
34
34
|
Requires-Dist: scipy>=1.10.0
|
|
35
35
|
Requires-Dist: seaborn>=0.12.0
|
|
36
36
|
Provides-Extra: dev
|
|
37
|
+
Requires-Dist: dask[distributed]>=2024.1.0; extra == 'dev'
|
|
38
|
+
Requires-Dist: jsonschema>=4.0; extra == 'dev'
|
|
37
39
|
Requires-Dist: pytest-xdist>=3.0.0; extra == 'dev'
|
|
38
40
|
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
39
41
|
Description-Content-Type: text/markdown
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# QuantArk execution framework
|
|
2
|
+
|
|
3
|
+
`quantark.execution` is the composable execution kernel for QuantArk's MC and
|
|
4
|
+
PDE engines: one immutable plan per request, explicit resource budgets,
|
|
5
|
+
deterministic reproduction manifests, and session-level batch / adaptive /
|
|
6
|
+
prepared-artifact / scenario execution — while every direct legacy call keeps
|
|
7
|
+
its exact historical behavior (framework contract v1, no deprecations).
|
|
8
|
+
|
|
9
|
+
```python
|
|
10
|
+
from quantark.execution import PricingSession
|
|
11
|
+
|
|
12
|
+
with PricingSession() as session:
|
|
13
|
+
pv = session.price(engine, product, pricing_env) # == engine.price(...)
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Spec of record:
|
|
17
|
+
`docs/superpowers/specs/2026-07-15-mc-pde-performance-generalization-design.md`.
|
|
18
|
+
|
|
19
|
+
## Documents
|
|
20
|
+
|
|
21
|
+
- [Capability matrix](capability-matrix.md) — generated per-engine
|
|
22
|
+
batch/adaptive/prepared adoption states with rationales
|
|
23
|
+
(`python -m quantark.execution.capability_matrix`; CI-enforced freshness).
|
|
24
|
+
- [Policy guide](policy-guide.md) — precedence, environment variables,
|
|
25
|
+
budgets, backend × capability matrix.
|
|
26
|
+
- [Internals and legacy duplicates](internals-and-legacy.md) — what is
|
|
27
|
+
unified, what deliberately remains duplicated and under which removal
|
|
28
|
+
preconditions (spec §17.3).
|
|
29
|
+
- [Reproducibility schemas](schemas/) — JSON Schemas for the WorkerSpec,
|
|
30
|
+
scenario-cell, manifest, and normalized-economics payloads, validated
|
|
31
|
+
against live payloads in CI.
|
|
32
|
+
- Migration examples — `example/execution_session_demo.py` and
|
|
33
|
+
`example/execution_scenarios_demo.py` (runnable; exercised by
|
|
34
|
+
`test/execution/test_examples.py`).
|
|
35
|
+
|
|
36
|
+
## Performance snapshots
|
|
37
|
+
|
|
38
|
+
Dev-machine (Apple Silicon, macOS) measurements from the Phase 6 exit rerun,
|
|
39
|
+
2026-07-18, via `test/execution/benchmark_phase{2,4,5}.py`. These are
|
|
40
|
+
**documentation, not gate passes** — the spec §20 release gates run on the
|
|
41
|
+
controlled host with production-sized workloads (see the pre-tag checklist
|
|
42
|
+
below).
|
|
43
|
+
|
|
44
|
+
- **Fixed-batch MC** (DCN, 2^17 paths, 16 batches, cold draws): session
|
|
45
|
+
threads 2.29x @4 workers (PASS vs the 1.5x dev floor); 2.13x @8 workers —
|
|
46
|
+
host-limited (the direct legacy `num_workers=8` path is no faster on this
|
|
47
|
+
machine; ≥2.5x@8 needs the controlled host). Framework adds no threading
|
|
48
|
+
overhead vs engine-internal threads (worst ratio 1.04). CRN draw reuse
|
|
49
|
+
2.04x (PASS vs 2x). Serial overhead −0.2%.
|
|
50
|
+
- **PDE prepared artifacts** (CRN x10 LV-snowball, 58 ms solves): session
|
|
51
|
+
1.29x vs uncached direct — march-dominated small fixture; the ≥2x gate is
|
|
52
|
+
sized for production grids on the controlled host. Warm-session single
|
|
53
|
+
European dispatch overhead: −9.7% (session faster) at a 0.8 ms solve.
|
|
54
|
+
- **Scenario processes** (9-cell surface-shock menu, 4096 paths, 4 spawn
|
|
55
|
+
workers): median 1.63x vs serial with **194/194 normalized fields
|
|
56
|
+
matching in every rep**; tiny cells put spawn+import fixed costs and the
|
|
57
|
+
heaviest cell on the critical path — the ≥2.5x gate runs on >10s serial
|
|
58
|
+
grids on the controlled host.
|
|
59
|
+
|
|
60
|
+
## Before tagging v0.3.0
|
|
61
|
+
|
|
62
|
+
This phase produces **release-preparation evidence only** — pushing a tag IS
|
|
63
|
+
publishing (`.github/workflows/release.yml` is tag-triggered), so the
|
|
64
|
+
version is pinned at `0.3.0rc1` until every prerequisite below is met
|
|
65
|
+
(Codex code-gate 2026-07-18: a final version must not exist while gates are
|
|
66
|
+
open). Outstanding hard prerequisites before any `v0.3.0` tag:
|
|
67
|
+
|
|
68
|
+
0. **Finalize the version**: flip `0.3.0rc1` → `0.3.0` in `pyproject.toml`
|
|
69
|
+
and `quantark/__init__.py` only after items 1–3 pass.
|
|
70
|
+
|
|
71
|
+
1. **Controlled-host performance gates** (spec §20): ≥2x fixed-batch MC at 4
|
|
72
|
+
workers on >10s serial workloads, ≥2x PDE CRN-sweep production gate, and
|
|
73
|
+
≥2.5x scenario/process gate — measured on the controlled multi-core host,
|
|
74
|
+
not this dev machine (dev snapshots below are documentation, not gate
|
|
75
|
+
passes).
|
|
76
|
+
2. **Full-suite green**: resolve or explicitly quarantine (with written
|
|
77
|
+
rationale) the pre-existing
|
|
78
|
+
`test_snowball_quad_flat_identity_golden` failure — it predates the
|
|
79
|
+
execution-framework program and reproduces on unmodified main, but a tag
|
|
80
|
+
must not ship a red suite silently.
|
|
81
|
+
3. **Wheel-artifact compatibility**: the otc-price-adapter suite green
|
|
82
|
+
against the installed candidate wheel at the tagged commit.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# MO Options Vol-Model Calibration Suite
|
|
2
|
+
|
|
3
|
+
A hands-on, staged example that calibrates **Dupire Local Volatility**, **Heston**, and
|
|
4
|
+
**Heston Stochastic-Local Volatility (SLV)** to real **CSI 1000 index option (MO / 中证1000股指期权,
|
|
5
|
+
underlying `000852.SH`)** market data pulled via AKShare, and renders the whole study as a
|
|
6
|
+
self-contained HTML lecture.
|
|
7
|
+
|
|
8
|
+
The models are European index options — no early exercise — which is exactly the clean setting
|
|
9
|
+
Dupire / Heston / SLV assume.
|
|
10
|
+
|
|
11
|
+
## The interpreter split (important)
|
|
12
|
+
|
|
13
|
+
Two Python environments are involved and **no single interpreter has both** libraries:
|
|
14
|
+
|
|
15
|
+
| Stage | Interpreter | Why |
|
|
16
|
+
|-------|-------------|-----|
|
|
17
|
+
| `01` fetch | `/opt/anaconda3/bin/python` | has `akshare`, no `quantark` |
|
|
18
|
+
| `02`–`09` | `.venv/bin/python` | has `quantark`, no `akshare` |
|
|
19
|
+
|
|
20
|
+
Stage 01 is the only script that touches the network; it writes a JSON **snapshot** that stages
|
|
21
|
+
02–09 replay **offline**. A committed synthetic `mo_snapshot_sample.json` (arbitrage-free by
|
|
22
|
+
construction) drives the automated tests and lets 02–09 run with no network at all.
|
|
23
|
+
|
|
24
|
+
## Running it
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# 1) live fetch — AKShare interpreter (optional; the sample snapshot works offline)
|
|
28
|
+
/opt/anaconda3/bin/python example/mo_volmodels/01_fetch_mo_snapshot.py
|
|
29
|
+
|
|
30
|
+
# 2-9) replay the snapshot — quantark .venv
|
|
31
|
+
.venv/bin/python example/mo_volmodels/02_build_iv_surface.py --snapshot latest
|
|
32
|
+
.venv/bin/python example/mo_volmodels/03_dupire_localvol.py --tag latest --vol-floor 0.05
|
|
33
|
+
.venv/bin/python example/mo_volmodels/04_heston_calibration.py --tag latest
|
|
34
|
+
.venv/bin/python example/mo_volmodels/05_slv_calibration.py --tag latest --vol-floor 0.05
|
|
35
|
+
.venv/bin/python example/mo_volmodels/07_barrier_exotic.py --tag latest --vol-floor 0.05
|
|
36
|
+
.venv/bin/python example/mo_volmodels/08_snowball_exotic.py --tag latest --vol-floor 0.05
|
|
37
|
+
.venv/bin/python example/mo_volmodels/09_delta_hedging.py --tag latest --vol-floor 0.05
|
|
38
|
+
.venv/bin/python example/mo_volmodels/06_lecture.py --tag latest
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Open the result: **`data/mo_volmodels_lecture_latest.html`**.
|
|
42
|
+
|
|
43
|
+
Every artifact is keyed by a `--tag` (`latest` for live data, `sample` for the deterministic
|
|
44
|
+
fixture) so the test pipeline and the live pipeline never clobber each other's files.
|
|
45
|
+
|
|
46
|
+
## Stages
|
|
47
|
+
|
|
48
|
+
| Script | Does |
|
|
49
|
+
|--------|------|
|
|
50
|
+
| `01_fetch_mo_snapshot.py` | AKShare MO chain + CSI 1000 spot → `data/mo_snapshot_*.json` |
|
|
51
|
+
| `02_build_iv_surface.py` | **put-call parity** → r(T)/forward/carry; **OTM filter**; call-equivalent Black-IV inversion → `GridVolSurface` |
|
|
52
|
+
| `03_dupire_localvol.py` | Dupire σ_LV(K,T); reprice via local-vol PDE; RMSE + surface plot |
|
|
53
|
+
| `04_heston_calibration.py`| calibrate (v0,κ,θ,σ,ρ); Feller check; smile-fit plot + RMSE |
|
|
54
|
+
| `05_slv_calibration.py` | Fokker-Planck leverage surface L(S,t); reprice via SLV PDE + plot |
|
|
55
|
+
| `07_barrier_exotic.py` | up-and-out call priced **MC and PDE** under BSM/LV/Heston/SLV → model-divergence table + bar chart |
|
|
56
|
+
| `08_snowball_exotic.py` | 2Y principal-excluded standard Snowball priced **MC and PDE** under BSM/LV/Heston QE/SLV plus standalone SLV QE MC → autocallable model-divergence table + bar chart |
|
|
57
|
+
| `09_delta_hedging.py` | ATM European call delta-neutral hedge demo under BSM flat vol/LV/Heston/SLV → hedge inventory, turnover, residual PnL + chart |
|
|
58
|
+
| `06_lecture.py` | weave everything into the HTML lecture + comparison CSV |
|
|
59
|
+
| `_mo_common.py` | shared helpers (snapshot IO, parity, OTM filter, IV inversion, env build, leverage, plots) |
|
|
60
|
+
|
|
61
|
+
Stage 07 exercises the standalone barrier engines added to `quantark`
|
|
62
|
+
(`quantark/volmodels/barrier.py` + the `*BarrierMCEngine` / `*BarrierPDESolver` classes under
|
|
63
|
+
`quantark/asset/equity/engine/`), which price a single-barrier option under Local Vol, Heston,
|
|
64
|
+
and SLV by both Monte Carlo and 2-D ADI PDE. Run it after stage 05:
|
|
65
|
+
`.venv/bin/python example/mo_volmodels/07_barrier_exotic.py --tag latest --vol-floor 0.05`.
|
|
66
|
+
|
|
67
|
+
Stage 08 exercises the Snowball vol-model engines under the same MO surface with a 2Y,
|
|
68
|
+
principal-excluded standard Snowball. It reports BSM, Local Vol, Heston QE, and SLV with
|
|
69
|
+
MC/PDE cross-checks where available, plus the standalone SLV QE MC engine for the
|
|
70
|
+
QE-specific stochastic-local-vol path scheme:
|
|
71
|
+
`.venv/bin/python example/mo_volmodels/08_snowball_exotic.py --tag latest --vol-floor 0.05`.
|
|
72
|
+
|
|
73
|
+
Stage 09 isolates hedging behavior. It adds a BSM flat-vol baseline, then holds the
|
|
74
|
+
calibrated LV surface, Heston parameters, and SLV leverage surface fixed while walking
|
|
75
|
+
the same deterministic spot path for an ATM European call and rebalancing to delta
|
|
76
|
+
neutral under each model:
|
|
77
|
+
`.venv/bin/python example/mo_volmodels/09_delta_hedging.py --tag latest --vol-floor 0.05`.
|
|
78
|
+
|
|
79
|
+
## What the real data teaches
|
|
80
|
+
|
|
81
|
+
- **Negative basis.** The MO forward sits well below spot and falls with maturity; the parity
|
|
82
|
+
regression recovers a large implied carry `q` (10–20%) — not dividends, but the CSI 1000 futures
|
|
83
|
+
discount driven by structured-product hedging flows.
|
|
84
|
+
- **Raw quotes are not arbitrage-free.** Building Dupire directly hits butterfly-arbitrage
|
|
85
|
+
rejections at the wings/short end. The exact path *stops* (no fabricated local vol); the pipeline
|
|
86
|
+
opts into a small `--vol-floor`. A desk would arbitrage-free the smile (SVI/SABR) first.
|
|
87
|
+
- **Parameter identification.** The Heston smile only weakly pins κ vs σ with few maturities — we
|
|
88
|
+
regularize (cap κ, Feller penalty) rather than overfit.
|
|
89
|
+
- **Objective ↔ numerics coupling.** An unconstrained Heston is deeply Feller-violated, and that
|
|
90
|
+
same extreme σ makes the ADI PDE mis-price by ~2 vol-pts. A Feller-aware calibration keeps both
|
|
91
|
+
the fit and the PDE trustworthy.
|
|
92
|
+
- **Which model for which product.** SLV does *not* out-reprice vanillas vs analytic Heston (the SLV
|
|
93
|
+
PDE has an inherent discretization bias). SLV's value is smile-consistent *dynamics* for **exotics**
|
|
94
|
+
(barriers, autocallables, forward-vol); the leverage surface is the reusable deliverable.
|
|
95
|
+
|
|
96
|
+
## Tests
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
.venv/bin/python -m pytest test/mo_volmodels/ -v
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
All tests run on the deterministic `sample` snapshot (offline). See
|
|
103
|
+
`docs/superpowers/specs/2026-07-06-mo-volmodels-calibration-suite-design.md` and the matching
|
|
104
|
+
plan for the design rationale, and `quantark/volmodels/` for the model kernels.
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "quantark"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.3.0"
|
|
8
8
|
description = "Modular derivatives pricing and risk library: options, autocallables, bonds, VaR, SIMM"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -42,7 +42,7 @@ dependencies = [
|
|
|
42
42
|
]
|
|
43
43
|
|
|
44
44
|
[project.optional-dependencies]
|
|
45
|
-
dev = ["pytest>=7.0.0", "pytest-xdist>=3.0.0"]
|
|
45
|
+
dev = ["pytest>=7.0.0", "pytest-xdist>=3.0.0", "dask[distributed]>=2024.1.0", "jsonschema>=4.0"]
|
|
46
46
|
|
|
47
47
|
[project.urls]
|
|
48
48
|
Homepage = "https://github.com/deiiiiii93/quantark"
|
|
@@ -3,6 +3,12 @@ Pricing engines for equity derivatives.
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
from .base_engine import BaseEngine
|
|
6
|
+
from .capabilities import (
|
|
7
|
+
EngineCapability,
|
|
8
|
+
VolDynamicsType,
|
|
9
|
+
get_engine_capability,
|
|
10
|
+
validate_engine_capability,
|
|
11
|
+
)
|
|
6
12
|
from .analytical import (
|
|
7
13
|
BlackScholesEngine,
|
|
8
14
|
BarrierAnalyticalEngine,
|
|
@@ -15,6 +21,12 @@ from .pde_engine import PDEEngine
|
|
|
15
21
|
from .mc import (
|
|
16
22
|
EuropeanMCEngine,
|
|
17
23
|
AmericanOptionMCEngine,
|
|
24
|
+
DCNMCEngine,
|
|
25
|
+
LocalVolDCNMCEngine,
|
|
26
|
+
CoupledCoarseHestonDCNMCEngine,
|
|
27
|
+
HestonDCNMCEngine,
|
|
28
|
+
QEDCNMCEngine,
|
|
29
|
+
coupled_heston_ladder_pair,
|
|
18
30
|
SnowballMCEngine,
|
|
19
31
|
PhoenixMCEngine,
|
|
20
32
|
DigitalOptionMCEngine,
|
|
@@ -23,6 +35,16 @@ from .mc import (
|
|
|
23
35
|
LocalVolMCEngine,
|
|
24
36
|
HestonMCEngine,
|
|
25
37
|
HestonSLVMCEngine,
|
|
38
|
+
LocalVolSnowballMCEngine,
|
|
39
|
+
HestonSnowballMCEngine,
|
|
40
|
+
QESnowballMCEngine,
|
|
41
|
+
HestonSLVSnowballMCEngine,
|
|
42
|
+
HestonSLVQESnowballMCEngine,
|
|
43
|
+
LocalVolPhoenixMCEngine,
|
|
44
|
+
HestonPhoenixMCEngine,
|
|
45
|
+
QEPhoenixMCEngine,
|
|
46
|
+
HestonSLVPhoenixMCEngine,
|
|
47
|
+
HestonSLVQEPhoenixMCEngine,
|
|
26
48
|
)
|
|
27
49
|
from .pde import (
|
|
28
50
|
BasePDESolver,
|
|
@@ -37,6 +59,12 @@ from .pde import (
|
|
|
37
59
|
LocalVolPDESolver,
|
|
38
60
|
HestonPDESolver,
|
|
39
61
|
HestonSLVPDESolver,
|
|
62
|
+
LocalVolSnowballPDESolver,
|
|
63
|
+
HestonSnowballPDESolver,
|
|
64
|
+
HestonSLVSnowballPDESolver,
|
|
65
|
+
LocalVolPhoenixPDESolver,
|
|
66
|
+
HestonPhoenixPDESolver,
|
|
67
|
+
HestonSLVPhoenixPDESolver,
|
|
40
68
|
TimeGrid,
|
|
41
69
|
SpatialGrid,
|
|
42
70
|
)
|
|
@@ -52,6 +80,10 @@ from .quad import (
|
|
|
52
80
|
__all__ = [
|
|
53
81
|
# Base
|
|
54
82
|
"BaseEngine",
|
|
83
|
+
"EngineCapability",
|
|
84
|
+
"VolDynamicsType",
|
|
85
|
+
"get_engine_capability",
|
|
86
|
+
"validate_engine_capability",
|
|
55
87
|
# Analytical
|
|
56
88
|
"BlackScholesEngine",
|
|
57
89
|
"BarrierAnalyticalEngine",
|
|
@@ -62,6 +94,12 @@ __all__ = [
|
|
|
62
94
|
# Monte Carlo
|
|
63
95
|
"EuropeanMCEngine",
|
|
64
96
|
"AmericanOptionMCEngine",
|
|
97
|
+
"DCNMCEngine",
|
|
98
|
+
"LocalVolDCNMCEngine",
|
|
99
|
+
"CoupledCoarseHestonDCNMCEngine",
|
|
100
|
+
"HestonDCNMCEngine",
|
|
101
|
+
"QEDCNMCEngine",
|
|
102
|
+
"coupled_heston_ladder_pair",
|
|
65
103
|
"SnowballMCEngine",
|
|
66
104
|
"PhoenixMCEngine",
|
|
67
105
|
"DigitalOptionMCEngine",
|
|
@@ -70,6 +108,16 @@ __all__ = [
|
|
|
70
108
|
"LocalVolMCEngine",
|
|
71
109
|
"HestonMCEngine",
|
|
72
110
|
"HestonSLVMCEngine",
|
|
111
|
+
"LocalVolSnowballMCEngine",
|
|
112
|
+
"HestonSnowballMCEngine",
|
|
113
|
+
"QESnowballMCEngine",
|
|
114
|
+
"HestonSLVSnowballMCEngine",
|
|
115
|
+
"HestonSLVQESnowballMCEngine",
|
|
116
|
+
"LocalVolPhoenixMCEngine",
|
|
117
|
+
"HestonPhoenixMCEngine",
|
|
118
|
+
"QEPhoenixMCEngine",
|
|
119
|
+
"HestonSLVPhoenixMCEngine",
|
|
120
|
+
"HestonSLVQEPhoenixMCEngine",
|
|
73
121
|
# Unified PDE Engine
|
|
74
122
|
"PDEEngine",
|
|
75
123
|
# PDE Solvers
|
|
@@ -85,6 +133,12 @@ __all__ = [
|
|
|
85
133
|
"LocalVolPDESolver",
|
|
86
134
|
"HestonPDESolver",
|
|
87
135
|
"HestonSLVPDESolver",
|
|
136
|
+
"LocalVolSnowballPDESolver",
|
|
137
|
+
"HestonSnowballPDESolver",
|
|
138
|
+
"HestonSLVSnowballPDESolver",
|
|
139
|
+
"LocalVolPhoenixPDESolver",
|
|
140
|
+
"HestonPhoenixPDESolver",
|
|
141
|
+
"HestonSLVPhoenixPDESolver",
|
|
88
142
|
# Grid utilities
|
|
89
143
|
"TimeGrid",
|
|
90
144
|
"SpatialGrid",
|
|
@@ -354,8 +354,6 @@ class AccumulatorAnalyticalEngine(BaseEngine):
|
|
|
354
354
|
raise ValidationError(
|
|
355
355
|
f"Maturity too long for analytical accumulator pricing: {maturity}"
|
|
356
356
|
)
|
|
357
|
-
if div < 0:
|
|
358
|
-
raise ValidationError(f"Dividend yield must be non-negative, got {div}")
|
|
359
357
|
if abs(rate) > 1.0:
|
|
360
358
|
raise ValidationError(f"Risk-free rate outside reasonable bounds: {rate}")
|
|
361
359
|
|
{quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/black_scholes_engine.py
RENAMED
|
@@ -154,8 +154,6 @@ class BlackScholesEngine(BaseEngine):
|
|
|
154
154
|
raise ValidationError(
|
|
155
155
|
f"Volatility too high for numerical stability: {sigma}"
|
|
156
156
|
)
|
|
157
|
-
if q < 0:
|
|
158
|
-
raise ValidationError(f"Dividend yield must be non-negative, got {q}")
|
|
159
157
|
|
|
160
158
|
# Check for extreme parameter combinations
|
|
161
159
|
if abs(r) > 1.0:
|
{quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/deltaone_engine.py
RENAMED
|
@@ -267,6 +267,13 @@ class DeltaOneEngine(BaseEngine):
|
|
|
267
267
|
greeks["vega"] = 0.0
|
|
268
268
|
greeks["theta"] = 0.0 # Market price is fixed
|
|
269
269
|
greeks["rho"] = 0.0 # Market price independent of model rate
|
|
270
|
+
# Dividend rho at the carry implied by the observed mark:
|
|
271
|
+
# q_impl = r - ln(F_mkt/S)/T (basis folded into carry), so
|
|
272
|
+
# dF/dq = -S*T*exp((r - q_impl)*T) = -T*F_mkt. Per 1% q change.
|
|
273
|
+
implied_q = r - math.log(product.market_price / S) / T
|
|
274
|
+
greeks["dividend_rho"] = (
|
|
275
|
+
-S * T * math.exp((r - implied_q) * T) * 0.01
|
|
276
|
+
)
|
|
270
277
|
return greeks
|
|
271
278
|
|
|
272
279
|
# Theoretical Greeks
|
|
@@ -299,7 +306,11 @@ class DeltaOneEngine(BaseEngine):
|
|
|
299
306
|
# Rho: derivative with respect to rate
|
|
300
307
|
# dF/dr = S*T*exp((r-q)*T)
|
|
301
308
|
greeks["rho"] = S * T * math.exp(carry_cost)
|
|
302
|
-
|
|
309
|
+
|
|
310
|
+
# Dividend rho: dF/dq = -S*T*exp((r-q)*T); basis term is q-independent.
|
|
311
|
+
# Per 1% q change; negative for long futures (higher carry lowers F).
|
|
312
|
+
greeks["dividend_rho"] = -S * T * math.exp(carry_cost) * 0.01
|
|
313
|
+
|
|
303
314
|
return greeks
|
|
304
315
|
|
|
305
316
|
def get_forward_price(
|
{quantark-0.2.5 → quantark-0.3.0}/quantark/asset/equity/engine/analytical/digital_option_engine.py
RENAMED
|
@@ -176,8 +176,6 @@ class DigitalOptionAnalyticalEngine(BaseEngine):
|
|
|
176
176
|
raise ValidationError(
|
|
177
177
|
f"Volatility {sigma} outside supported range [{self.MIN_VOL}, {self.MAX_VOL}]"
|
|
178
178
|
)
|
|
179
|
-
if q < 0:
|
|
180
|
-
raise ValidationError(f"Dividend yield must be non-negative, got {q}")
|
|
181
179
|
if abs(r) > 1.0:
|
|
182
180
|
raise ValidationError(f"Risk-free rate outside reasonable bounds: {r}")
|
|
183
181
|
if T > self.MAX_MATURITY:
|
|
@@ -474,8 +474,6 @@ class DoubleBarrierOptionAnalyticalEngine(BaseEngine):
|
|
|
474
474
|
if abs(r) > 1.0:
|
|
475
475
|
raise ValidationError(f"Risk-free rate outside reasonable bounds: {r}")
|
|
476
476
|
|
|
477
|
-
if q < 0:
|
|
478
|
-
raise ValidationError(f"Dividend yield must be non-negative, got {q}")
|
|
479
477
|
|
|
480
478
|
def __repr__(self):
|
|
481
479
|
return "DoubleBarrierOptionAnalyticalEngine()"
|
|
@@ -499,8 +499,6 @@ class DoubleSharkfinOptionAnalyticalEngine(BaseEngine):
|
|
|
499
499
|
raise ValidationError(
|
|
500
500
|
f"Maturity too long for analytical double sharkfin pricing: {maturity}"
|
|
501
501
|
)
|
|
502
|
-
if div < 0:
|
|
503
|
-
raise ValidationError(f"Dividend yield must be non-negative, got {div}")
|
|
504
502
|
if abs(rate) > 1.0:
|
|
505
503
|
raise ValidationError(f"Risk-free rate outside reasonable bounds: {rate}")
|
|
506
504
|
|
|
@@ -272,8 +272,6 @@ class RangeAccrualAnalyticalEngine(BaseEngine):
|
|
|
272
272
|
raise ValidationError(f"Spot price must be positive, got {S}")
|
|
273
273
|
if T < 0:
|
|
274
274
|
raise ValidationError(f"Time to maturity must be non-negative, got {T}")
|
|
275
|
-
if q < 0:
|
|
276
|
-
raise ValidationError(f"Dividend yield must be non-negative, got {q}")
|
|
277
275
|
if abs(r) > 1.0:
|
|
278
276
|
raise ValidationError(
|
|
279
277
|
f"Risk-free rate outside reasonable bounds: {r}"
|
|
@@ -220,8 +220,6 @@ class SingleSharkfinOptionAnalyticalEngine(BaseEngine):
|
|
|
220
220
|
raise ValidationError(
|
|
221
221
|
f"Maturity too long for analytical sharkfin pricing: {maturity}"
|
|
222
222
|
)
|
|
223
|
-
if div < 0:
|
|
224
|
-
raise ValidationError(f"Dividend yield must be non-negative, got {div}")
|
|
225
223
|
if abs(rate) > 1.0:
|
|
226
224
|
raise ValidationError(f"Risk-free rate outside reasonable bounds: {rate}")
|
|
227
225
|
|
|
@@ -64,6 +64,19 @@ class BaseEngine(ABC):
|
|
|
64
64
|
"""
|
|
65
65
|
return self
|
|
66
66
|
|
|
67
|
+
def execute(self, request, context):
|
|
68
|
+
"""Route a framework ``PricingRequest`` through the execution kernel.
|
|
69
|
+
|
|
70
|
+
Non-abstract compatibility entry point (execution-framework spec
|
|
71
|
+
section 5.4). Existing subclasses need no change; the kernel resolves
|
|
72
|
+
a capability adapter for this engine and falls back to the serial
|
|
73
|
+
LegacyPriceAdapter. Direct ``price``/``price_detailed`` calls are
|
|
74
|
+
unaffected.
|
|
75
|
+
"""
|
|
76
|
+
from quantark.execution.kernel import ExecutionKernel
|
|
77
|
+
|
|
78
|
+
return ExecutionKernel.dispatch(self, request, context)
|
|
79
|
+
|
|
67
80
|
def price_with_events(
|
|
68
81
|
self,
|
|
69
82
|
product: BaseEquityProduct,
|