quantark 0.2.3__tar.gz → 0.2.4__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.
Files changed (707) hide show
  1. {quantark-0.2.3 → quantark-0.2.4}/PKG-INFO +1 -1
  2. {quantark-0.2.3 → quantark-0.2.4}/pyproject.toml +1 -1
  3. {quantark-0.2.3 → quantark-0.2.4}/quantark/__init__.py +1 -1
  4. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/base_engine.py +5 -0
  5. quantark-0.2.4/quantark/asset/equity/engine/pde/backward_operator.py +137 -0
  6. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/base_pde_solver.py +97 -17
  7. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/ko_reset_snowball_pde_solver.py +34 -14
  8. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/phoenix_pde_solver.py +13 -2
  9. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/snowball_pde_solver.py +352 -68
  10. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/time_grid.py +76 -0
  11. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/param/engine_params.py +39 -0
  12. {quantark-0.2.3 → quantark-0.2.4}/quantark/cashleg/__init__.py +7 -1
  13. {quantark-0.2.3 → quantark-0.2.4}/quantark/cashleg/accrual_leg.py +8 -1
  14. {quantark-0.2.3 → quantark-0.2.4}/quantark/cashleg/autocallable_leg.py +54 -1
  15. {quantark-0.2.3 → quantark-0.2.4}/quantark/cashleg/base.py +11 -1
  16. {quantark-0.2.3 → quantark-0.2.4}/quantark/cashleg/deterministic_leg.py +5 -0
  17. {quantark-0.2.3 → quantark-0.2.4}/quantark/cashleg/fixed_payoff_leg.py +9 -0
  18. {quantark-0.2.3 → quantark-0.2.4}/quantark/cashleg/leg_valuator.py +14 -0
  19. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/equity/position.py +197 -3
  20. {quantark-0.2.3 → quantark-0.2.4}/.gitignore +0 -0
  21. {quantark-0.2.3 → quantark-0.2.4}/CHANGELOG.md +0 -0
  22. {quantark-0.2.3 → quantark-0.2.4}/LICENSE +0 -0
  23. {quantark-0.2.3 → quantark-0.2.4}/NOTICE +0 -0
  24. {quantark-0.2.3 → quantark-0.2.4}/README.md +0 -0
  25. {quantark-0.2.3 → quantark-0.2.4}/quantark/_compat.py +0 -0
  26. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/__init__.py +0 -0
  27. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/__init__.py +0 -0
  28. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/__init__.py +0 -0
  29. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/analytical/__init__.py +0 -0
  30. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/analytical/black_engine.py +0 -0
  31. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/analytical/bond_forward_engine.py +0 -0
  32. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/analytical/bond_futures_engine.py +0 -0
  33. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/convertible/__init__.py +0 -0
  34. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/convertible/convertible_bond_engine.py +0 -0
  35. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/discount/__init__.py +0 -0
  36. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/discount/bond_discount_engine.py +0 -0
  37. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/discount/frn_engine.py +0 -0
  38. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/pde/__init__.py +0 -0
  39. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/pde/convertible/__init__.py +0 -0
  40. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/pde/convertible/jump_diffusion_engine.py +0 -0
  41. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/pde/convertible/pde_params.py +0 -0
  42. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/pde/convertible/tf_engine.py +0 -0
  43. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/tree/__init__.py +0 -0
  44. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/tree/convertible/__init__.py +0 -0
  45. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/tree/convertible/binomial_engine.py +0 -0
  46. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/tree/convertible/tree_params.py +0 -0
  47. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/engine/tree/convertible/trinomial_engine.py +0 -0
  48. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/product/__init__.py +0 -0
  49. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/product/base_bond_product.py +0 -0
  50. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/product/convertible/__init__.py +0 -0
  51. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/product/convertible/convertible_bond.py +0 -0
  52. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/product/couponbond/__init__.py +0 -0
  53. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/product/couponbond/fixed_bond.py +0 -0
  54. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/product/couponbond/frn.py +0 -0
  55. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/product/forward/__init__.py +0 -0
  56. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/product/forward/base_bond_forward.py +0 -0
  57. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/product/forward/bond_forward.py +0 -0
  58. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/product/futures/__init__.py +0 -0
  59. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/product/futures/bond_futures.py +0 -0
  60. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/product/option/__init__.py +0 -0
  61. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/product/option/euro_short_term_bond_option.py +0 -0
  62. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/riskmeasures/__init__.py +0 -0
  63. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/riskmeasures/bond_greeks_calculator.py +0 -0
  64. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/schedule/__init__.py +0 -0
  65. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/bond/schedule/cashflow.py +0 -0
  66. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/__init__.py +0 -0
  67. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/conventions.py +0 -0
  68. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/engine/__init__.py +0 -0
  69. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/engine/analytical/__init__.py +0 -0
  70. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/engine/analytical/reduced_form.py +0 -0
  71. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/engine/base_credit_engine.py +0 -0
  72. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/engine/mc/__init__.py +0 -0
  73. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/engine/mc/basket_copula.py +0 -0
  74. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/engine/schedule.py +0 -0
  75. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/product/__init__.py +0 -0
  76. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/product/base_credit_product.py +0 -0
  77. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/product/basket_cds.py +0 -0
  78. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/product/cds.py +0 -0
  79. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/riskmeasures/__init__.py +0 -0
  80. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/credit/riskmeasures/credit_greeks_calculator.py +0 -0
  81. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/__init__.py +0 -0
  82. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/analysis/__init__.py +0 -0
  83. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/analysis/autocallable_path_analyzer.py +0 -0
  84. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/__init__.py +0 -0
  85. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/analytical/__init__.py +0 -0
  86. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/analytical/accumulator_analytical_engine.py +0 -0
  87. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/analytical/american_option_engine.py +0 -0
  88. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/analytical/asian_option_analytical_engine.py +0 -0
  89. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/analytical/barrier_analytical_engine.py +0 -0
  90. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/analytical/black_scholes_engine.py +0 -0
  91. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/analytical/deltaone_engine.py +0 -0
  92. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/analytical/digital_option_engine.py +0 -0
  93. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/analytical/double_barrier_option_engine.py +0 -0
  94. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/analytical/double_sharkfin_option_analytical_engine.py +0 -0
  95. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/analytical/heston_analytical_engine.py +0 -0
  96. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/analytical/one_touch_analytical_engine.py +0 -0
  97. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/analytical/range_accrual_analytical_engine.py +0 -0
  98. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/analytical/single_sharkfin_option_analytical_engine.py +0 -0
  99. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/cashflow/__init__.py +0 -0
  100. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/cashflow/accrual_calculator.py +0 -0
  101. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/cashflow/total_return_swap_engine.py +0 -0
  102. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/cashflow/trs_cva_exposure.py +0 -0
  103. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/cashflow/trs_cva_repricer.py +0 -0
  104. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/cashflow/trs_valuation.py +0 -0
  105. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/event_stats.py +0 -0
  106. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/localvol_greeks.py +0 -0
  107. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/__init__.py +0 -0
  108. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/accumulator_mc_engine.py +0 -0
  109. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/american_option_mc_engine.py +0 -0
  110. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/asian_option_mc_engine.py +0 -0
  111. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/barrier_option_mc_engine.py +0 -0
  112. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/digital_option_mc_engine.py +0 -0
  113. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/double_sharkfin_option_mc_engine.py +0 -0
  114. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/euro_mc_engine.py +0 -0
  115. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/heston_mc_engine.py +0 -0
  116. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/heston_slv_mc_engine.py +0 -0
  117. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/local_vol_mc_engine.py +0 -0
  118. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/phoenix_mc_engine.py +0 -0
  119. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/range_accrual_mc_engine.py +0 -0
  120. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/sabr_mc_engine.py +0 -0
  121. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/single_sharkfin_option_mc_engine.py +0 -0
  122. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/mc/snowball_mc_engine.py +0 -0
  123. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/__init__.py +0 -0
  124. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/american_pde_solver.py +0 -0
  125. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/barrier_pde_solver.py +0 -0
  126. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/double_barrier_pde_solver.py +0 -0
  127. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/double_one_touch_pde_solver.py +0 -0
  128. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/european_pde_solver.py +0 -0
  129. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/heston_pde_solver.py +0 -0
  130. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/heston_slv_pde_solver.py +0 -0
  131. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/local_vol_pde_solver.py +0 -0
  132. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/one_touch_pde_solver.py +0 -0
  133. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde/spatial_grid.py +0 -0
  134. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/pde_engine.py +0 -0
  135. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/quad/__init__.py +0 -0
  136. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/quad/discrete_quad_engine.py +0 -0
  137. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/quad/european_quad_engine.py +0 -0
  138. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/quad/ko_reset_snowball_quad_engine.py +0 -0
  139. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/quad/phoenix_quad_engine.py +0 -0
  140. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/quad/quad_adapters.py +0 -0
  141. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/quad/quad_core.py +0 -0
  142. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/quad/quad_math.py +0 -0
  143. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/quad/snowball_quad_engine.py +0 -0
  144. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/benchmark_check_american_analytical.py +0 -0
  145. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/benchmark_check_american_pde.py +0 -0
  146. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/benchmark_check_asian_analytical.py +0 -0
  147. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/benchmark_check_barrier_analytical.py +0 -0
  148. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/benchmark_check_barrier_pde_solver.py +0 -0
  149. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/benchmark_check_digital_option.py +0 -0
  150. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/benchmark_check_snowball_pde_solver.py +0 -0
  151. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/boundary_check_american_analytical.py +0 -0
  152. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/boundary_check_american_pde.py +0 -0
  153. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/boundary_check_asian_analytical.py +0 -0
  154. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/boundary_check_barrier_analytical.py +0 -0
  155. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/boundary_check_barrier_pde_solver.py +0 -0
  156. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/boundary_check_digital_option.py +0 -0
  157. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/boundary_check_snowball_pde_solver.py +0 -0
  158. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/greeks_check_digital_option.py +0 -0
  159. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/mc_comparison_barrier_pde.py +0 -0
  160. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/quick_mc_compare.py +0 -0
  161. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/engine/validation/script/validation_stepdown_improved.py +0 -0
  162. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/lifecycle/__init__.py +0 -0
  163. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/lifecycle/autocallable.py +0 -0
  164. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/lifecycle/barrier.py +0 -0
  165. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/lifecycle/events.py +0 -0
  166. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/lifecycle/manager.py +0 -0
  167. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/lifecycle/state.py +0 -0
  168. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/param/__init__.py +0 -0
  169. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/param/engine_param_profiles.py +0 -0
  170. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/process/__init__.py +0 -0
  171. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/process/bsm/__init__.py +0 -0
  172. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/process/bsm/bsm_process.py +0 -0
  173. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/process/bsm/qmc_brownian_bridge.py +0 -0
  174. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/process/bsm/qmc_path_generator.py +0 -0
  175. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/process/bsm/qmc_rqmc_driver.py +0 -0
  176. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/process/bsm/qmc_sobol.py +0 -0
  177. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/process/bsm/qmc_variance_reduction.py +0 -0
  178. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/process/sabr/__init__.py +0 -0
  179. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/process/sabr/sabr_process.py +0 -0
  180. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/__init__.py +0 -0
  181. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/base_equity_product.py +0 -0
  182. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/deltaone/__init__.py +0 -0
  183. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/deltaone/base_deltaone_product.py +0 -0
  184. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/deltaone/futures.py +0 -0
  185. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/deltaone/spot_instrument.py +0 -0
  186. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/__init__.py +0 -0
  187. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/accumulator_option.py +0 -0
  188. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/american_option.py +0 -0
  189. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/asian_option.py +0 -0
  190. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/barrier_option.py +0 -0
  191. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/base_equity_option.py +0 -0
  192. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/digital_option.py +0 -0
  193. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/double_barrier_option.py +0 -0
  194. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/double_one_touch_option.py +0 -0
  195. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/double_sharkfin_option.py +0 -0
  196. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/european_vanilla_option.py +0 -0
  197. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/ko_reset_snowball_option.py +0 -0
  198. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/observation_schedule.py +0 -0
  199. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/one_touch_option.py +0 -0
  200. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/phoenix_config.py +0 -0
  201. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/phoenix_helpers.py +0 -0
  202. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/phoenix_option.py +0 -0
  203. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/range_accrual_config.py +0 -0
  204. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/range_accrual_helpers.py +0 -0
  205. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/range_accrual_option.py +0 -0
  206. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/single_sharkfin_option.py +0 -0
  207. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/snowball_config.py +0 -0
  208. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/snowball_helpers.py +0 -0
  209. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/option/snowball_option.py +0 -0
  210. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/swap/__init__.py +0 -0
  211. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/swap/base_swap.py +0 -0
  212. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/swap/multi_asset_trs.py +0 -0
  213. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/swap/one_asset_trs.py +0 -0
  214. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/swap/one_asset_trs_dual_ccy.py +0 -0
  215. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/swap/trs_event_handler.py +0 -0
  216. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/swap/trs_params.py +0 -0
  217. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/product/swap/trs_schedule.py +0 -0
  218. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/report/__init__.py +0 -0
  219. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/report/autocallable_risk_report.py +0 -0
  220. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/report/plotting.py +0 -0
  221. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/report/snowball_risk_comparison_report.py +0 -0
  222. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/report/surfaces.py +0 -0
  223. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/report/term_structure.py +0 -0
  224. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/riskmeasures/__init__.py +0 -0
  225. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/riskmeasures/greeks_calculator.py +0 -0
  226. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/equity/riskmeasures/vol_model_risk.py +0 -0
  227. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/__init__.py +0 -0
  228. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/__init__.py +0 -0
  229. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/__init__.py +0 -0
  230. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/fx_deltaone_engine.py +0 -0
  231. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/fx_digital_engine.py +0 -0
  232. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/fx_foreign_range_accrual_engine.py +0 -0
  233. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/fx_heston_analytical_engine.py +0 -0
  234. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/fx_quanto_digital_engine.py +0 -0
  235. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/fx_quanto_range_accrual_engine.py +0 -0
  236. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/fx_quanto_vanilla_engine.py +0 -0
  237. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/fx_range_accrual_engine.py +0 -0
  238. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/garman_kohlhagen_engine.py +0 -0
  239. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/vannavolga/__init__.py +0 -0
  240. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/vannavolga/arbitrage.py +0 -0
  241. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/vannavolga/attenuation.py +0 -0
  242. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/vannavolga/barrier_bs.py +0 -0
  243. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/vannavolga/vv_barrier.py +0 -0
  244. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/vannavolga/vv_barrier_engine.py +0 -0
  245. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/analytical/vannavolga/vv_vanilla_barrier.py +0 -0
  246. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/base_fx_engine.py +0 -0
  247. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/localvol_common.py +0 -0
  248. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/localvol_greeks.py +0 -0
  249. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/mc/__init__.py +0 -0
  250. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/mc/fx_barrier_mc_engine.py +0 -0
  251. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/mc/fx_mc_params.py +0 -0
  252. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/mc/fx_range_accrual_mc_engine.py +0 -0
  253. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/mc/fx_sharkfin_mc_engine.py +0 -0
  254. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/mc/fx_tarf_mc_engine.py +0 -0
  255. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/mc/fx_tarn_note_mc_engine.py +0 -0
  256. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/mc/heston_mc_engine.py +0 -0
  257. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/mc/heston_slv_mc_engine.py +0 -0
  258. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/mc/local_vol_mc_engine.py +0 -0
  259. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/pde/__init__.py +0 -0
  260. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/pde/heston_pde_solver.py +0 -0
  261. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/pde/heston_slv_pde_solver.py +0 -0
  262. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/engine/pde/local_vol_pde_solver.py +0 -0
  263. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/process/__init__.py +0 -0
  264. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/process/fx_gk_path_generator.py +0 -0
  265. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/process/garman_kohlhagen_process.py +0 -0
  266. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/__init__.py +0 -0
  267. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/base_fx_product.py +0 -0
  268. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/currency_pair.py +0 -0
  269. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/deltaone/__init__.py +0 -0
  270. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/deltaone/base_fx_deltaone.py +0 -0
  271. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/deltaone/fx_forward.py +0 -0
  272. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/deltaone/fx_spot.py +0 -0
  273. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/deltaone/fx_swap.py +0 -0
  274. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/option/__init__.py +0 -0
  275. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/option/fx_barrier_option.py +0 -0
  276. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/option/fx_digital_option.py +0 -0
  277. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/option/fx_foreign_range_accrual_option.py +0 -0
  278. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/option/fx_one_touch_option.py +0 -0
  279. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/option/fx_quanto_digital_option.py +0 -0
  280. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/option/fx_quanto_range_accrual_option.py +0 -0
  281. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/option/fx_quanto_vanilla_option.py +0 -0
  282. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/option/fx_range_accrual_config.py +0 -0
  283. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/option/fx_range_accrual_option.py +0 -0
  284. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/option/fx_sharkfin_option.py +0 -0
  285. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/option/fx_target_redemption_forward.py +0 -0
  286. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/option/fx_target_redemption_note.py +0 -0
  287. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/product/option/fx_vanilla_option.py +0 -0
  288. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/report/__init__.py +0 -0
  289. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/report/fx_report.py +0 -0
  290. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/riskmeasures/__init__.py +0 -0
  291. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/riskmeasures/fx_greeks_calculator.py +0 -0
  292. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/fx/riskmeasures/vol_model_risk.py +0 -0
  293. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/rate/__init__.py +0 -0
  294. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/rate/engine/__init__.py +0 -0
  295. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/rate/engine/cap_floor_engine.py +0 -0
  296. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/rate/engine/fra_engine.py +0 -0
  297. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/rate/engine/irs_discount_engine.py +0 -0
  298. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/rate/engine/swaption_engine.py +0 -0
  299. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/rate/product/__init__.py +0 -0
  300. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/rate/product/cap_floor.py +0 -0
  301. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/rate/product/fra.py +0 -0
  302. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/rate/product/irs.py +0 -0
  303. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/rate/product/swaption.py +0 -0
  304. {quantark-0.2.3 → quantark-0.2.4}/quantark/asset/vol_model_risk.py +0 -0
  305. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/__init__.py +0 -0
  306. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/base.py +0 -0
  307. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/credit/__init__.py +0 -0
  308. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/credit/config.py +0 -0
  309. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/credit/engine.py +0 -0
  310. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/credit/results.py +0 -0
  311. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/dashboard.py +0 -0
  312. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/equity/__init__.py +0 -0
  313. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/equity/config.py +0 -0
  314. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/equity/engine.py +0 -0
  315. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/equity/hedge_executor.py +0 -0
  316. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/equity/metrics.py +0 -0
  317. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/equity/multi_hedge_executor.py +0 -0
  318. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/equity/results.py +0 -0
  319. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/equity/state.py +0 -0
  320. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/examples/__init__.py +0 -0
  321. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/examples/advanced_backtest.py +0 -0
  322. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/examples/basic_delta_hedge.py +0 -0
  323. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/examples/fi_dv01_hedge.py +0 -0
  324. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/fi/__init__.py +0 -0
  325. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/fi/config.py +0 -0
  326. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/fi/engine.py +0 -0
  327. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/fi/hedge_executor.py +0 -0
  328. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/fi/metrics.py +0 -0
  329. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/fi/results.py +0 -0
  330. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/fi/state.py +0 -0
  331. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/fx/__init__.py +0 -0
  332. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/fx/config.py +0 -0
  333. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/fx/engine.py +0 -0
  334. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/fx/results.py +0 -0
  335. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/logger.py +0 -0
  336. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/otc/__init__.py +0 -0
  337. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/otc/_replay.py +0 -0
  338. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/otc/book_engine.py +0 -0
  339. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/otc/config.py +0 -0
  340. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/otc/dashboard.py +0 -0
  341. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/otc/engine.py +0 -0
  342. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/otc/engine_factory.py +0 -0
  343. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/otc/market.py +0 -0
  344. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/otc/results.py +0 -0
  345. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/otc/state.py +0 -0
  346. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/report_generator.py +0 -0
  347. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/__init__.py +0 -0
  348. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/barrier_trigger_strategy.py +0 -0
  349. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/base_strategy.py +0 -0
  350. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/convexity_neutral_strategy.py +0 -0
  351. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/credit_spread_neutral_strategy.py +0 -0
  352. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/delta_neutral_strategy.py +0 -0
  353. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/dv01_neutral_strategy.py +0 -0
  354. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/fx_delta_neutral_strategy.py +0 -0
  355. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/hedge_instruments.py +0 -0
  356. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/hedge_optimizer.py +0 -0
  357. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/min_variance_delta_strategy.py +0 -0
  358. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/multi_greek_strategy.py +0 -0
  359. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/scenario_hedge_strategy.py +0 -0
  360. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/scenarios.py +0 -0
  361. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/semi_static_strategy.py +0 -0
  362. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/triggered_hedge_strategy.py +0 -0
  363. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/strategy/whalley_wilmott_strategy.py +0 -0
  364. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/transaction_costs.py +0 -0
  365. {quantark-0.2.3 → quantark-0.2.4}/quantark/backtest/visualizer.py +0 -0
  366. {quantark-0.2.3 → quantark-0.2.4}/quantark/cashleg/base_amount.py +0 -0
  367. {quantark-0.2.3 → quantark-0.2.4}/quantark/cashleg/event_distribution.py +0 -0
  368. {quantark-0.2.3 → quantark-0.2.4}/quantark/cashleg/leg_schedule.py +0 -0
  369. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/__init__.py +0 -0
  370. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/base.py +0 -0
  371. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/config.py +0 -0
  372. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/credit/__init__.py +0 -0
  373. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/credit/config.py +0 -0
  374. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/credit/engine.py +0 -0
  375. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/credit/path_library.py +0 -0
  376. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/engine.py +0 -0
  377. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/equity/__init__.py +0 -0
  378. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/fi/__init__.py +0 -0
  379. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/fi/config.py +0 -0
  380. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/fi/engine.py +0 -0
  381. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/fi/results.py +0 -0
  382. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/fx/__init__.py +0 -0
  383. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/fx/config.py +0 -0
  384. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/fx/engine.py +0 -0
  385. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/fx/path_library.py +0 -0
  386. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/lifecycle_manager.py +0 -0
  387. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/path/__init__.py +0 -0
  388. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/path/day_path.py +0 -0
  389. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/path/fi_path_library.py +0 -0
  390. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/path/path_builder.py +0 -0
  391. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/path/path_library.py +0 -0
  392. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/report/__init__.py +0 -0
  393. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/report/dynamic_report.py +0 -0
  394. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/report/visualizer.py +0 -0
  395. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/results/__init__.py +0 -0
  396. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/results/dynamic_results.py +0 -0
  397. {quantark-0.2.3 → quantark-0.2.4}/quantark/dynamicscenario/results/result_exporter.py +0 -0
  398. {quantark-0.2.3 → quantark-0.2.4}/quantark/montecarlo/__init__.py +0 -0
  399. {quantark-0.2.3 → quantark-0.2.4}/quantark/montecarlo/qmc_brownian_bridge.py +0 -0
  400. {quantark-0.2.3 → quantark-0.2.4}/quantark/montecarlo/qmc_rqmc_driver.py +0 -0
  401. {quantark-0.2.3 → quantark-0.2.4}/quantark/montecarlo/qmc_sobol.py +0 -0
  402. {quantark-0.2.3 → quantark-0.2.4}/quantark/montecarlo/qmc_variance_reduction.py +0 -0
  403. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/__init__.py +0 -0
  404. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/basis/__init__.py +0 -0
  405. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/basis/basis_yield.py +0 -0
  406. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/credit/__init__.py +0 -0
  407. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/credit/ajd_hazard_curve.py +0 -0
  408. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/credit/hazard_curve.py +0 -0
  409. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/div/__init__.py +0 -0
  410. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/div/dividend_yield.py +0 -0
  411. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/index/__init__.py +0 -0
  412. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/index/rate_index.py +0 -0
  413. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/quote/__init__.py +0 -0
  414. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/quote/spot_quote.py +0 -0
  415. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/rrf/__init__.py +0 -0
  416. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/rrf/rate_curve.py +0 -0
  417. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/__init__.py +0 -0
  418. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/collapse_guard.py +0 -0
  419. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/sabr/__init__.py +0 -0
  420. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/sabr/calibration.py +0 -0
  421. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/sabr/diagnostics.py +0 -0
  422. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/sabr/hagan.py +0 -0
  423. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/sabr/sabr_surface.py +0 -0
  424. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/vannavolga/__init__.py +0 -0
  425. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/vannavolga/bs_fx.py +0 -0
  426. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/vannavolga/market_conventions.py +0 -0
  427. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/vannavolga/smile_builder.py +0 -0
  428. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/vannavolga/vv_core.py +0 -0
  429. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/vannavolga/vv_surface.py +0 -0
  430. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/vannavolga/vv_term_structure.py +0 -0
  431. {quantark-0.2.3 → quantark-0.2.4}/quantark/param/vol/vol_surface.py +0 -0
  432. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/__init__.py +0 -0
  433. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/base.py +0 -0
  434. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/credit/__init__.py +0 -0
  435. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/credit/portfolio.py +0 -0
  436. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/credit/position.py +0 -0
  437. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/equity/__init__.py +0 -0
  438. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/equity/portfolio.py +0 -0
  439. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/equity/swap_position.py +0 -0
  440. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/fi/__init__.py +0 -0
  441. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/fi/portfolio.py +0 -0
  442. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/fi/position.py +0 -0
  443. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/fx/__init__.py +0 -0
  444. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/fx/portfolio.py +0 -0
  445. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/fx/position.py +0 -0
  446. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/portfolio_snapshot.py +0 -0
  447. {quantark-0.2.3 → quantark-0.2.4}/quantark/portfolio/portfolio_storage.py +0 -0
  448. {quantark-0.2.3 → quantark-0.2.4}/quantark/priceenv/__init__.py +0 -0
  449. {quantark-0.2.3 → quantark-0.2.4}/quantark/priceenv/credit_pricing_environment.py +0 -0
  450. {quantark-0.2.3 → quantark-0.2.4}/quantark/priceenv/fx_pricing_environment.py +0 -0
  451. {quantark-0.2.3 → quantark-0.2.4}/quantark/priceenv/pricing_environment.py +0 -0
  452. {quantark-0.2.3 → quantark-0.2.4}/quantark/rfq/__init__.py +0 -0
  453. {quantark-0.2.3 → quantark-0.2.4}/quantark/rfq/builders.py +0 -0
  454. {quantark-0.2.3 → quantark-0.2.4}/quantark/rfq/models.py +0 -0
  455. {quantark-0.2.3 → quantark-0.2.4}/quantark/rfq/registry.py +0 -0
  456. {quantark-0.2.3 → quantark-0.2.4}/quantark/rfq/service.py +0 -0
  457. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/__init__.py +0 -0
  458. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/calculator.py +0 -0
  459. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/dashboard.py +0 -0
  460. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/engines/__init__.py +0 -0
  461. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/engines/addons/__init__.py +0 -0
  462. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/engines/addons/base.py +0 -0
  463. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/engines/addons/commodity.py +0 -0
  464. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/engines/addons/credit.py +0 -0
  465. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/engines/addons/equity.py +0 -0
  466. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/engines/addons/fx.py +0 -0
  467. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/engines/addons/interest_rate.py +0 -0
  468. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/engines/maths.py +0 -0
  469. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/engines/pfe.py +0 -0
  470. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/engines/replacement_cost.py +0 -0
  471. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/models/__init__.py +0 -0
  472. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/models/enums.py +0 -0
  473. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/models/netting_set.py +0 -0
  474. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/models/trade.py +0 -0
  475. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/parameters/__init__.py +0 -0
  476. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/parameters/supervisory.py +0 -0
  477. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/results/__init__.py +0 -0
  478. {quantark-0.2.3 → quantark-0.2.4}/quantark/saccr/results/result.py +0 -0
  479. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/__init__.py +0 -0
  480. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/calculator.py +0 -0
  481. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/cva/__init__.py +0 -0
  482. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/cva/engine.py +0 -0
  483. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/dashboard.py +0 -0
  484. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/engines/__init__.py +0 -0
  485. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/engines/base.py +0 -0
  486. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/engines/commodity.py +0 -0
  487. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/engines/correlations.py +0 -0
  488. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/engines/counterparty_credit.py +0 -0
  489. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/engines/equity.py +0 -0
  490. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/engines/fx.py +0 -0
  491. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/engines/interest_rate.py +0 -0
  492. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/engines/reference_credit.py +0 -0
  493. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/__init__.py +0 -0
  494. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/asof.py +0 -0
  495. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/correlation.py +0 -0
  496. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/curves.py +0 -0
  497. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/engine.py +0 -0
  498. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/grid.py +0 -0
  499. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/historical/__init__.py +0 -0
  500. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/historical/calibration.py +0 -0
  501. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/historical/engine.py +0 -0
  502. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/historical/path_generator.py +0 -0
  503. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/historical/pfe.py +0 -0
  504. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/historical/resampling.py +0 -0
  505. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/paths.py +0 -0
  506. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/phoenix_surface.py +0 -0
  507. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/repricer.py +0 -0
  508. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/simulator.py +0 -0
  509. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/snowball_surface.py +0 -0
  510. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/statemachine.py +0 -0
  511. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/exposure/value_surface.py +0 -0
  512. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/models/__init__.py +0 -0
  513. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/models/enums.py +0 -0
  514. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/models/portfolio.py +0 -0
  515. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/models/sensitivity.py +0 -0
  516. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/parameters/__init__.py +0 -0
  517. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/parameters/supervisory.py +0 -0
  518. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/portfolio/__init__.py +0 -0
  519. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/portfolio/counterparty.py +0 -0
  520. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/portfolio/credit_curve.py +0 -0
  521. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/portfolio/netting.py +0 -0
  522. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/portfolio/trade.py +0 -0
  523. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/portfolio/trade_portfolio.py +0 -0
  524. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/results/__init__.py +0 -0
  525. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/results/result.py +0 -0
  526. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/sacva_engine.py +0 -0
  527. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/sensitivities/__init__.py +0 -0
  528. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/sensitivities/curve_bump.py +0 -0
  529. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/sensitivities/engine.py +0 -0
  530. {quantark-0.2.3 → quantark-0.2.4}/quantark/sacva/sensitivities/shifts.py +0 -0
  531. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/__init__.py +0 -0
  532. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/calibration/__init__.py +0 -0
  533. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/calibration/accessors.py +0 -0
  534. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/calibration/commodity.py +0 -0
  535. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/calibration/credit_non_qualifying.py +0 -0
  536. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/calibration/credit_qualifying.py +0 -0
  537. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/calibration/cross_risk.py +0 -0
  538. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/calibration/equity.py +0 -0
  539. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/calibration/fx.py +0 -0
  540. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/calibration/ir.py +0 -0
  541. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/calibration/version.py +0 -0
  542. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/config.py +0 -0
  543. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/crif/__init__.py +0 -0
  544. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/crif/models.py +0 -0
  545. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/crif/parser.py +0 -0
  546. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/dashboard.py +0 -0
  547. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/__init__.py +0 -0
  548. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/aggregation/__init__.py +0 -0
  549. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/aggregation/addon.py +0 -0
  550. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/aggregation/bucket_aggregator.py +0 -0
  551. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/aggregation/concentration.py +0 -0
  552. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/aggregation/correlations.py +0 -0
  553. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/aggregation/product_class_aggregator.py +0 -0
  554. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/aggregation/risk_class_aggregator.py +0 -0
  555. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/aggregation/simm_calculator.py +0 -0
  556. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/aggregation/weighted_sensitivity.py +0 -0
  557. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/base.py +0 -0
  558. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/classification/__init__.py +0 -0
  559. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/classification/bucket_mapper.py +0 -0
  560. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/factory.py +0 -0
  561. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/portfolio_adapter.py +0 -0
  562. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/result.py +0 -0
  563. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/risk_class/__init__.py +0 -0
  564. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/risk_class/equity_engine.py +0 -0
  565. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/risk_class/ir_engine.py +0 -0
  566. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/engines/risk_class/provider_engine.py +0 -0
  567. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/market_data.py +0 -0
  568. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/report/__init__.py +0 -0
  569. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/report/crif_export.py +0 -0
  570. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/report/excel_generator.py +0 -0
  571. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/report/html_generator.py +0 -0
  572. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/results/__init__.py +0 -0
  573. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/results/attribution.py +0 -0
  574. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/results/simm_result.py +0 -0
  575. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/results/whatif.py +0 -0
  576. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/sensitivity.py +0 -0
  577. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/taxonomy.py +0 -0
  578. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/template/__init__.py +0 -0
  579. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/template/xlsx_loader.py +0 -0
  580. {quantark-0.2.3 → quantark-0.2.4}/quantark/simm/template/xlsx_template.py +0 -0
  581. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/__init__.py +0 -0
  582. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/base.py +0 -0
  583. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/config.py +0 -0
  584. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/credit/__init__.py +0 -0
  585. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/credit/config.py +0 -0
  586. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/credit/credit_stress_applicator.py +0 -0
  587. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/credit/engine.py +0 -0
  588. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/engine.py +0 -0
  589. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/equity/__init__.py +0 -0
  590. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/equity/config.py +0 -0
  591. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/equity/engine.py +0 -0
  592. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/equity/report/__init__.py +0 -0
  593. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/equity/report/report_generator.py +0 -0
  594. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/equity/report/visualizer.py +0 -0
  595. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/equity/results.py +0 -0
  596. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/fi/__init__.py +0 -0
  597. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/fi/config.py +0 -0
  598. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/fi/engine.py +0 -0
  599. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/fi/metrics.py +0 -0
  600. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/fi/results.py +0 -0
  601. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/fx/__init__.py +0 -0
  602. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/fx/config.py +0 -0
  603. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/fx/engine.py +0 -0
  604. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/fx/fx_stress_applicator.py +0 -0
  605. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/report/__init__.py +0 -0
  606. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/report/report_generator.py +0 -0
  607. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/report/visualizer.py +0 -0
  608. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/results/__init__.py +0 -0
  609. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/results/result_aggregator.py +0 -0
  610. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/results/result_exporter.py +0 -0
  611. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/results/stress_results.py +0 -0
  612. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/scenario/__init__.py +0 -0
  613. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/scenario/scenario.py +0 -0
  614. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/scenario/scenario_builder.py +0 -0
  615. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/scenario/scenario_library.py +0 -0
  616. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/scenario/scenario_storage.py +0 -0
  617. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/stress/__init__.py +0 -0
  618. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/stress/stress_applicator.py +0 -0
  619. {quantark-0.2.3 → quantark-0.2.4}/quantark/stresstest/stress/stress_types.py +0 -0
  620. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/__init__.py +0 -0
  621. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/barrier_shift.py +0 -0
  622. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/calendar/__init__.py +0 -0
  623. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/calendar/business_calendar.py +0 -0
  624. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/calendar/day_counter.py +0 -0
  625. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/calendar/holidayfile/china.csv +0 -0
  626. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/calendar/holidayfile/china_sse.csv +0 -0
  627. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/enum/__init__.py +0 -0
  628. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/enum/bond_enums.py +0 -0
  629. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/enum/deltaone_enums.py +0 -0
  630. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/enum/engine_enums.py +0 -0
  631. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/enum/fx_enums.py +0 -0
  632. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/enum/greek_conventions.py +0 -0
  633. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/enum/greeks_enums.py +0 -0
  634. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/enum/option_enums.py +0 -0
  635. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/exceptions.py +0 -0
  636. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/marketdata/__init__.py +0 -0
  637. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/marketdata/adapter/base_adapter.py +0 -0
  638. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/marketdata/adapter/mock_adapter.py +0 -0
  639. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/marketdata/converter.py +0 -0
  640. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/marketdata/example_usage.py +0 -0
  641. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/marketdata/generator/__init__.py +0 -0
  642. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/marketdata/generator/mock_generator.py +0 -0
  643. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/marketdata/models.py +0 -0
  644. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/marketdata/storage/__init__.py +0 -0
  645. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/marketdata/storage/parquet_storage.py +0 -0
  646. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/numerical/__init__.py +0 -0
  647. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/numerical/comparison.py +0 -0
  648. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/numerical/constants.py +0 -0
  649. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/numerical/formatting.py +0 -0
  650. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/numerical/pnl.py +0 -0
  651. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/numerical/safe_math.py +0 -0
  652. {quantark-0.2.3 → quantark-0.2.4}/quantark/util/numerical/validation.py +0 -0
  653. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/__init__.py +0 -0
  654. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/attribution.py +0 -0
  655. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/backtest/__init__.py +0 -0
  656. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/backtest/var_backtester.py +0 -0
  657. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/base.py +0 -0
  658. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/config.py +0 -0
  659. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/credit/__init__.py +0 -0
  660. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/credit/config.py +0 -0
  661. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/credit/engine.py +0 -0
  662. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/credit/revaluation.py +0 -0
  663. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/engines/__init__.py +0 -0
  664. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/engines/historical.py +0 -0
  665. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/engines/monte_carlo.py +0 -0
  666. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/engines/parametric.py +0 -0
  667. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/fx/__init__.py +0 -0
  668. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/fx/config.py +0 -0
  669. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/fx/engine.py +0 -0
  670. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/fx/revaluation.py +0 -0
  671. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/results/__init__.py +0 -0
  672. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/results/incremental_var_result.py +0 -0
  673. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/results/var_report.py +0 -0
  674. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/results/var_result.py +0 -0
  675. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/risk_factors/__init__.py +0 -0
  676. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/risk_factors/base.py +0 -0
  677. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/risk_factors/equity_factors.py +0 -0
  678. {quantark-0.2.3 → quantark-0.2.4}/quantark/var/risk_factors/fi_factors.py +0 -0
  679. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/__init__.py +0 -0
  680. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/black_scholes.py +0 -0
  681. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/curves.py +0 -0
  682. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/heston/__init__.py +0 -0
  683. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/heston/analytical_kernel.py +0 -0
  684. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/heston/calibration.py +0 -0
  685. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/heston/mc_kernel.py +0 -0
  686. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/heston/params.py +0 -0
  687. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/heston/pde_kernel.py +0 -0
  688. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/localvol/__init__.py +0 -0
  689. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/localvol/dupire.py +0 -0
  690. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/localvol/mc_kernel.py +0 -0
  691. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/localvol/pde_kernel.py +0 -0
  692. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/localvol/surface.py +0 -0
  693. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/risk/__init__.py +0 -0
  694. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/risk/contracts.py +0 -0
  695. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/risk/scenarios.py +0 -0
  696. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/slv/__init__.py +0 -0
  697. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/slv/fokkerplanck/__init__.py +0 -0
  698. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/slv/fokkerplanck/bootstrap.py +0 -0
  699. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/slv/fokkerplanck/calibration.py +0 -0
  700. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/slv/fokkerplanck/config.py +0 -0
  701. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/slv/fokkerplanck/coordinates.py +0 -0
  702. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/slv/fokkerplanck/fp_operators.py +0 -0
  703. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/slv/fokkerplanck/fp_solver.py +0 -0
  704. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/slv/leverage.py +0 -0
  705. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/slv/slv_mc_kernel.py +0 -0
  706. {quantark-0.2.3 → quantark-0.2.4}/quantark/volmodels/slv/slv_pde_kernel.py +0 -0
  707. {quantark-0.2.3 → quantark-0.2.4}/quantark_compat.pth +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quantark
