quantark 0.2.4__tar.gz → 0.2.5__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.2.4 → quantark-0.2.5}/PKG-INFO +1 -1
- {quantark-0.2.4 → quantark-0.2.5}/pyproject.toml +1 -1
- {quantark-0.2.4 → quantark-0.2.5}/quantark/__init__.py +1 -1
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/backward_operator.py +4 -1
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/barrier_pde_solver.py +17 -95
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/base_pde_solver.py +194 -37
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/double_barrier_pde_solver.py +108 -63
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/double_one_touch_pde_solver.py +77 -57
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/ko_reset_snowball_pde_solver.py +1 -1
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/one_touch_pde_solver.py +62 -68
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/phoenix_pde_solver.py +20 -28
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/snowball_pde_solver.py +84 -84
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/ko_reset_snowball_quad_engine.py +40 -12
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/phoenix_quad_engine.py +7 -61
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/quad_adapters.py +18 -3
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/quad_core.py +5 -1
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/snowball_quad_engine.py +53 -29
- {quantark-0.2.4 → quantark-0.2.5}/.gitignore +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/CHANGELOG.md +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/LICENSE +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/NOTICE +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/README.md +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/_compat.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/analytical/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/analytical/black_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/analytical/bond_forward_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/analytical/bond_futures_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/convertible/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/convertible/convertible_bond_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/discount/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/discount/bond_discount_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/discount/frn_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/pde/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/pde/convertible/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/pde/convertible/jump_diffusion_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/pde/convertible/pde_params.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/pde/convertible/tf_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/tree/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/tree/convertible/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/tree/convertible/binomial_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/tree/convertible/tree_params.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/tree/convertible/trinomial_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/base_bond_product.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/convertible/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/convertible/convertible_bond.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/couponbond/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/couponbond/fixed_bond.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/couponbond/frn.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/forward/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/forward/base_bond_forward.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/forward/bond_forward.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/futures/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/futures/bond_futures.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/option/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/option/euro_short_term_bond_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/riskmeasures/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/riskmeasures/bond_greeks_calculator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/schedule/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/schedule/cashflow.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/conventions.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/engine/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/engine/analytical/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/engine/analytical/reduced_form.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/engine/base_credit_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/engine/mc/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/engine/mc/basket_copula.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/engine/schedule.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/product/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/product/base_credit_product.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/product/basket_cds.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/product/cds.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/riskmeasures/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/riskmeasures/credit_greeks_calculator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/analysis/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/analysis/autocallable_path_analyzer.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/accumulator_analytical_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/american_option_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/asian_option_analytical_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/barrier_analytical_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/black_scholes_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/deltaone_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/digital_option_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/double_barrier_option_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/double_sharkfin_option_analytical_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/heston_analytical_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/one_touch_analytical_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/range_accrual_analytical_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/single_sharkfin_option_analytical_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/base_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/cashflow/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/cashflow/accrual_calculator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/cashflow/total_return_swap_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/cashflow/trs_cva_exposure.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/cashflow/trs_cva_repricer.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/cashflow/trs_valuation.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/event_stats.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/localvol_greeks.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/accumulator_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/american_option_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/asian_option_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/barrier_option_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/digital_option_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/double_sharkfin_option_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/euro_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/heston_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/heston_slv_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/local_vol_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/phoenix_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/range_accrual_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/sabr_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/single_sharkfin_option_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/snowball_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/american_pde_solver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/european_pde_solver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/heston_pde_solver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/heston_slv_pde_solver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/local_vol_pde_solver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/spatial_grid.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/time_grid.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/discrete_quad_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/european_quad_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/quad_math.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/benchmark_check_american_analytical.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/benchmark_check_american_pde.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/benchmark_check_asian_analytical.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/benchmark_check_barrier_analytical.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/benchmark_check_barrier_pde_solver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/benchmark_check_digital_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/benchmark_check_snowball_pde_solver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/boundary_check_american_analytical.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/boundary_check_american_pde.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/boundary_check_asian_analytical.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/boundary_check_barrier_analytical.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/boundary_check_barrier_pde_solver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/boundary_check_digital_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/boundary_check_snowball_pde_solver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/greeks_check_digital_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/mc_comparison_barrier_pde.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/quick_mc_compare.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/validation_stepdown_improved.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/lifecycle/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/lifecycle/autocallable.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/lifecycle/barrier.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/lifecycle/events.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/lifecycle/manager.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/lifecycle/state.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/param/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/param/engine_param_profiles.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/param/engine_params.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/bsm/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/bsm/bsm_process.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/bsm/qmc_brownian_bridge.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/bsm/qmc_path_generator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/bsm/qmc_rqmc_driver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/bsm/qmc_sobol.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/bsm/qmc_variance_reduction.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/sabr/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/sabr/sabr_process.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/base_equity_product.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/deltaone/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/deltaone/base_deltaone_product.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/deltaone/futures.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/deltaone/spot_instrument.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/accumulator_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/american_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/asian_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/barrier_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/base_equity_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/digital_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/double_barrier_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/double_one_touch_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/double_sharkfin_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/european_vanilla_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/ko_reset_snowball_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/observation_schedule.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/one_touch_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/phoenix_config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/phoenix_helpers.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/phoenix_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/range_accrual_config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/range_accrual_helpers.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/range_accrual_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/single_sharkfin_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/snowball_config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/snowball_helpers.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/snowball_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/base_swap.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/multi_asset_trs.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/one_asset_trs.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/one_asset_trs_dual_ccy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/trs_event_handler.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/trs_params.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/trs_schedule.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/report/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/report/autocallable_risk_report.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/report/plotting.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/report/snowball_risk_comparison_report.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/report/surfaces.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/report/term_structure.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/riskmeasures/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/riskmeasures/greeks_calculator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/riskmeasures/vol_model_risk.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_deltaone_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_digital_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_foreign_range_accrual_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_heston_analytical_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_quanto_digital_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_quanto_range_accrual_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_quanto_vanilla_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_range_accrual_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/garman_kohlhagen_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/vannavolga/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/vannavolga/arbitrage.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/vannavolga/attenuation.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/vannavolga/barrier_bs.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/vannavolga/vv_barrier.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/vannavolga/vv_barrier_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/vannavolga/vv_vanilla_barrier.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/base_fx_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/localvol_common.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/localvol_greeks.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/fx_barrier_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/fx_mc_params.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/fx_range_accrual_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/fx_sharkfin_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/fx_tarf_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/fx_tarn_note_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/heston_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/heston_slv_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/local_vol_mc_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/pde/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/pde/heston_pde_solver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/pde/heston_slv_pde_solver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/pde/local_vol_pde_solver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/process/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/process/fx_gk_path_generator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/process/garman_kohlhagen_process.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/base_fx_product.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/currency_pair.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/deltaone/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/deltaone/base_fx_deltaone.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/deltaone/fx_forward.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/deltaone/fx_spot.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/deltaone/fx_swap.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_barrier_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_digital_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_foreign_range_accrual_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_one_touch_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_quanto_digital_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_quanto_range_accrual_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_quanto_vanilla_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_range_accrual_config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_range_accrual_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_sharkfin_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_target_redemption_forward.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_target_redemption_note.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_vanilla_option.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/report/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/report/fx_report.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/riskmeasures/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/riskmeasures/fx_greeks_calculator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/riskmeasures/vol_model_risk.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/engine/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/engine/cap_floor_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/engine/fra_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/engine/irs_discount_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/engine/swaption_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/product/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/product/cap_floor.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/product/fra.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/product/irs.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/product/swaption.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/vol_model_risk.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/base.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/credit/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/credit/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/credit/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/credit/results.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/dashboard.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/hedge_executor.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/metrics.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/multi_hedge_executor.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/results.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/state.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/examples/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/examples/advanced_backtest.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/examples/basic_delta_hedge.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/examples/fi_dv01_hedge.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fi/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fi/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fi/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fi/hedge_executor.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fi/metrics.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fi/results.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fi/state.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fx/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fx/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fx/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fx/results.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/logger.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/_replay.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/book_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/dashboard.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/engine_factory.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/market.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/results.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/state.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/report_generator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/barrier_trigger_strategy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/base_strategy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/convexity_neutral_strategy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/credit_spread_neutral_strategy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/delta_neutral_strategy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/dv01_neutral_strategy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/fx_delta_neutral_strategy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/hedge_instruments.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/hedge_optimizer.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/min_variance_delta_strategy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/multi_greek_strategy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/scenario_hedge_strategy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/scenarios.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/semi_static_strategy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/triggered_hedge_strategy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/whalley_wilmott_strategy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/transaction_costs.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/visualizer.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/accrual_leg.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/autocallable_leg.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/base.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/base_amount.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/deterministic_leg.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/event_distribution.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/fixed_payoff_leg.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/leg_schedule.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/leg_valuator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/base.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/credit/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/credit/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/credit/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/credit/path_library.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/equity/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fi/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fi/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fi/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fi/results.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fx/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fx/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fx/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fx/path_library.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/lifecycle_manager.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/path/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/path/day_path.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/path/fi_path_library.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/path/path_builder.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/path/path_library.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/report/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/report/dynamic_report.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/report/visualizer.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/results/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/results/dynamic_results.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/results/result_exporter.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/montecarlo/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/montecarlo/qmc_brownian_bridge.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/montecarlo/qmc_rqmc_driver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/montecarlo/qmc_sobol.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/montecarlo/qmc_variance_reduction.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/basis/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/basis/basis_yield.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/credit/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/credit/ajd_hazard_curve.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/credit/hazard_curve.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/div/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/div/dividend_yield.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/index/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/index/rate_index.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/quote/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/quote/spot_quote.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/rrf/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/rrf/rate_curve.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/collapse_guard.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/sabr/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/sabr/calibration.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/sabr/diagnostics.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/sabr/hagan.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/sabr/sabr_surface.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vannavolga/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vannavolga/bs_fx.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vannavolga/market_conventions.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vannavolga/smile_builder.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vannavolga/vv_core.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vannavolga/vv_surface.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vannavolga/vv_term_structure.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vol_surface.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/base.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/credit/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/credit/portfolio.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/credit/position.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/equity/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/equity/portfolio.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/equity/position.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/equity/swap_position.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/fi/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/fi/portfolio.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/fi/position.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/fx/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/fx/portfolio.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/fx/position.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/portfolio_snapshot.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/portfolio_storage.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/priceenv/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/priceenv/credit_pricing_environment.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/priceenv/fx_pricing_environment.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/priceenv/pricing_environment.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/rfq/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/rfq/builders.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/rfq/models.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/rfq/registry.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/rfq/service.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/calculator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/dashboard.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/addons/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/addons/base.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/addons/commodity.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/addons/credit.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/addons/equity.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/addons/fx.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/addons/interest_rate.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/maths.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/pfe.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/replacement_cost.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/models/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/models/enums.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/models/netting_set.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/models/trade.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/parameters/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/parameters/supervisory.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/results/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/results/result.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/calculator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/cva/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/cva/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/dashboard.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/base.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/commodity.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/correlations.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/counterparty_credit.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/equity.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/fx.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/interest_rate.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/reference_credit.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/asof.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/correlation.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/curves.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/grid.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/historical/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/historical/calibration.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/historical/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/historical/path_generator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/historical/pfe.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/historical/resampling.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/paths.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/phoenix_surface.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/repricer.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/simulator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/snowball_surface.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/statemachine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/value_surface.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/models/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/models/enums.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/models/portfolio.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/models/sensitivity.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/parameters/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/parameters/supervisory.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/portfolio/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/portfolio/counterparty.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/portfolio/credit_curve.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/portfolio/netting.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/portfolio/trade.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/portfolio/trade_portfolio.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/results/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/results/result.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/sacva_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/sensitivities/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/sensitivities/curve_bump.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/sensitivities/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/sensitivities/shifts.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/accessors.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/commodity.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/credit_non_qualifying.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/credit_qualifying.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/cross_risk.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/equity.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/fx.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/ir.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/version.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/crif/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/crif/models.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/crif/parser.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/dashboard.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/addon.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/bucket_aggregator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/concentration.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/correlations.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/product_class_aggregator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/risk_class_aggregator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/simm_calculator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/weighted_sensitivity.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/base.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/classification/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/classification/bucket_mapper.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/factory.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/portfolio_adapter.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/result.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/risk_class/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/risk_class/equity_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/risk_class/ir_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/risk_class/provider_engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/market_data.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/report/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/report/crif_export.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/report/excel_generator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/report/html_generator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/results/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/results/attribution.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/results/simm_result.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/results/whatif.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/sensitivity.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/taxonomy.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/template/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/template/xlsx_loader.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/template/xlsx_template.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/base.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/credit/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/credit/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/credit/credit_stress_applicator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/credit/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/equity/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/equity/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/equity/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/equity/report/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/equity/report/report_generator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/equity/report/visualizer.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/equity/results.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fi/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fi/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fi/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fi/metrics.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fi/results.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fx/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fx/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fx/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fx/fx_stress_applicator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/report/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/report/report_generator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/report/visualizer.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/results/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/results/result_aggregator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/results/result_exporter.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/results/stress_results.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/scenario/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/scenario/scenario.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/scenario/scenario_builder.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/scenario/scenario_library.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/scenario/scenario_storage.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/stress/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/stress/stress_applicator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/stress/stress_types.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/barrier_shift.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/calendar/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/calendar/business_calendar.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/calendar/day_counter.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/calendar/holidayfile/china.csv +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/calendar/holidayfile/china_sse.csv +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/bond_enums.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/deltaone_enums.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/engine_enums.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/fx_enums.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/greek_conventions.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/greeks_enums.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/option_enums.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/exceptions.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/adapter/base_adapter.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/adapter/mock_adapter.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/converter.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/example_usage.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/generator/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/generator/mock_generator.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/models.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/storage/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/storage/parquet_storage.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/numerical/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/numerical/comparison.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/numerical/constants.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/numerical/formatting.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/numerical/pnl.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/numerical/safe_math.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/util/numerical/validation.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/attribution.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/backtest/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/backtest/var_backtester.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/base.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/credit/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/credit/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/credit/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/credit/revaluation.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/engines/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/engines/historical.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/engines/monte_carlo.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/engines/parametric.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/fx/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/fx/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/fx/engine.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/fx/revaluation.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/results/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/results/incremental_var_result.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/results/var_report.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/results/var_result.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/risk_factors/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/risk_factors/base.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/risk_factors/equity_factors.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/var/risk_factors/fi_factors.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/black_scholes.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/curves.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/heston/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/heston/analytical_kernel.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/heston/calibration.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/heston/mc_kernel.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/heston/params.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/heston/pde_kernel.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/localvol/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/localvol/dupire.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/localvol/mc_kernel.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/localvol/pde_kernel.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/localvol/surface.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/risk/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/risk/contracts.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/risk/scenarios.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/fokkerplanck/__init__.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/fokkerplanck/bootstrap.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/fokkerplanck/calibration.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/fokkerplanck/config.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/fokkerplanck/coordinates.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/fokkerplanck/fp_operators.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/fokkerplanck/fp_solver.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/leverage.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/slv_mc_kernel.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/slv_pde_kernel.py +0 -0
- {quantark-0.2.4 → quantark-0.2.5}/quantark_compat.pth +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: quantark
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.5
|
|
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
|
|
@@ -129,8 +129,11 @@ class BackwardOperator:
|
|
|
129
129
|
smooth_js.add(sj)
|
|
130
130
|
|
|
131
131
|
for j in range(n_steps):
|
|
132
|
+
# steps_from_end is 1 for the first backward step off the terminal
|
|
133
|
+
# payoff, so `<=` yields exactly `rannacher_steps` implicit-Euler
|
|
134
|
+
# steps at the terminal discontinuity.
|
|
132
135
|
steps_from_end = num_t - 1 - j
|
|
133
|
-
if steps_from_end
|
|
136
|
+
if steps_from_end <= params.rannacher_steps:
|
|
134
137
|
theta[j] = 1.0
|
|
135
138
|
elif j in smooth_js:
|
|
136
139
|
theta[j] = float(params.event_theta)
|
|
@@ -5,18 +5,15 @@ Implements the finite difference method for knock-in and knock-out
|
|
|
5
5
|
barrier options with continuous or discrete monitoring.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from typing import Dict, List
|
|
8
|
+
from typing import Dict, List
|
|
9
9
|
|
|
10
10
|
import numpy as np
|
|
11
11
|
|
|
12
12
|
from quantark.asset.equity.product.base_equity_product import BaseEquityProduct
|
|
13
13
|
from quantark.asset.equity.product.option.barrier_option import BarrierOption
|
|
14
|
-
from quantark.asset.equity.product.option.observation_schedule import ResolvedObservationRecord
|
|
15
|
-
from quantark.asset.equity.param import PDEParams
|
|
16
14
|
from quantark.priceenv import PricingEnvironment
|
|
17
15
|
from quantark.util.enum import ObservationType, ObservationAggregation
|
|
18
16
|
from quantark.util.exceptions import PricingError
|
|
19
|
-
from quantark.util.numerical import is_close, safe_divide
|
|
20
17
|
|
|
21
18
|
from .base_pde_solver import BasePDESolver
|
|
22
19
|
|
|
@@ -41,48 +38,12 @@ class BarrierPDESolver(BasePDESolver):
|
|
|
41
38
|
the barrier at specified observation times.
|
|
42
39
|
"""
|
|
43
40
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
Args:
|
|
49
|
-
params: PDE engine configuration parameters
|
|
50
|
-
"""
|
|
51
|
-
super().__init__(params)
|
|
52
|
-
self._observation_indices: Set[int] = set()
|
|
53
|
-
self._schedule_records: Dict[int, List[ResolvedObservationRecord]] = {}
|
|
54
|
-
self._schedule_aggregation: ObservationAggregation = (
|
|
55
|
-
ObservationAggregation.STOP_FIRST_HIT
|
|
56
|
-
)
|
|
57
|
-
self._total_tau: float = 0.0
|
|
58
|
-
self._terminal_schedule_records: List[ResolvedObservationRecord] = []
|
|
59
|
-
self._has_terminal_observation: bool = False
|
|
41
|
+
# Discrete-monitoring state (_observation_indices, _schedule_records,
|
|
42
|
+
# _terminal_schedule_records, ...) is initialized by BasePDESolver and
|
|
43
|
+
# populated by the shared _setup_observation_indices.
|
|
60
44
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return max(total_tau - tau_remaining, 0.0)
|
|
64
|
-
|
|
65
|
-
@staticmethod
|
|
66
|
-
def _df_between_times(
|
|
67
|
-
pricing_env: PricingEnvironment, start_time: float, end_time: float
|
|
68
|
-
) -> float:
|
|
69
|
-
if end_time <= start_time:
|
|
70
|
-
return 1.0
|
|
71
|
-
df_end = pricing_env.get_discount_factor(end_time)
|
|
72
|
-
df_start = pricing_env.get_discount_factor(start_time)
|
|
73
|
-
return float(safe_divide(df_end, df_start, fallback=0.0))
|
|
74
|
-
|
|
75
|
-
def _cashflow_value_at_time(
|
|
76
|
-
self,
|
|
77
|
-
pricing_env: PricingEnvironment,
|
|
78
|
-
cashflow: float,
|
|
79
|
-
current_time: float,
|
|
80
|
-
settlement_time: Optional[float],
|
|
81
|
-
) -> float:
|
|
82
|
-
if settlement_time is None or settlement_time <= current_time:
|
|
83
|
-
return float(cashflow)
|
|
84
|
-
df = self._df_between_times(pricing_env, current_time, settlement_time)
|
|
85
|
-
return float(cashflow) * df
|
|
45
|
+
# _current_time / _df_between_times / _cashflow_value_at_time are
|
|
46
|
+
# inherited from BasePDESolver.
|
|
86
47
|
|
|
87
48
|
def price(
|
|
88
49
|
self, product: BaseEquityProduct, pricing_env: PricingEnvironment
|
|
@@ -610,56 +571,17 @@ class BarrierPDESolver(BasePDESolver):
|
|
|
610
571
|
result = super()._build_grids(product, pricing_env, spot, sigma, tau, r, q)
|
|
611
572
|
x_vec, s_vec, dx_vec, t_vec, dt_vec = result
|
|
612
573
|
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
pricing_env=pricing_env,
|
|
625
|
-
default_barrier=product.barrier,
|
|
626
|
-
default_payoff=product.rebate,
|
|
627
|
-
require_single=True,
|
|
628
|
-
)
|
|
629
|
-
self._schedule_aggregation = schedule.aggregation_mode
|
|
630
|
-
if self._schedule_aggregation in (
|
|
631
|
-
ObservationAggregation.BEST,
|
|
632
|
-
ObservationAggregation.WORST,
|
|
633
|
-
):
|
|
634
|
-
raise PricingError(
|
|
635
|
-
f"PDE solver does not support aggregation mode {self._schedule_aggregation.value}"
|
|
636
|
-
)
|
|
637
|
-
for rec in resolved_records:
|
|
638
|
-
if is_close(rec.observation_time, 0.0):
|
|
639
|
-
idx = 0
|
|
640
|
-
self._observation_indices.add(idx)
|
|
641
|
-
self._schedule_records.setdefault(idx, []).append(rec)
|
|
642
|
-
elif is_close(rec.observation_time, tau):
|
|
643
|
-
self._terminal_schedule_records.append(rec)
|
|
644
|
-
self._has_terminal_observation = True
|
|
645
|
-
elif 0.0 < rec.observation_time < tau:
|
|
646
|
-
idx = int(np.argmin(np.abs(t_vec - rec.observation_time)))
|
|
647
|
-
self._observation_indices.add(idx)
|
|
648
|
-
self._schedule_records.setdefault(idx, []).append(rec)
|
|
649
|
-
elif (
|
|
650
|
-
hasattr(product, "observation_type")
|
|
651
|
-
and product.observation_type == ObservationType.DISCRETE
|
|
652
|
-
and hasattr(product, "observation_dates")
|
|
653
|
-
and product.observation_dates is not None
|
|
654
|
-
):
|
|
655
|
-
for obs_time in product.observation_dates:
|
|
656
|
-
if is_close(obs_time, 0.0):
|
|
657
|
-
self._observation_indices.add(0)
|
|
658
|
-
elif is_close(obs_time, tau):
|
|
659
|
-
self._has_terminal_observation = True
|
|
660
|
-
elif 0.0 < obs_time < tau:
|
|
661
|
-
idx = int(np.argmin(np.abs(t_vec - obs_time)))
|
|
662
|
-
self._observation_indices.add(idx)
|
|
574
|
+
self._setup_observation_indices(
|
|
575
|
+
product,
|
|
576
|
+
pricing_env,
|
|
577
|
+
tau,
|
|
578
|
+
t_vec,
|
|
579
|
+
resolve_kwargs={
|
|
580
|
+
"default_barrier": product.barrier,
|
|
581
|
+
"default_payoff": product.rebate,
|
|
582
|
+
"require_single": True,
|
|
583
|
+
},
|
|
584
|
+
)
|
|
663
585
|
|
|
664
586
|
return result
|
|
665
587
|
|
|
@@ -21,12 +21,14 @@ from quantark.asset.equity.product.base_equity_product import BaseEquityProduct
|
|
|
21
21
|
from quantark.asset.equity.param import PDEParams
|
|
22
22
|
from quantark.priceenv import PricingEnvironment
|
|
23
23
|
from quantark.util.exceptions import PricingError, NumericalError
|
|
24
|
-
from quantark.util.numerical import is_close
|
|
24
|
+
from quantark.util.numerical import is_close, safe_divide
|
|
25
25
|
from quantark.util.enum.option_enums import ExerciseType, ObservationType
|
|
26
|
+
from quantark.util.enum import ObservationAggregation
|
|
26
27
|
from quantark.util.enum.engine_enums import EngineType
|
|
27
28
|
|
|
28
29
|
from .time_grid import TimeGrid
|
|
29
30
|
from .spatial_grid import SpatialGrid
|
|
31
|
+
from .backward_operator import BackwardOperator
|
|
30
32
|
|
|
31
33
|
|
|
32
34
|
@dataclass(frozen=True)
|
|
@@ -102,6 +104,127 @@ class BasePDESolver(BaseEngine):
|
|
|
102
104
|
self._critical_points_cache: "OrderedDict[Tuple, Tuple[float, ...]]" = (
|
|
103
105
|
OrderedDict()
|
|
104
106
|
)
|
|
107
|
+
# Discrete-monitoring state shared by the barrier-family solvers
|
|
108
|
+
# (populated by _setup_observation_indices).
|
|
109
|
+
self._observation_indices: set = set()
|
|
110
|
+
self._schedule_records: Dict[int, List] = {}
|
|
111
|
+
self._schedule_aggregation: "ObservationAggregation" = (
|
|
112
|
+
ObservationAggregation.STOP_FIRST_HIT
|
|
113
|
+
)
|
|
114
|
+
self._terminal_schedule_records: List = []
|
|
115
|
+
self._has_terminal_observation: bool = False
|
|
116
|
+
self._total_tau: float = 0.0
|
|
117
|
+
|
|
118
|
+
def _setup_observation_indices(
|
|
119
|
+
self,
|
|
120
|
+
product: BaseEquityProduct,
|
|
121
|
+
pricing_env: PricingEnvironment,
|
|
122
|
+
tau: float,
|
|
123
|
+
t_vec: np.ndarray,
|
|
124
|
+
resolve_kwargs: Optional[Dict] = None,
|
|
125
|
+
) -> None:
|
|
126
|
+
"""
|
|
127
|
+
Resolve a product's discrete observation schedule onto the time grid.
|
|
128
|
+
|
|
129
|
+
Routing convention (shared by all barrier-family solvers):
|
|
130
|
+
- an observation at t=0 maps to time index 0,
|
|
131
|
+
- an observation at t=tau is recorded as a TERMINAL observation
|
|
132
|
+
(``_has_terminal_observation`` / ``_terminal_schedule_records``) and
|
|
133
|
+
must be applied in ``set_terminal_condition`` — NOT silently dropped
|
|
134
|
+
and NOT double-applied as an interior step,
|
|
135
|
+
- interior observations snap to the nearest time-grid node.
|
|
136
|
+
|
|
137
|
+
Args:
|
|
138
|
+
product: Product carrying observation_schedule / observation_dates
|
|
139
|
+
pricing_env: Pricing environment (for schedule resolution)
|
|
140
|
+
tau: Total time to maturity
|
|
141
|
+
t_vec: Time grid nodes
|
|
142
|
+
resolve_kwargs: Product-specific defaults forwarded to
|
|
143
|
+
``ObservationSchedule.resolve`` (e.g. default_barrier /
|
|
144
|
+
default_upper / default_lower / default_payoff)
|
|
145
|
+
"""
|
|
146
|
+
self._total_tau = tau
|
|
147
|
+
self._observation_indices.clear()
|
|
148
|
+
self._schedule_records.clear()
|
|
149
|
+
self._schedule_aggregation = ObservationAggregation.STOP_FIRST_HIT
|
|
150
|
+
self._terminal_schedule_records = []
|
|
151
|
+
self._has_terminal_observation = False
|
|
152
|
+
|
|
153
|
+
schedule = getattr(product, "observation_schedule", None)
|
|
154
|
+
if schedule is not None:
|
|
155
|
+
resolved_records = schedule.resolve(
|
|
156
|
+
pricing_env=pricing_env, **(resolve_kwargs or {})
|
|
157
|
+
)
|
|
158
|
+
self._schedule_aggregation = schedule.aggregation_mode
|
|
159
|
+
if self._schedule_aggregation in (
|
|
160
|
+
ObservationAggregation.BEST,
|
|
161
|
+
ObservationAggregation.WORST,
|
|
162
|
+
):
|
|
163
|
+
raise PricingError(
|
|
164
|
+
f"PDE solver does not support aggregation mode "
|
|
165
|
+
f"{self._schedule_aggregation.value}"
|
|
166
|
+
)
|
|
167
|
+
for rec in resolved_records:
|
|
168
|
+
if is_close(rec.observation_time, 0.0):
|
|
169
|
+
self._observation_indices.add(0)
|
|
170
|
+
self._schedule_records.setdefault(0, []).append(rec)
|
|
171
|
+
elif is_close(rec.observation_time, tau):
|
|
172
|
+
self._terminal_schedule_records.append(rec)
|
|
173
|
+
self._has_terminal_observation = True
|
|
174
|
+
elif 0.0 < rec.observation_time < tau:
|
|
175
|
+
idx = int(np.argmin(np.abs(t_vec - rec.observation_time)))
|
|
176
|
+
self._observation_indices.add(idx)
|
|
177
|
+
self._schedule_records.setdefault(idx, []).append(rec)
|
|
178
|
+
elif (
|
|
179
|
+
getattr(product, "observation_type", None) == ObservationType.DISCRETE
|
|
180
|
+
and getattr(product, "observation_dates", None) is not None
|
|
181
|
+
):
|
|
182
|
+
for obs_time in product.observation_dates:
|
|
183
|
+
if is_close(obs_time, 0.0):
|
|
184
|
+
self._observation_indices.add(0)
|
|
185
|
+
elif is_close(obs_time, tau):
|
|
186
|
+
self._has_terminal_observation = True
|
|
187
|
+
elif 0.0 < obs_time < tau:
|
|
188
|
+
idx = int(np.argmin(np.abs(t_vec - obs_time)))
|
|
189
|
+
self._observation_indices.add(idx)
|
|
190
|
+
|
|
191
|
+
def _resolved_terminal_payoffs(
|
|
192
|
+
self,
|
|
193
|
+
product: BaseEquityProduct,
|
|
194
|
+
pricing_env: PricingEnvironment,
|
|
195
|
+
default_payoff: float,
|
|
196
|
+
) -> List[Tuple]:
|
|
197
|
+
"""
|
|
198
|
+
Terminal observation records paired with settlement-discounted payoffs.
|
|
199
|
+
|
|
200
|
+
Returns ``[(record_or_None, payoff), ...]``: the terminal schedule
|
|
201
|
+
records when the product is discretely monitored and the schedule
|
|
202
|
+
observes at t=T, else a single ``(None, default_payoff)`` entry (the
|
|
203
|
+
product-level default for continuous monitoring or date-list
|
|
204
|
+
schedules). Record payoffs with a settlement_time are discounted back
|
|
205
|
+
to maturity via the forward discount factor.
|
|
206
|
+
"""
|
|
207
|
+
records = (
|
|
208
|
+
self._terminal_schedule_records
|
|
209
|
+
if (
|
|
210
|
+
getattr(product, "observation_type", None)
|
|
211
|
+
== ObservationType.DISCRETE
|
|
212
|
+
and self._terminal_schedule_records
|
|
213
|
+
)
|
|
214
|
+
else [None]
|
|
215
|
+
)
|
|
216
|
+
out = []
|
|
217
|
+
for rec in records:
|
|
218
|
+
payoff = rec.payoff if rec is not None else default_payoff
|
|
219
|
+
if rec is not None and rec.settlement_time is not None:
|
|
220
|
+
payoff = self._cashflow_value_at_time(
|
|
221
|
+
pricing_env=pricing_env,
|
|
222
|
+
cashflow=payoff,
|
|
223
|
+
current_time=self._total_tau,
|
|
224
|
+
settlement_time=rec.settlement_time,
|
|
225
|
+
)
|
|
226
|
+
out.append((rec, payoff))
|
|
227
|
+
return out
|
|
105
228
|
|
|
106
229
|
@classmethod
|
|
107
230
|
def clear_grid_cache(cls) -> None:
|
|
@@ -796,7 +919,7 @@ class BasePDESolver(BaseEngine):
|
|
|
796
919
|
mu = r - q - 0.5 * sigma * sigma
|
|
797
920
|
D = 0.5 * sigma * sigma
|
|
798
921
|
|
|
799
|
-
if (np.max(dx_vec)
|
|
922
|
+
if is_close(float(np.max(dx_vec)), float(np.min(dx_vec))):
|
|
800
923
|
dx = dx_vec[0]
|
|
801
924
|
l = np.full(num_x, D / (dx * dx) - mu / (2.0 * dx))
|
|
802
925
|
c = np.full(num_x, -2.0 * D / (dx * dx) - r)
|
|
@@ -859,31 +982,18 @@ class BasePDESolver(BaseEngine):
|
|
|
859
982
|
I_int = sp.eye(num_x - 2, format="csc")
|
|
860
983
|
self._matrix_cache.clear()
|
|
861
984
|
|
|
862
|
-
# Rannacher
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
idx - 1 - k
|
|
871
|
-
for k in range(params.rannacher_steps)
|
|
872
|
-
if idx - 1 - k >= 0
|
|
873
|
-
]
|
|
874
|
-
)
|
|
985
|
+
# Canonical damping schedule (terminal Rannacher + event smoothing),
|
|
986
|
+
# shared with all other sweeps via BackwardOperator.theta_by_step.
|
|
987
|
+
theta_by_step = BackwardOperator.theta_by_step(
|
|
988
|
+
np.asarray(t_vec),
|
|
989
|
+
np.asarray(dt_vec),
|
|
990
|
+
params,
|
|
991
|
+
self._get_event_times(product, tau),
|
|
992
|
+
)
|
|
875
993
|
|
|
876
994
|
for j in range(num_t - 2, -1, -1):
|
|
877
995
|
dt = dt_vec[j]
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
# Smoothing uses theta=1.0 (Backward Euler)
|
|
881
|
-
theta = (
|
|
882
|
-
1.0
|
|
883
|
-
if params.use_rannacher
|
|
884
|
-
and (steps_from_end < params.rannacher_steps or j in smooth_js)
|
|
885
|
-
else params.theta
|
|
886
|
-
)
|
|
996
|
+
theta = float(theta_by_step[j])
|
|
887
997
|
|
|
888
998
|
M1, M2_lu = self._get_matrices(I_int, A, dt, theta)
|
|
889
999
|
self.set_boundary_conditions(
|
|
@@ -1014,24 +1124,71 @@ class BasePDESolver(BaseEngine):
|
|
|
1014
1124
|
Returns:
|
|
1015
1125
|
Tuple of (delta, gamma)
|
|
1016
1126
|
"""
|
|
1017
|
-
#
|
|
1018
|
-
idx = np.searchsorted(x_vec, x_target)
|
|
1127
|
+
# Snap to the grid node nearest x_target (interior only)
|
|
1128
|
+
idx = int(np.searchsorted(x_vec, x_target))
|
|
1019
1129
|
idx = max(1, min(idx, len(x_vec) - 2))
|
|
1130
|
+
if idx > 1 and abs(x_vec[idx - 1] - x_target) < abs(x_vec[idx] - x_target):
|
|
1131
|
+
idx -= 1
|
|
1132
|
+
|
|
1133
|
+
# Non-uniform three-point stencil (exact for quadratics on ANY local
|
|
1134
|
+
# spacing). The symmetric formulas are only valid when h_m == h_p; on
|
|
1135
|
+
# the adaptive grid the asymmetry error is proportional to gamma.
|
|
1136
|
+
h_m = x_vec[idx] - x_vec[idx - 1]
|
|
1137
|
+
h_p = x_vec[idx + 1] - x_vec[idx]
|
|
1138
|
+
h_sum = h_m + h_p
|
|
1139
|
+
|
|
1140
|
+
v_m, v_0, v_p = v_vec[idx - 1], v_vec[idx], v_vec[idx + 1]
|
|
1141
|
+
dv_dx = (
|
|
1142
|
+
-h_p / (h_m * h_sum) * v_m
|
|
1143
|
+
+ (h_p - h_m) / (h_m * h_p) * v_0
|
|
1144
|
+
+ h_m / (h_p * h_sum) * v_p
|
|
1145
|
+
)
|
|
1146
|
+
d2v_dx2 = 2.0 * (
|
|
1147
|
+
v_m / (h_m * h_sum) - v_0 / (h_m * h_p) + v_p / (h_p * h_sum)
|
|
1148
|
+
)
|
|
1020
1149
|
|
|
1021
|
-
#
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1150
|
+
# Convert to price-space derivatives AT THE NODE where the stencil
|
|
1151
|
+
# was evaluated (identical to `spot` when the spot is a grid node,
|
|
1152
|
+
# which is the default; consistent when x_target falls between nodes).
|
|
1153
|
+
s_node = float(np.exp(x_vec[idx]))
|
|
1154
|
+
delta = dv_dx / s_node
|
|
1155
|
+
gamma = (d2v_dx2 - dv_dx) / (s_node**2)
|
|
1025
1156
|
|
|
1026
|
-
|
|
1027
|
-
dv_dx = (v_vec[idx + 1] - v_vec[idx - 1]) / (dx_left + dx_right)
|
|
1028
|
-
d2v_dx2 = (v_vec[idx + 1] - 2 * v_vec[idx] + v_vec[idx - 1]) / (dx_avg**2)
|
|
1157
|
+
return delta, gamma
|
|
1029
1158
|
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1159
|
+
@staticmethod
|
|
1160
|
+
def _current_time(total_tau: float, tau_remaining: float) -> float:
|
|
1161
|
+
"""Elapsed time (from valuation) at a backward-induction step."""
|
|
1162
|
+
return max(total_tau - tau_remaining, 0.0)
|
|
1033
1163
|
|
|
1034
|
-
|
|
1164
|
+
@staticmethod
|
|
1165
|
+
def _df_between_times(
|
|
1166
|
+
pricing_env: PricingEnvironment, start_time: float, end_time: float
|
|
1167
|
+
) -> float:
|
|
1168
|
+
"""
|
|
1169
|
+
Forward discount factor DF(start_time, end_time), both measured from
|
|
1170
|
+
the valuation date. Term-structure consistent: DF(0,T)/DF(0,t), NOT
|
|
1171
|
+
exp(-r(tau)*tau) with tau = remaining time (they coincide only under
|
|
1172
|
+
a flat curve).
|
|
1173
|
+
"""
|
|
1174
|
+
if end_time <= start_time:
|
|
1175
|
+
return 1.0
|
|
1176
|
+
df_end = pricing_env.get_discount_factor(end_time)
|
|
1177
|
+
df_start = pricing_env.get_discount_factor(start_time)
|
|
1178
|
+
return float(safe_divide(df_end, df_start, fallback=1.0))
|
|
1179
|
+
|
|
1180
|
+
def _cashflow_value_at_time(
|
|
1181
|
+
self,
|
|
1182
|
+
pricing_env: PricingEnvironment,
|
|
1183
|
+
cashflow: float,
|
|
1184
|
+
current_time: float,
|
|
1185
|
+
settlement_time: Optional[float],
|
|
1186
|
+
) -> float:
|
|
1187
|
+
"""Discount a cashflow from its settlement time back to current_time."""
|
|
1188
|
+
if settlement_time is None or settlement_time <= current_time:
|
|
1189
|
+
return float(cashflow)
|
|
1190
|
+
df = self._df_between_times(pricing_env, current_time, settlement_time)
|
|
1191
|
+
return float(cashflow) * df
|
|
1035
1192
|
|
|
1036
1193
|
def _calculate_intrinsic(self, product: BaseEquityProduct, spot: float) -> float:
|
|
1037
1194
|
"""
|