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.
Files changed (707) hide show
  1. {quantark-0.2.4 → quantark-0.2.5}/PKG-INFO +1 -1
  2. {quantark-0.2.4 → quantark-0.2.5}/pyproject.toml +1 -1
  3. {quantark-0.2.4 → quantark-0.2.5}/quantark/__init__.py +1 -1
  4. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/backward_operator.py +4 -1
  5. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/barrier_pde_solver.py +17 -95
  6. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/base_pde_solver.py +194 -37
  7. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/double_barrier_pde_solver.py +108 -63
  8. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/double_one_touch_pde_solver.py +77 -57
  9. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/ko_reset_snowball_pde_solver.py +1 -1
  10. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/one_touch_pde_solver.py +62 -68
  11. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/phoenix_pde_solver.py +20 -28
  12. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/snowball_pde_solver.py +84 -84
  13. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/ko_reset_snowball_quad_engine.py +40 -12
  14. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/phoenix_quad_engine.py +7 -61
  15. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/quad_adapters.py +18 -3
  16. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/quad_core.py +5 -1
  17. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/snowball_quad_engine.py +53 -29
  18. {quantark-0.2.4 → quantark-0.2.5}/.gitignore +0 -0
  19. {quantark-0.2.4 → quantark-0.2.5}/CHANGELOG.md +0 -0
  20. {quantark-0.2.4 → quantark-0.2.5}/LICENSE +0 -0
  21. {quantark-0.2.4 → quantark-0.2.5}/NOTICE +0 -0
  22. {quantark-0.2.4 → quantark-0.2.5}/README.md +0 -0
  23. {quantark-0.2.4 → quantark-0.2.5}/quantark/_compat.py +0 -0
  24. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/__init__.py +0 -0
  25. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/__init__.py +0 -0
  26. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/__init__.py +0 -0
  27. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/analytical/__init__.py +0 -0
  28. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/analytical/black_engine.py +0 -0
  29. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/analytical/bond_forward_engine.py +0 -0
  30. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/analytical/bond_futures_engine.py +0 -0
  31. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/convertible/__init__.py +0 -0
  32. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/convertible/convertible_bond_engine.py +0 -0
  33. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/discount/__init__.py +0 -0
  34. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/discount/bond_discount_engine.py +0 -0
  35. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/discount/frn_engine.py +0 -0
  36. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/pde/__init__.py +0 -0
  37. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/pde/convertible/__init__.py +0 -0
  38. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/pde/convertible/jump_diffusion_engine.py +0 -0
  39. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/pde/convertible/pde_params.py +0 -0
  40. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/pde/convertible/tf_engine.py +0 -0
  41. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/tree/__init__.py +0 -0
  42. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/tree/convertible/__init__.py +0 -0
  43. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/tree/convertible/binomial_engine.py +0 -0
  44. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/tree/convertible/tree_params.py +0 -0
  45. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/engine/tree/convertible/trinomial_engine.py +0 -0
  46. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/__init__.py +0 -0
  47. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/base_bond_product.py +0 -0
  48. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/convertible/__init__.py +0 -0
  49. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/convertible/convertible_bond.py +0 -0
  50. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/couponbond/__init__.py +0 -0
  51. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/couponbond/fixed_bond.py +0 -0
  52. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/couponbond/frn.py +0 -0
  53. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/forward/__init__.py +0 -0
  54. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/forward/base_bond_forward.py +0 -0
  55. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/forward/bond_forward.py +0 -0
  56. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/futures/__init__.py +0 -0
  57. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/futures/bond_futures.py +0 -0
  58. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/option/__init__.py +0 -0
  59. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/product/option/euro_short_term_bond_option.py +0 -0
  60. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/riskmeasures/__init__.py +0 -0
  61. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/riskmeasures/bond_greeks_calculator.py +0 -0
  62. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/schedule/__init__.py +0 -0
  63. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/bond/schedule/cashflow.py +0 -0
  64. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/__init__.py +0 -0
  65. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/conventions.py +0 -0
  66. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/engine/__init__.py +0 -0
  67. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/engine/analytical/__init__.py +0 -0
  68. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/engine/analytical/reduced_form.py +0 -0
  69. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/engine/base_credit_engine.py +0 -0
  70. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/engine/mc/__init__.py +0 -0
  71. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/engine/mc/basket_copula.py +0 -0
  72. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/engine/schedule.py +0 -0
  73. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/product/__init__.py +0 -0
  74. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/product/base_credit_product.py +0 -0
  75. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/product/basket_cds.py +0 -0
  76. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/product/cds.py +0 -0
  77. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/riskmeasures/__init__.py +0 -0
  78. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/credit/riskmeasures/credit_greeks_calculator.py +0 -0
  79. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/__init__.py +0 -0
  80. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/analysis/__init__.py +0 -0
  81. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/analysis/autocallable_path_analyzer.py +0 -0
  82. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/__init__.py +0 -0
  83. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/__init__.py +0 -0
  84. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/accumulator_analytical_engine.py +0 -0
  85. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/american_option_engine.py +0 -0
  86. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/asian_option_analytical_engine.py +0 -0
  87. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/barrier_analytical_engine.py +0 -0
  88. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/black_scholes_engine.py +0 -0
  89. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/deltaone_engine.py +0 -0
  90. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/digital_option_engine.py +0 -0
  91. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/double_barrier_option_engine.py +0 -0
  92. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/double_sharkfin_option_analytical_engine.py +0 -0
  93. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/heston_analytical_engine.py +0 -0
  94. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/one_touch_analytical_engine.py +0 -0
  95. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/range_accrual_analytical_engine.py +0 -0
  96. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/analytical/single_sharkfin_option_analytical_engine.py +0 -0
  97. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/base_engine.py +0 -0
  98. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/cashflow/__init__.py +0 -0
  99. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/cashflow/accrual_calculator.py +0 -0
  100. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/cashflow/total_return_swap_engine.py +0 -0
  101. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/cashflow/trs_cva_exposure.py +0 -0
  102. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/cashflow/trs_cva_repricer.py +0 -0
  103. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/cashflow/trs_valuation.py +0 -0
  104. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/event_stats.py +0 -0
  105. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/localvol_greeks.py +0 -0
  106. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/__init__.py +0 -0
  107. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/accumulator_mc_engine.py +0 -0
  108. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/american_option_mc_engine.py +0 -0
  109. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/asian_option_mc_engine.py +0 -0
  110. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/barrier_option_mc_engine.py +0 -0
  111. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/digital_option_mc_engine.py +0 -0
  112. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/double_sharkfin_option_mc_engine.py +0 -0
  113. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/euro_mc_engine.py +0 -0
  114. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/heston_mc_engine.py +0 -0
  115. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/heston_slv_mc_engine.py +0 -0
  116. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/local_vol_mc_engine.py +0 -0
  117. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/phoenix_mc_engine.py +0 -0
  118. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/range_accrual_mc_engine.py +0 -0
  119. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/sabr_mc_engine.py +0 -0
  120. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/single_sharkfin_option_mc_engine.py +0 -0
  121. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/mc/snowball_mc_engine.py +0 -0
  122. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/__init__.py +0 -0
  123. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/american_pde_solver.py +0 -0
  124. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/european_pde_solver.py +0 -0
  125. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/heston_pde_solver.py +0 -0
  126. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/heston_slv_pde_solver.py +0 -0
  127. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/local_vol_pde_solver.py +0 -0
  128. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/spatial_grid.py +0 -0
  129. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde/time_grid.py +0 -0
  130. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/pde_engine.py +0 -0
  131. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/__init__.py +0 -0
  132. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/discrete_quad_engine.py +0 -0
  133. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/european_quad_engine.py +0 -0
  134. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/quad/quad_math.py +0 -0
  135. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/benchmark_check_american_analytical.py +0 -0
  136. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/benchmark_check_american_pde.py +0 -0
  137. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/benchmark_check_asian_analytical.py +0 -0
  138. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/benchmark_check_barrier_analytical.py +0 -0
  139. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/benchmark_check_barrier_pde_solver.py +0 -0
  140. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/benchmark_check_digital_option.py +0 -0
  141. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/benchmark_check_snowball_pde_solver.py +0 -0
  142. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/boundary_check_american_analytical.py +0 -0
  143. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/boundary_check_american_pde.py +0 -0
  144. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/boundary_check_asian_analytical.py +0 -0
  145. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/boundary_check_barrier_analytical.py +0 -0
  146. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/boundary_check_barrier_pde_solver.py +0 -0
  147. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/boundary_check_digital_option.py +0 -0
  148. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/boundary_check_snowball_pde_solver.py +0 -0
  149. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/greeks_check_digital_option.py +0 -0
  150. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/mc_comparison_barrier_pde.py +0 -0
  151. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/quick_mc_compare.py +0 -0
  152. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/engine/validation/script/validation_stepdown_improved.py +0 -0
  153. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/lifecycle/__init__.py +0 -0
  154. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/lifecycle/autocallable.py +0 -0
  155. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/lifecycle/barrier.py +0 -0
  156. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/lifecycle/events.py +0 -0
  157. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/lifecycle/manager.py +0 -0
  158. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/lifecycle/state.py +0 -0
  159. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/param/__init__.py +0 -0
  160. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/param/engine_param_profiles.py +0 -0
  161. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/param/engine_params.py +0 -0
  162. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/__init__.py +0 -0
  163. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/bsm/__init__.py +0 -0
  164. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/bsm/bsm_process.py +0 -0
  165. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/bsm/qmc_brownian_bridge.py +0 -0
  166. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/bsm/qmc_path_generator.py +0 -0
  167. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/bsm/qmc_rqmc_driver.py +0 -0
  168. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/bsm/qmc_sobol.py +0 -0
  169. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/bsm/qmc_variance_reduction.py +0 -0
  170. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/sabr/__init__.py +0 -0
  171. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/process/sabr/sabr_process.py +0 -0
  172. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/__init__.py +0 -0
  173. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/base_equity_product.py +0 -0
  174. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/deltaone/__init__.py +0 -0
  175. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/deltaone/base_deltaone_product.py +0 -0
  176. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/deltaone/futures.py +0 -0
  177. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/deltaone/spot_instrument.py +0 -0
  178. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/__init__.py +0 -0
  179. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/accumulator_option.py +0 -0
  180. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/american_option.py +0 -0
  181. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/asian_option.py +0 -0
  182. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/barrier_option.py +0 -0
  183. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/base_equity_option.py +0 -0
  184. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/digital_option.py +0 -0
  185. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/double_barrier_option.py +0 -0
  186. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/double_one_touch_option.py +0 -0
  187. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/double_sharkfin_option.py +0 -0
  188. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/european_vanilla_option.py +0 -0
  189. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/ko_reset_snowball_option.py +0 -0
  190. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/observation_schedule.py +0 -0
  191. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/one_touch_option.py +0 -0
  192. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/phoenix_config.py +0 -0
  193. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/phoenix_helpers.py +0 -0
  194. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/phoenix_option.py +0 -0
  195. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/range_accrual_config.py +0 -0
  196. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/range_accrual_helpers.py +0 -0
  197. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/range_accrual_option.py +0 -0
  198. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/single_sharkfin_option.py +0 -0
  199. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/snowball_config.py +0 -0
  200. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/snowball_helpers.py +0 -0
  201. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/option/snowball_option.py +0 -0
  202. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/__init__.py +0 -0
  203. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/base_swap.py +0 -0
  204. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/multi_asset_trs.py +0 -0
  205. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/one_asset_trs.py +0 -0
  206. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/one_asset_trs_dual_ccy.py +0 -0
  207. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/trs_event_handler.py +0 -0
  208. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/trs_params.py +0 -0
  209. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/product/swap/trs_schedule.py +0 -0
  210. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/report/__init__.py +0 -0
  211. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/report/autocallable_risk_report.py +0 -0
  212. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/report/plotting.py +0 -0
  213. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/report/snowball_risk_comparison_report.py +0 -0
  214. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/report/surfaces.py +0 -0
  215. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/report/term_structure.py +0 -0
  216. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/riskmeasures/__init__.py +0 -0
  217. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/riskmeasures/greeks_calculator.py +0 -0
  218. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/equity/riskmeasures/vol_model_risk.py +0 -0
  219. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/__init__.py +0 -0
  220. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/__init__.py +0 -0
  221. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/__init__.py +0 -0
  222. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_deltaone_engine.py +0 -0
  223. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_digital_engine.py +0 -0
  224. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_foreign_range_accrual_engine.py +0 -0
  225. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_heston_analytical_engine.py +0 -0
  226. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_quanto_digital_engine.py +0 -0
  227. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_quanto_range_accrual_engine.py +0 -0
  228. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_quanto_vanilla_engine.py +0 -0
  229. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/fx_range_accrual_engine.py +0 -0
  230. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/garman_kohlhagen_engine.py +0 -0
  231. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/vannavolga/__init__.py +0 -0
  232. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/vannavolga/arbitrage.py +0 -0
  233. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/vannavolga/attenuation.py +0 -0
  234. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/vannavolga/barrier_bs.py +0 -0
  235. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/vannavolga/vv_barrier.py +0 -0
  236. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/vannavolga/vv_barrier_engine.py +0 -0
  237. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/analytical/vannavolga/vv_vanilla_barrier.py +0 -0
  238. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/base_fx_engine.py +0 -0
  239. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/localvol_common.py +0 -0
  240. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/localvol_greeks.py +0 -0
  241. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/__init__.py +0 -0
  242. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/fx_barrier_mc_engine.py +0 -0
  243. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/fx_mc_params.py +0 -0
  244. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/fx_range_accrual_mc_engine.py +0 -0
  245. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/fx_sharkfin_mc_engine.py +0 -0
  246. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/fx_tarf_mc_engine.py +0 -0
  247. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/fx_tarn_note_mc_engine.py +0 -0
  248. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/heston_mc_engine.py +0 -0
  249. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/heston_slv_mc_engine.py +0 -0
  250. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/mc/local_vol_mc_engine.py +0 -0
  251. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/pde/__init__.py +0 -0
  252. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/pde/heston_pde_solver.py +0 -0
  253. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/pde/heston_slv_pde_solver.py +0 -0
  254. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/engine/pde/local_vol_pde_solver.py +0 -0
  255. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/process/__init__.py +0 -0
  256. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/process/fx_gk_path_generator.py +0 -0
  257. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/process/garman_kohlhagen_process.py +0 -0
  258. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/__init__.py +0 -0
  259. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/base_fx_product.py +0 -0
  260. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/currency_pair.py +0 -0
  261. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/deltaone/__init__.py +0 -0
  262. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/deltaone/base_fx_deltaone.py +0 -0
  263. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/deltaone/fx_forward.py +0 -0
  264. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/deltaone/fx_spot.py +0 -0
  265. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/deltaone/fx_swap.py +0 -0
  266. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/__init__.py +0 -0
  267. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_barrier_option.py +0 -0
  268. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_digital_option.py +0 -0
  269. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_foreign_range_accrual_option.py +0 -0
  270. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_one_touch_option.py +0 -0
  271. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_quanto_digital_option.py +0 -0
  272. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_quanto_range_accrual_option.py +0 -0
  273. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_quanto_vanilla_option.py +0 -0
  274. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_range_accrual_config.py +0 -0
  275. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_range_accrual_option.py +0 -0
  276. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_sharkfin_option.py +0 -0
  277. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_target_redemption_forward.py +0 -0
  278. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_target_redemption_note.py +0 -0
  279. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/product/option/fx_vanilla_option.py +0 -0
  280. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/report/__init__.py +0 -0
  281. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/report/fx_report.py +0 -0
  282. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/riskmeasures/__init__.py +0 -0
  283. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/riskmeasures/fx_greeks_calculator.py +0 -0
  284. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/fx/riskmeasures/vol_model_risk.py +0 -0
  285. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/__init__.py +0 -0
  286. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/engine/__init__.py +0 -0
  287. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/engine/cap_floor_engine.py +0 -0
  288. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/engine/fra_engine.py +0 -0
  289. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/engine/irs_discount_engine.py +0 -0
  290. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/engine/swaption_engine.py +0 -0
  291. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/product/__init__.py +0 -0
  292. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/product/cap_floor.py +0 -0
  293. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/product/fra.py +0 -0
  294. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/product/irs.py +0 -0
  295. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/rate/product/swaption.py +0 -0
  296. {quantark-0.2.4 → quantark-0.2.5}/quantark/asset/vol_model_risk.py +0 -0
  297. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/__init__.py +0 -0
  298. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/base.py +0 -0
  299. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/credit/__init__.py +0 -0
  300. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/credit/config.py +0 -0
  301. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/credit/engine.py +0 -0
  302. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/credit/results.py +0 -0
  303. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/dashboard.py +0 -0
  304. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/__init__.py +0 -0
  305. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/config.py +0 -0
  306. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/engine.py +0 -0
  307. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/hedge_executor.py +0 -0
  308. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/metrics.py +0 -0
  309. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/multi_hedge_executor.py +0 -0
  310. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/results.py +0 -0
  311. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/equity/state.py +0 -0
  312. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/examples/__init__.py +0 -0
  313. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/examples/advanced_backtest.py +0 -0
  314. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/examples/basic_delta_hedge.py +0 -0
  315. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/examples/fi_dv01_hedge.py +0 -0
  316. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fi/__init__.py +0 -0
  317. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fi/config.py +0 -0
  318. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fi/engine.py +0 -0
  319. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fi/hedge_executor.py +0 -0
  320. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fi/metrics.py +0 -0
  321. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fi/results.py +0 -0
  322. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fi/state.py +0 -0
  323. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fx/__init__.py +0 -0
  324. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fx/config.py +0 -0
  325. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fx/engine.py +0 -0
  326. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/fx/results.py +0 -0
  327. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/logger.py +0 -0
  328. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/__init__.py +0 -0
  329. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/_replay.py +0 -0
  330. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/book_engine.py +0 -0
  331. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/config.py +0 -0
  332. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/dashboard.py +0 -0
  333. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/engine.py +0 -0
  334. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/engine_factory.py +0 -0
  335. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/market.py +0 -0
  336. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/results.py +0 -0
  337. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/otc/state.py +0 -0
  338. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/report_generator.py +0 -0
  339. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/__init__.py +0 -0
  340. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/barrier_trigger_strategy.py +0 -0
  341. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/base_strategy.py +0 -0
  342. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/convexity_neutral_strategy.py +0 -0
  343. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/credit_spread_neutral_strategy.py +0 -0
  344. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/delta_neutral_strategy.py +0 -0
  345. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/dv01_neutral_strategy.py +0 -0
  346. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/fx_delta_neutral_strategy.py +0 -0
  347. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/hedge_instruments.py +0 -0
  348. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/hedge_optimizer.py +0 -0
  349. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/min_variance_delta_strategy.py +0 -0
  350. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/multi_greek_strategy.py +0 -0
  351. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/scenario_hedge_strategy.py +0 -0
  352. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/scenarios.py +0 -0
  353. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/semi_static_strategy.py +0 -0
  354. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/triggered_hedge_strategy.py +0 -0
  355. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/strategy/whalley_wilmott_strategy.py +0 -0
  356. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/transaction_costs.py +0 -0
  357. {quantark-0.2.4 → quantark-0.2.5}/quantark/backtest/visualizer.py +0 -0
  358. {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/__init__.py +0 -0
  359. {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/accrual_leg.py +0 -0
  360. {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/autocallable_leg.py +0 -0
  361. {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/base.py +0 -0
  362. {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/base_amount.py +0 -0
  363. {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/deterministic_leg.py +0 -0
  364. {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/event_distribution.py +0 -0
  365. {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/fixed_payoff_leg.py +0 -0
  366. {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/leg_schedule.py +0 -0
  367. {quantark-0.2.4 → quantark-0.2.5}/quantark/cashleg/leg_valuator.py +0 -0
  368. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/__init__.py +0 -0
  369. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/base.py +0 -0
  370. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/config.py +0 -0
  371. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/credit/__init__.py +0 -0
  372. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/credit/config.py +0 -0
  373. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/credit/engine.py +0 -0
  374. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/credit/path_library.py +0 -0
  375. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/engine.py +0 -0
  376. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/equity/__init__.py +0 -0
  377. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fi/__init__.py +0 -0
  378. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fi/config.py +0 -0
  379. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fi/engine.py +0 -0
  380. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fi/results.py +0 -0
  381. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fx/__init__.py +0 -0
  382. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fx/config.py +0 -0
  383. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fx/engine.py +0 -0
  384. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/fx/path_library.py +0 -0
  385. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/lifecycle_manager.py +0 -0
  386. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/path/__init__.py +0 -0
  387. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/path/day_path.py +0 -0
  388. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/path/fi_path_library.py +0 -0
  389. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/path/path_builder.py +0 -0
  390. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/path/path_library.py +0 -0
  391. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/report/__init__.py +0 -0
  392. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/report/dynamic_report.py +0 -0
  393. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/report/visualizer.py +0 -0
  394. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/results/__init__.py +0 -0
  395. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/results/dynamic_results.py +0 -0
  396. {quantark-0.2.4 → quantark-0.2.5}/quantark/dynamicscenario/results/result_exporter.py +0 -0
  397. {quantark-0.2.4 → quantark-0.2.5}/quantark/montecarlo/__init__.py +0 -0
  398. {quantark-0.2.4 → quantark-0.2.5}/quantark/montecarlo/qmc_brownian_bridge.py +0 -0
  399. {quantark-0.2.4 → quantark-0.2.5}/quantark/montecarlo/qmc_rqmc_driver.py +0 -0
  400. {quantark-0.2.4 → quantark-0.2.5}/quantark/montecarlo/qmc_sobol.py +0 -0
  401. {quantark-0.2.4 → quantark-0.2.5}/quantark/montecarlo/qmc_variance_reduction.py +0 -0
  402. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/__init__.py +0 -0
  403. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/basis/__init__.py +0 -0
  404. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/basis/basis_yield.py +0 -0
  405. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/credit/__init__.py +0 -0
  406. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/credit/ajd_hazard_curve.py +0 -0
  407. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/credit/hazard_curve.py +0 -0
  408. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/div/__init__.py +0 -0
  409. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/div/dividend_yield.py +0 -0
  410. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/index/__init__.py +0 -0
  411. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/index/rate_index.py +0 -0
  412. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/quote/__init__.py +0 -0
  413. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/quote/spot_quote.py +0 -0
  414. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/rrf/__init__.py +0 -0
  415. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/rrf/rate_curve.py +0 -0
  416. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/__init__.py +0 -0
  417. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/collapse_guard.py +0 -0
  418. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/sabr/__init__.py +0 -0
  419. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/sabr/calibration.py +0 -0
  420. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/sabr/diagnostics.py +0 -0
  421. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/sabr/hagan.py +0 -0
  422. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/sabr/sabr_surface.py +0 -0
  423. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vannavolga/__init__.py +0 -0
  424. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vannavolga/bs_fx.py +0 -0
  425. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vannavolga/market_conventions.py +0 -0
  426. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vannavolga/smile_builder.py +0 -0
  427. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vannavolga/vv_core.py +0 -0
  428. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vannavolga/vv_surface.py +0 -0
  429. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vannavolga/vv_term_structure.py +0 -0
  430. {quantark-0.2.4 → quantark-0.2.5}/quantark/param/vol/vol_surface.py +0 -0
  431. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/__init__.py +0 -0
  432. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/base.py +0 -0
  433. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/credit/__init__.py +0 -0
  434. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/credit/portfolio.py +0 -0
  435. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/credit/position.py +0 -0
  436. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/equity/__init__.py +0 -0
  437. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/equity/portfolio.py +0 -0
  438. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/equity/position.py +0 -0
  439. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/equity/swap_position.py +0 -0
  440. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/fi/__init__.py +0 -0
  441. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/fi/portfolio.py +0 -0
  442. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/fi/position.py +0 -0
  443. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/fx/__init__.py +0 -0
  444. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/fx/portfolio.py +0 -0
  445. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/fx/position.py +0 -0
  446. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/portfolio_snapshot.py +0 -0
  447. {quantark-0.2.4 → quantark-0.2.5}/quantark/portfolio/portfolio_storage.py +0 -0
  448. {quantark-0.2.4 → quantark-0.2.5}/quantark/priceenv/__init__.py +0 -0
  449. {quantark-0.2.4 → quantark-0.2.5}/quantark/priceenv/credit_pricing_environment.py +0 -0
  450. {quantark-0.2.4 → quantark-0.2.5}/quantark/priceenv/fx_pricing_environment.py +0 -0
  451. {quantark-0.2.4 → quantark-0.2.5}/quantark/priceenv/pricing_environment.py +0 -0
  452. {quantark-0.2.4 → quantark-0.2.5}/quantark/rfq/__init__.py +0 -0
  453. {quantark-0.2.4 → quantark-0.2.5}/quantark/rfq/builders.py +0 -0
  454. {quantark-0.2.4 → quantark-0.2.5}/quantark/rfq/models.py +0 -0
  455. {quantark-0.2.4 → quantark-0.2.5}/quantark/rfq/registry.py +0 -0
  456. {quantark-0.2.4 → quantark-0.2.5}/quantark/rfq/service.py +0 -0
  457. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/__init__.py +0 -0
  458. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/calculator.py +0 -0
  459. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/dashboard.py +0 -0
  460. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/__init__.py +0 -0
  461. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/addons/__init__.py +0 -0
  462. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/addons/base.py +0 -0
  463. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/addons/commodity.py +0 -0
  464. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/addons/credit.py +0 -0
  465. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/addons/equity.py +0 -0
  466. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/addons/fx.py +0 -0
  467. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/addons/interest_rate.py +0 -0
  468. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/maths.py +0 -0
  469. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/pfe.py +0 -0
  470. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/engines/replacement_cost.py +0 -0
  471. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/models/__init__.py +0 -0
  472. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/models/enums.py +0 -0
  473. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/models/netting_set.py +0 -0
  474. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/models/trade.py +0 -0
  475. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/parameters/__init__.py +0 -0
  476. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/parameters/supervisory.py +0 -0
  477. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/results/__init__.py +0 -0
  478. {quantark-0.2.4 → quantark-0.2.5}/quantark/saccr/results/result.py +0 -0
  479. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/__init__.py +0 -0
  480. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/calculator.py +0 -0
  481. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/cva/__init__.py +0 -0
  482. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/cva/engine.py +0 -0
  483. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/dashboard.py +0 -0
  484. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/__init__.py +0 -0
  485. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/base.py +0 -0
  486. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/commodity.py +0 -0
  487. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/correlations.py +0 -0
  488. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/counterparty_credit.py +0 -0
  489. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/equity.py +0 -0
  490. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/fx.py +0 -0
  491. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/interest_rate.py +0 -0
  492. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/engines/reference_credit.py +0 -0
  493. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/__init__.py +0 -0
  494. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/asof.py +0 -0
  495. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/correlation.py +0 -0
  496. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/curves.py +0 -0
  497. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/engine.py +0 -0
  498. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/grid.py +0 -0
  499. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/historical/__init__.py +0 -0
  500. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/historical/calibration.py +0 -0
  501. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/historical/engine.py +0 -0
  502. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/historical/path_generator.py +0 -0
  503. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/historical/pfe.py +0 -0
  504. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/historical/resampling.py +0 -0
  505. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/paths.py +0 -0
  506. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/phoenix_surface.py +0 -0
  507. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/repricer.py +0 -0
  508. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/simulator.py +0 -0
  509. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/snowball_surface.py +0 -0
  510. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/statemachine.py +0 -0
  511. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/exposure/value_surface.py +0 -0
  512. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/models/__init__.py +0 -0
  513. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/models/enums.py +0 -0
  514. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/models/portfolio.py +0 -0
  515. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/models/sensitivity.py +0 -0
  516. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/parameters/__init__.py +0 -0
  517. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/parameters/supervisory.py +0 -0
  518. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/portfolio/__init__.py +0 -0
  519. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/portfolio/counterparty.py +0 -0
  520. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/portfolio/credit_curve.py +0 -0
  521. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/portfolio/netting.py +0 -0
  522. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/portfolio/trade.py +0 -0
  523. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/portfolio/trade_portfolio.py +0 -0
  524. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/results/__init__.py +0 -0
  525. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/results/result.py +0 -0
  526. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/sacva_engine.py +0 -0
  527. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/sensitivities/__init__.py +0 -0
  528. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/sensitivities/curve_bump.py +0 -0
  529. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/sensitivities/engine.py +0 -0
  530. {quantark-0.2.4 → quantark-0.2.5}/quantark/sacva/sensitivities/shifts.py +0 -0
  531. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/__init__.py +0 -0
  532. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/__init__.py +0 -0
  533. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/accessors.py +0 -0
  534. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/commodity.py +0 -0
  535. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/credit_non_qualifying.py +0 -0
  536. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/credit_qualifying.py +0 -0
  537. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/cross_risk.py +0 -0
  538. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/equity.py +0 -0
  539. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/fx.py +0 -0
  540. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/ir.py +0 -0
  541. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/calibration/version.py +0 -0
  542. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/config.py +0 -0
  543. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/crif/__init__.py +0 -0
  544. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/crif/models.py +0 -0
  545. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/crif/parser.py +0 -0
  546. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/dashboard.py +0 -0
  547. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/__init__.py +0 -0
  548. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/__init__.py +0 -0
  549. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/addon.py +0 -0
  550. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/bucket_aggregator.py +0 -0
  551. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/concentration.py +0 -0
  552. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/correlations.py +0 -0
  553. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/product_class_aggregator.py +0 -0
  554. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/risk_class_aggregator.py +0 -0
  555. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/simm_calculator.py +0 -0
  556. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/aggregation/weighted_sensitivity.py +0 -0
  557. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/base.py +0 -0
  558. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/classification/__init__.py +0 -0
  559. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/classification/bucket_mapper.py +0 -0
  560. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/factory.py +0 -0
  561. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/portfolio_adapter.py +0 -0
  562. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/result.py +0 -0
  563. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/risk_class/__init__.py +0 -0
  564. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/risk_class/equity_engine.py +0 -0
  565. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/risk_class/ir_engine.py +0 -0
  566. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/engines/risk_class/provider_engine.py +0 -0
  567. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/market_data.py +0 -0
  568. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/report/__init__.py +0 -0
  569. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/report/crif_export.py +0 -0
  570. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/report/excel_generator.py +0 -0
  571. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/report/html_generator.py +0 -0
  572. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/results/__init__.py +0 -0
  573. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/results/attribution.py +0 -0
  574. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/results/simm_result.py +0 -0
  575. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/results/whatif.py +0 -0
  576. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/sensitivity.py +0 -0
  577. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/taxonomy.py +0 -0
  578. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/template/__init__.py +0 -0
  579. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/template/xlsx_loader.py +0 -0
  580. {quantark-0.2.4 → quantark-0.2.5}/quantark/simm/template/xlsx_template.py +0 -0
  581. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/__init__.py +0 -0
  582. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/base.py +0 -0
  583. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/config.py +0 -0
  584. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/credit/__init__.py +0 -0
  585. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/credit/config.py +0 -0
  586. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/credit/credit_stress_applicator.py +0 -0
  587. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/credit/engine.py +0 -0
  588. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/engine.py +0 -0
  589. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/equity/__init__.py +0 -0
  590. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/equity/config.py +0 -0
  591. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/equity/engine.py +0 -0
  592. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/equity/report/__init__.py +0 -0
  593. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/equity/report/report_generator.py +0 -0
  594. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/equity/report/visualizer.py +0 -0
  595. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/equity/results.py +0 -0
  596. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fi/__init__.py +0 -0
  597. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fi/config.py +0 -0
  598. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fi/engine.py +0 -0
  599. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fi/metrics.py +0 -0
  600. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fi/results.py +0 -0
  601. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fx/__init__.py +0 -0
  602. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fx/config.py +0 -0
  603. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fx/engine.py +0 -0
  604. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/fx/fx_stress_applicator.py +0 -0
  605. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/report/__init__.py +0 -0
  606. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/report/report_generator.py +0 -0
  607. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/report/visualizer.py +0 -0
  608. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/results/__init__.py +0 -0
  609. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/results/result_aggregator.py +0 -0
  610. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/results/result_exporter.py +0 -0
  611. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/results/stress_results.py +0 -0
  612. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/scenario/__init__.py +0 -0
  613. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/scenario/scenario.py +0 -0
  614. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/scenario/scenario_builder.py +0 -0
  615. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/scenario/scenario_library.py +0 -0
  616. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/scenario/scenario_storage.py +0 -0
  617. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/stress/__init__.py +0 -0
  618. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/stress/stress_applicator.py +0 -0
  619. {quantark-0.2.4 → quantark-0.2.5}/quantark/stresstest/stress/stress_types.py +0 -0
  620. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/__init__.py +0 -0
  621. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/barrier_shift.py +0 -0
  622. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/calendar/__init__.py +0 -0
  623. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/calendar/business_calendar.py +0 -0
  624. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/calendar/day_counter.py +0 -0
  625. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/calendar/holidayfile/china.csv +0 -0
  626. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/calendar/holidayfile/china_sse.csv +0 -0
  627. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/__init__.py +0 -0
  628. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/bond_enums.py +0 -0
  629. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/deltaone_enums.py +0 -0
  630. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/engine_enums.py +0 -0
  631. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/fx_enums.py +0 -0
  632. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/greek_conventions.py +0 -0
  633. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/greeks_enums.py +0 -0
  634. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/enum/option_enums.py +0 -0
  635. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/exceptions.py +0 -0
  636. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/__init__.py +0 -0
  637. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/adapter/base_adapter.py +0 -0
  638. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/adapter/mock_adapter.py +0 -0
  639. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/converter.py +0 -0
  640. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/example_usage.py +0 -0
  641. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/generator/__init__.py +0 -0
  642. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/generator/mock_generator.py +0 -0
  643. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/models.py +0 -0
  644. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/storage/__init__.py +0 -0
  645. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/marketdata/storage/parquet_storage.py +0 -0
  646. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/numerical/__init__.py +0 -0
  647. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/numerical/comparison.py +0 -0
  648. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/numerical/constants.py +0 -0
  649. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/numerical/formatting.py +0 -0
  650. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/numerical/pnl.py +0 -0
  651. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/numerical/safe_math.py +0 -0
  652. {quantark-0.2.4 → quantark-0.2.5}/quantark/util/numerical/validation.py +0 -0
  653. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/__init__.py +0 -0
  654. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/attribution.py +0 -0
  655. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/backtest/__init__.py +0 -0
  656. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/backtest/var_backtester.py +0 -0
  657. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/base.py +0 -0
  658. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/config.py +0 -0
  659. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/credit/__init__.py +0 -0
  660. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/credit/config.py +0 -0
  661. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/credit/engine.py +0 -0
  662. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/credit/revaluation.py +0 -0
  663. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/engines/__init__.py +0 -0
  664. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/engines/historical.py +0 -0
  665. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/engines/monte_carlo.py +0 -0
  666. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/engines/parametric.py +0 -0
  667. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/fx/__init__.py +0 -0
  668. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/fx/config.py +0 -0
  669. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/fx/engine.py +0 -0
  670. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/fx/revaluation.py +0 -0
  671. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/results/__init__.py +0 -0
  672. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/results/incremental_var_result.py +0 -0
  673. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/results/var_report.py +0 -0
  674. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/results/var_result.py +0 -0
  675. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/risk_factors/__init__.py +0 -0
  676. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/risk_factors/base.py +0 -0
  677. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/risk_factors/equity_factors.py +0 -0
  678. {quantark-0.2.4 → quantark-0.2.5}/quantark/var/risk_factors/fi_factors.py +0 -0
  679. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/__init__.py +0 -0
  680. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/black_scholes.py +0 -0
  681. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/curves.py +0 -0
  682. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/heston/__init__.py +0 -0
  683. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/heston/analytical_kernel.py +0 -0
  684. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/heston/calibration.py +0 -0
  685. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/heston/mc_kernel.py +0 -0
  686. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/heston/params.py +0 -0
  687. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/heston/pde_kernel.py +0 -0
  688. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/localvol/__init__.py +0 -0
  689. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/localvol/dupire.py +0 -0
  690. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/localvol/mc_kernel.py +0 -0
  691. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/localvol/pde_kernel.py +0 -0
  692. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/localvol/surface.py +0 -0
  693. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/risk/__init__.py +0 -0
  694. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/risk/contracts.py +0 -0
  695. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/risk/scenarios.py +0 -0
  696. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/__init__.py +0 -0
  697. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/fokkerplanck/__init__.py +0 -0
  698. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/fokkerplanck/bootstrap.py +0 -0
  699. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/fokkerplanck/calibration.py +0 -0
  700. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/fokkerplanck/config.py +0 -0
  701. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/fokkerplanck/coordinates.py +0 -0
  702. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/fokkerplanck/fp_operators.py +0 -0
  703. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/fokkerplanck/fp_solver.py +0 -0
  704. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/leverage.py +0 -0
  705. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/slv_mc_kernel.py +0 -0
  706. {quantark-0.2.4 → quantark-0.2.5}/quantark/volmodels/slv/slv_pde_kernel.py +0 -0
  707. {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.4
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "quantark"
7
- version = "0.2.4"
7
+ version = "0.2.5"
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.4"
3
+ __version__ = "0.2.5"
@@ -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 < params.rannacher_steps:
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, Optional, Set
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
- def __init__(self, params: Optional[PDEParams] = None):
45
- """
46
- Initialize barrier option PDE solver.
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
- @staticmethod
62
- def _current_time(total_tau: float, tau_remaining: float) -> float:
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
- # Setup observation time indices for discrete monitoring
614
- self._total_tau = tau
615
- self._observation_indices.clear()
616
- self._schedule_records.clear()
617
- self._schedule_aggregation = ObservationAggregation.STOP_FIRST_HIT
618
- self._terminal_schedule_records = []
619
- self._has_terminal_observation = False
620
-
621
- schedule = getattr(product, "observation_schedule", None)
622
- if schedule is not None:
623
- resolved_records = schedule.resolve(
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) - np.min(dx_vec)) < 1e-10:
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 smoothing at events
863
- smooth_js = set()
864
- if params.use_rannacher and params.auto_grid and params.rannacher_at_events:
865
- for et in self._get_event_times(product, tau) or []:
866
- idx = int(np.argmin(np.abs(t_vec - et)))
867
- if 0 < idx < num_t - 1 and is_close(float(t_vec[idx]), float(et)):
868
- smooth_js.update(
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
- steps_from_end = num_t - 1 - j
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
- # Find nearest grid points
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
- # Local grid spacing
1022
- dx_left = x_vec[idx] - x_vec[idx - 1]
1023
- dx_right = x_vec[idx + 1] - x_vec[idx]
1024
- dx_avg = (dx_left + dx_right) / 2.0
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
- # Central differences for derivatives in log-space
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
- # Convert to price-space derivatives
1031
- delta = dv_dx / spot
1032
- gamma = (d2v_dx2 - dv_dx) / (spot**2)
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
- return delta, gamma
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
  """