3
- Version: 0.2.3
3
+ Version: 0.2.4
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "quantark"
7
- version = "0.2.3"
7
+ version = "0.2.4"
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"
@@ -1,3 +1,3 @@
1
1
  """QuantArk: professional financial derivatives pricing library."""
2
2
 
3
- __version__ = "0.2.3"
3
+ __version__ = "0.2.4"
@@ -69,6 +69,7 @@ class BaseEngine(ABC):
69
69
  product: BaseEquityProduct,
70
70
  pricing_env: PricingEnvironment,
71
71
  emit_distribution: bool = True,
72
+ streams: "Optional[frozenset]" = None,
72
73
  ) -> "PricingResult":
73
74
  """
74
75
  Return product NPV and an event distribution for cash-leg valuation.
@@ -77,6 +78,10 @@ class BaseEngine(ABC):
77
78
  generalized EventDistribution. Engines without event stats fall back to
78
79
  a maturity-only distribution, which is sufficient for deterministic and
79
80
  full-schedule cash legs.
81
+
82
+ ``streams`` (the EventType set the caller needs, [§11.1]) is honored by
83
+ engines that support column pruning (the PDE autocallable solvers);
84
+ other engines ignore it and return the full distribution.
80
85
  """
81
86
  from quantark.cashleg.event_distribution import EventDistribution, PricingResult
82
87
 
@@ -0,0 +1,137 @@
1
+ """Shared backward-in-time Crank-Nicolson interior operator.
2
+
3
+ ``BackwardOperator`` owns the tridiagonal INTERIOR operator (l, c, u) for a fixed
4
+ spatial grid and produces, per (dt, theta), the banded LHS system and the RHS
5
+ tridiagonal coefficients — cached, so a factorization is built once and reused
6
+ across every column solved on the same step.
7
+
8
+ Boundary conditions live in the RHS/boundary rows, NOT in this interior matrix,
9
+ so the value sweep (Dirichlet value BCs) and the indicator sweep (Neumann /
10
+ zero-slope BCs) can share ONE factorization [§11.2]. The per-step damping
11
+ schedule (``theta_by_step``) is also owned here so both sweeps run the identical
12
+ Rannacher schedule — required for price/probability consistency and for the
13
+ factorization to be shareable across sweeps.
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ from collections import OrderedDict
19
+ from typing import Optional, Sequence, Tuple
20
+
21
+ import numpy as np
22
+
23
+ from quantark.util.numerical import is_close
24
+
25
+
26
+ class BackwardOperator:
27
+ """Fixed interior tridiagonal operator with a per-(dt, theta) banded cache."""
28
+
29
+ def __init__(
30
+ self,
31
+ l: np.ndarray,
32
+ c: np.ndarray,
33
+ u: np.ndarray,
34
+ *,
35
+ use_banded: bool = True,
36
+ cache_enabled: bool = True,
37
+ cache_max_entries: int = 512,
38
+ ) -> None:
39
+ self._l = np.asarray(l, dtype=float)
40
+ self._c = np.asarray(c, dtype=float)
41
+ self._u = np.asarray(u, dtype=float)
42
+ self.use_banded = use_banded
43
+ self._cache_enabled = cache_enabled
44
+ self._cache_max_entries = max(1, int(cache_max_entries))
45
+ self._banded_cache: "OrderedDict[Tuple[float, float], Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]]" = (
46
+ OrderedDict()
47
+ )
48
+
49
+ def _build(
50
+ self, dt: float, theta: float
51
+ ) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]:
52
+ l, c, u = self._l, self._c, self._u
53
+ lower = -theta * dt * l[2:-1]
54
+ main = 1.0 - theta * dt * c[1:-1]
55
+ upper = -theta * dt * u[1:-2]
56
+
57
+ banded = np.zeros((3, len(main)))
58
+ banded[0, 1:] = upper
59
+ banded[1, :] = main
60
+ banded[2, :-1] = lower
61
+
62
+ lower1 = (1.0 - theta) * dt * l[2:-1]
63
+ main1 = 1.0 + (1.0 - theta) * dt * c[1:-1]
64
+ upper1 = (1.0 - theta) * dt * u[1:-2]
65
+ return banded, lower1, main1, upper1
66
+
67
+ def banded_system(
68
+ self, dt: float, theta: float
69
+ ) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]:
70
+ """Return ``(banded, lower1, main1, upper1)`` for the CN step at (dt, theta).
71
+
72
+ ``banded`` is the LHS ``I - theta*dt*A`` in scipy banded form; the three
73
+ 1-D vectors are the RHS ``I + (1-theta)*dt*A`` tridiagonals. Identical to
74
+ the former ``SnowballPDESolver._get_banded_system`` output.
75
+ """
76
+ if not self._cache_enabled:
77
+ return self._build(dt, theta)
78
+
79
+ key = (round(dt, 12), round(theta, 12))
80
+ cached = self._banded_cache.get(key)
81
+ if cached is not None:
82
+ self._banded_cache.move_to_end(key)
83
+ return cached
84
+
85
+ result = self._build(dt, theta)
86
+ self._banded_cache[key] = result
87
+ self._banded_cache.move_to_end(key)
88
+ if len(self._banded_cache) > self._cache_max_entries:
89
+ self._banded_cache.popitem(last=False)
90
+ return result
91
+
92
+ def clear_cache(self) -> None:
93
+ self._banded_cache.clear()
94
+
95
+ @staticmethod
96
+ def theta_by_step(
97
+ t_vec: np.ndarray,
98
+ dt_vec: np.ndarray,
99
+ params,
100
+ discontinuity_times: Optional[Sequence[float]],
101
+ ) -> np.ndarray:
102
+ """Per-step Crank-Nicolson theta (length ``len(t_vec) - 1``) [§11.2].
103
+
104
+ Reproduces the pricing sweep's Rannacher rule exactly: step ``j`` (the
105
+ backward step from ``t_vec[j+1]`` to ``t_vec[j]``) uses backward-Euler
106
+ (``theta = 1``) within ``rannacher_steps`` of the terminal payoff, else
107
+ ``event_theta`` for the ``event_rannacher_steps`` steps immediately
108
+ before each discontinuity node, else ``params.theta``.
109
+
110
+ Depends only on ``discontinuity_times`` (always KO ∪ KI ∪ coupon), so the
111
+ schedule is identical regardless of which streams a downstream consumer
112
+ selects — a prerequisite for sharing the factorization across sweeps.
113
+ """
114
+ t_vec = np.asarray(t_vec, dtype=float)
115
+ num_t = len(t_vec)
116
+ n_steps = num_t - 1
117
+ theta = np.full(n_steps, float(params.theta), dtype=float)
118
+ if not params.use_rannacher:
119
+ return theta
120
+
121
+ smooth_js: set = set()
122
+ if params.auto_grid and params.rannacher_at_events and discontinuity_times:
123
+ for et in discontinuity_times:
124
+ idx = int(np.argmin(np.abs(t_vec - et)))
125
+ if 0 < idx < num_t - 1 and is_close(float(t_vec[idx]), float(et)):
126
+ for k in range(int(params.event_rannacher_steps)):
127
+ sj = idx - 1 - k
128
+ if sj >= 0:
129
+ smooth_js.add(sj)
130
+
131
+ for j in range(n_steps):
132
+ steps_from_end = num_t - 1 - j
133
+ if steps_from_end < params.rannacher_steps:
134
+ theta[j] = 1.0
135
+ elif j in smooth_js:
136
+ theta[j] = float(params.event_theta)
137
+ return theta
@@ -8,6 +8,7 @@ backward in time, with support for Rannacher smoothing.
8
8
  from abc import abstractmethod
9
9
  from collections import OrderedDict
10
10
  from copy import deepcopy
11
+ from dataclasses import dataclass, field
11
12
  import math
12
13
  import threading
13
14
  from typing import Dict, Optional, Tuple, List, NamedTuple, Sequence
@@ -28,6 +29,24 @@ from .time_grid import TimeGrid
28
29
  from .spatial_grid import SpatialGrid
29
30
 
30
31
 
32
+ @dataclass(frozen=True)
33
+ class TimeGridSpec:
34
+ """The three orthogonal time-grid concerns (spec §4 Component 1).
35
+
36
+ * ``align_times`` — times that MUST be grid nodes exactly: KO/coupon
37
+ observation dates. They drive both node alignment and the
38
+ event-distribution resets, so a misalignment here is a correctness bug.
39
+ * ``monitor_times`` — extra nodes that improve resolution of a monitored
40
+ feature (daily-discrete KI) but are not alignment-critical for the
41
+ value/cashflow. Empty for European/continuous/no-KI regimes.
42
+ * ``steps_per_day`` — resolution: fill density between mandatory nodes.
43
+ """
44
+
45
+ align_times: list
46
+ monitor_times: list = field(default_factory=list)
47
+ steps_per_day: float = 1.0
48
+
49
+
31
50
  class PDESolutionResult(NamedTuple):
32
51
  """
33
52
  Result from PDE solving containing solution and grid data.
@@ -155,10 +174,17 @@ class BasePDESolver(BaseEngine):
155
174
  s_min, s_max = self._resolve_spatial_bounds(
156
175
  product, spot, sigma, tau, r, q, barriers
157
176
  )
177
+ # Freeze the critical points at the base spot too [§11.4]: otherwise
178
+ # include_spot_in_critical_points re-snaps the grid to a bumped spot,
179
+ # so a spot bump mixes true delta/gamma with grid-movement noise.
180
+ frozen_critical = tuple(
181
+ self._resolve_critical_points(product, pricing_env, spot, barriers)
182
+ )
158
183
 
159
184
  fixed_params = deepcopy(self.params)
160
185
  fixed_params.s_min = float(s_min)
161
186
  fixed_params.s_max = float(s_max)
187
+ fixed_params.frozen_critical_points = frozen_critical
162
188
  return type(self)(params=fixed_params)
163
189
 
164
190
  def _freeze_cache_value(self, value):
@@ -252,6 +278,8 @@ class BasePDESolver(BaseEngine):
252
278
  params.theta,
253
279
  params.use_rannacher,
254
280
  params.rannacher_steps,
281
+ params.frozen_critical_points,
282
+ getattr(params, "ki_monitoring_mode", None),
255
283
  )
256
284
 
257
285
  def _grid_cache_key(
@@ -619,6 +647,14 @@ class BasePDESolver(BaseEngine):
619
647
  ) -> List[float]:
620
648
  """Merge raw critical points with dynamic points (spot/barriers)."""
621
649
  params: PDEParams = self.params
650
+
651
+ # Frozen (bump-context) critical points are used verbatim so the grid is
652
+ # invariant to spot/vol/rate/div bumps [§11.4].
653
+ if params.frozen_critical_points is not None:
654
+ return sorted(
655
+ {float(p) for p in params.frozen_critical_points if p is not None and p > 0}
656
+ )
657
+
622
658
  points = list(raw_points)
623
659
 
624
660
  if params.auto_grid:
@@ -659,25 +695,80 @@ class BasePDESolver(BaseEngine):
659
695
 
660
696
  return size, adaptive
661
697
 
698
+ def _time_grid_spec(self, product, tau) -> "TimeGridSpec":
699
+ """Decoupled time-grid concerns for this product (spec §4 Component 1).
700
+
701
+ Base default: align to the generic observation schedule; no KI-monitor
702
+ concept (that belongs to autocallable solvers, which override this);
703
+ resolution from params. Returns interior times only (0 < t < tau).
704
+ """
705
+ align = [
706
+ t for t in (self._get_event_times(product, tau) or []) if 0.0 < t < tau
707
+ ]
708
+ return TimeGridSpec(
709
+ align_times=sorted(set(align)),
710
+ monitor_times=[],
711
+ steps_per_day=float(self.params.event_steps_per_day),
712
+ )
713
+
662
714
  def _resolve_time_grid(
663
715
  self, product, tau, barriers
664
716
  ) -> Tuple[np.ndarray, np.ndarray]:
665
- """Determine time grid type and number of steps."""
717
+ """Build the time grid from the decoupled ``_time_grid_spec`` seam.
718
+
719
+ When the product has mandatory event nodes (KO/coupon alignment plus any
720
+ KI-monitor times), the grid is built by ``TimeGrid.build_mandatory``:
721
+ every event time lands on a node exactly, and resolution between nodes is
722
+ set solely by ``steps_per_day`` (no per-interval floor). This path is
723
+ market-independent — it depends only on ``tau``, the schedule,
724
+ ``steps_per_day`` and params — so spot/vol/rate/div bumps reprice on an
725
+ identical grid [§4.5], and it always feeds the day-based resolution
726
+ params, fixing the historical ``auto_grid=False`` param drop (root cause
727
+ 2) that inflated daily-KI grids ~10x.
728
+
729
+ When there are no discrete event nodes (continuous barriers, American,
730
+ European), the base resolution heuristics are preserved unchanged.
731
+ """
666
732
  params: PDEParams = self.params
733
+ spec = self._time_grid_spec(product, tau)
734
+ mandatory = sorted(
735
+ {
736
+ t
737
+ for t in (list(spec.align_times) + list(spec.monitor_times))
738
+ if 0.0 < t < tau
739
+ }
740
+ )
741
+
742
+ # Event alignment engages when the config wants an event-aligned grid:
743
+ # auto_grid (auto-selects alignment when events exist, as before) or an
744
+ # explicit event grid type. An explicit auto_grid=False + uniform/graded
745
+ # request is honored literally (plain grid), matching prior behavior.
746
+ want_event_aligned = params.auto_grid or params.time_grid_type in (
747
+ "event_aligned",
748
+ "event_clustered",
749
+ )
750
+ if mandatory and want_event_aligned:
751
+ return TimeGrid.build_mandatory(
752
+ tau,
753
+ mandatory,
754
+ steps_per_day=spec.steps_per_day,
755
+ day_count=int(params.bus_days_in_year),
756
+ max_steps_total=params.max_time_steps,
757
+ )
758
+
759
+ # No event alignment requested: preserve the base resolution heuristics.
667
760
  obs_type = getattr(product, "observation_type", None)
668
761
  has_barriers = len(barriers) > 0
669
- event_times = self._get_event_times(product, tau)
670
762
 
671
763
  if not params.auto_grid:
672
764
  return TimeGrid.build(
673
765
  tau,
674
766
  params.time_steps,
675
767
  method=params.time_grid_type,
676
- event_times=event_times,
768
+ event_times=None,
677
769
  grade_exponent=params.grade_exponent,
678
770
  )
679
771
 
680
- # Logic for suggested time steps
681
772
  days = max(1, int(round(tau * float(params.bus_days_in_year))))
682
773
  suggested = days
683
774
  if has_barriers:
@@ -689,24 +780,13 @@ class BasePDESolver(BaseEngine):
689
780
  suggested = int(round(1.5 * float(days)))
690
781
 
691
782
  steps = min(max(params.time_steps, suggested), params.max_time_steps)
692
-
693
- # Decide method
694
- method = "uniform"
695
- if event_times and (has_barriers or obs_type == ObservationType.DISCRETE):
696
- method = "event_aligned"
697
- elif params.time_grid_type != "uniform":
698
- method = params.time_grid_type
699
-
783
+ method = params.time_grid_type if params.time_grid_type != "uniform" else "uniform"
700
784
  return TimeGrid.build(
701
785
  tau,
702
786
  steps,
703
787
  method=method,
704
- event_times=event_times,
788
+ event_times=None,
705
789
  grade_exponent=params.grade_exponent,
706
- steps_per_day=params.event_steps_per_day,
707
- day_count=params.bus_days_in_year,
708
- min_steps_per_interval=params.event_min_steps_per_interval,
709
- max_steps_total=params.max_time_steps,
710
790
  )
711
791
 
712
792
  def _calculate_coefficients(
@@ -57,8 +57,17 @@ class KOResetSnowballPDESolver(SnowballPDESolver):
57
57
  # price() is inherited from SnowballPDESolver using _check_product_type()
58
58
 
59
59
  def calculate_event_stats(
60
- self, product: KnockOutResetSnowballOption, pricing_env: PricingEnvironment
60
+ self,
61
+ product: KnockOutResetSnowballOption,
62
+ pricing_env: PricingEnvironment,
63
+ *,
64
+ npv: Optional[float] = None,
65
+ streams: Optional[frozenset] = None,
61
66
  ) -> Optional[object]:
67
+ # streams is ignored: the KO-reset stats are QUAD-delegated (full
68
+ # distribution), not a prunable PDE indicator sweep. npv, when supplied
69
+ # by the single-pass price_with_events, is the PDE value used for the
70
+ # reconciliation residual (avoids a redundant self.price() solve).
62
71
  if not isinstance(product, KnockOutResetSnowballOption):
63
72
  return None
64
73
  if pricing_env is None:
@@ -75,7 +84,7 @@ class KOResetSnowballPDESolver(SnowballPDESolver):
75
84
  if quad_stats is None:
76
85
  return None
77
86
 
78
- pde_pv = float(self.price(product, pricing_env))
87
+ pde_pv = float(npv) if npv is not None else float(self.price(product, pricing_env))
79
88
  pv_delta = pde_pv - float(quad_stats.pv)
80
89
  return replace(
81
90
  quad_stats,
@@ -232,22 +241,33 @@ class KOResetSnowballPDESolver(SnowballPDESolver):
232
241
 
233
242
  return result
234
243
 
235
- def _get_event_times(
244
+ def _post_ki_ko_times(
236
245
  self, product: KnockOutResetSnowballOption, tau: float
237
- ) -> Optional[List[float]]:
238
- event_times = super()._get_event_times(product, tau) or []
246
+ ) -> List[float]:
247
+ """Post-KI (reset) KO observation times, interior to (0, tau).
248
+
249
+ In the two-surface KO-reset PDE the post-KI KO schedule fires on the V1
250
+ (knocked-in) surface; those dates must be grid nodes exactly [§11.7].
251
+ """
252
+ out = []
239
253
  post_schedule = product.post_barrier_config.ko_observation_schedule
240
254
  if post_schedule is not None:
241
- for rec in post_schedule.records:
242
- if rec.observation_time is not None:
243
- t = rec.observation_time
244
- if 0 < t < tau:
245
- event_times.append(t)
255
+ out += [
256
+ rec.observation_time
257
+ for rec in post_schedule.records
258
+ if rec.observation_time is not None
259
+ ]
246
260
  elif product.post_barrier_config.ko_observation_dates is not None:
247
- for t in product.post_barrier_config.ko_observation_dates:
248
- if 0 < t < tau:
249
- event_times.append(t)
250
- return sorted(set(event_times)) if event_times else None
261
+ out += list(product.post_barrier_config.ko_observation_dates)
262
+ return sorted({float(t) for t in out if t is not None and 0.0 < float(t) < tau})
263
+
264
+ def _ko_coupon_align_times(
265
+ self, product: KnockOutResetSnowballOption, tau: float
266
+ ) -> List[float]:
267
+ """Pre-KI KO ∪ post-KI (reset) KO — both must align exactly [§11.7]."""
268
+ pre = super()._ko_coupon_align_times(product, tau)
269
+ post = self._post_ki_ko_times(product, tau)
270
+ return sorted(set(pre) | set(post))
251
271
 
252
272
  def get_critical_points(
253
273
  self, product: KnockOutResetSnowballOption, pricing_env: PricingEnvironment
@@ -236,6 +236,9 @@ class PhoenixPDESolver(SnowballPDESolver):
236
236
  else:
237
237
  self._ki_barrier = ki_barrier
238
238
 
239
+ # Resolve BGK state before grids so the time grid drops interior KI nodes.
240
+ self._configure_bgk(product, pricing_env, sigma, tau)
241
+
239
242
  if self._profile_enabled:
240
243
  self._reset_profile_stats()
241
244
 
@@ -288,7 +291,11 @@ class PhoenixPDESolver(SnowballPDESolver):
288
291
  )
289
292
 
290
293
  if product.has_ki_barrier:
291
- should_apply_ki = self._ki_continuous or terminal_tidx in self._ki_observation_indices
294
+ should_apply_ki = (
295
+ self._ki_continuous
296
+ or self._bgk_active
297
+ or terminal_tidx in self._ki_observation_indices
298
+ )
292
299
  if should_apply_ki:
293
300
  for k in range(len(grid_v0_list)):
294
301
  self._apply_ki_jump(grid_v0_list[k], grid_v1_list[k], s_vec, terminal_tidx, product)
@@ -583,7 +590,11 @@ class PhoenixPDESolver(SnowballPDESolver):
583
590
 
584
591
  # 2. KI Jump
585
592
  if product.has_ki_barrier:
586
- should_apply_ki = self._ki_continuous or t_idx in self._ki_observation_indices
593
+ should_apply_ki = (
594
+ self._ki_continuous
595
+ or self._bgk_active
596
+ or t_idx in self._ki_observation_indices
597
+ )
587
598
  if should_apply_ki:
588
599
  # Apply to all states
589
600
  for k in range(len(grid_v0_list)):