optPricing 2.3.1__tar.gz → 2.3.3__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.
- optpricing-2.3.3/.coveragerc +4 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/.gitignore +2 -1
- optpricing-2.3.3/PKG-INFO +216 -0
- optpricing-2.3.3/README.md +168 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/codecov.yml +2 -0
- optpricing-2.3.3/docs/guide/API.md +127 -0
- optpricing-2.3.3/docs/guide/CLI.md +150 -0
- optpricing-2.3.3/docs/guide/dashboard.md +53 -0
- optpricing-2.3.3/docs/guide/examples.md +66 -0
- optpricing-2.3.3/docs/guide/getting_started.md +133 -0
- optpricing-2.3.3/docs/guide/installation.md +61 -0
- optpricing-2.3.3/docs/guide/introduction.md +23 -0
- optpricing-2.3.3/docs/index.md +45 -0
- optpricing-2.3.3/docs/reference/atoms/index.md +7 -0
- optpricing-2.3.3/docs/reference/calibration/index.md +7 -0
- optpricing-2.3.3/docs/reference/cli/index.md +8 -0
- optpricing-2.3.3/docs/reference/dashboard/index.md +6 -0
- optpricing-2.3.3/docs/reference/data/index.md +6 -0
- optpricing-2.3.3/docs/reference/index.md +77 -0
- optpricing-2.3.3/docs/reference/models/index.md +9 -0
- optpricing-2.3.3/docs/reference/parity/index.md +5 -0
- optpricing-2.3.3/docs/reference/techniques/index.md +6 -0
- optpricing-2.3.3/docs/reference/workflows/index.md +6 -0
- optpricing-2.3.3/mkdocs.yml +87 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/pyproject.toml +2 -2
- optpricing-2.3.3/src/optpricing/cli/__init__.py +10 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/dashboard/__init__.py +1 -1
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/__init__.py +1 -1
- optpricing-2.3.3/src/optpricing.egg-info/PKG-INFO +216 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing.egg-info/SOURCES.txt +5 -75
- optpricing-2.3.1/PKG-INFO +0 -109
- optpricing-2.3.1/README.md +0 -61
- optpricing-2.3.1/docs/guide/dashboard.md +0 -45
- optpricing-2.3.1/docs/guide/getting_started.md +0 -218
- optpricing-2.3.1/docs/guide/installation.md +0 -33
- optpricing-2.3.1/docs/guide/introduction.md +0 -35
- optpricing-2.3.1/docs/index.md +0 -19
- optpricing-2.3.1/docs/reference/atoms/bond.md +0 -3
- optpricing-2.3.1/docs/reference/atoms/index.md +0 -8
- optpricing-2.3.1/docs/reference/atoms/option.md +0 -11
- optpricing-2.3.1/docs/reference/atoms/rate.md +0 -3
- optpricing-2.3.1/docs/reference/atoms/stock.md +0 -3
- optpricing-2.3.1/docs/reference/calibration/calibrator.md +0 -3
- optpricing-2.3.1/docs/reference/calibration/fit_jump_parameters.md +0 -3
- optpricing-2.3.1/docs/reference/calibration/fit_market_params.md +0 -11
- optpricing-2.3.1/docs/reference/calibration/index.md +0 -9
- optpricing-2.3.1/docs/reference/calibration/iv_surface.md +0 -3
- optpricing-2.3.1/docs/reference/calibration/technique_selector.md +0 -3
- optpricing-2.3.1/docs/reference/calibration/vectorized_bsm_iv.md +0 -3
- optpricing-2.3.1/docs/reference/calibration/vectorized_integration_iv.md +0 -3
- optpricing-2.3.1/docs/reference/calibration/vectorized_pricer.md +0 -3
- optpricing-2.3.1/docs/reference/cli/backtest.md +0 -5
- optpricing-2.3.1/docs/reference/cli/calibrate.md +0 -5
- optpricing-2.3.1/docs/reference/cli/dashboard.md +0 -3
- optpricing-2.3.1/docs/reference/cli/data.md +0 -5
- optpricing-2.3.1/docs/reference/cli/demo.md +0 -6
- optpricing-2.3.1/docs/reference/cli/index.md +0 -17
- optpricing-2.3.1/docs/reference/cli/price.md +0 -5
- optpricing-2.3.1/docs/reference/cli/tools.md +0 -5
- optpricing-2.3.1/docs/reference/dashboard/Home.md +0 -3
- optpricing-2.3.1/docs/reference/dashboard/index.md +0 -14
- optpricing-2.3.1/docs/reference/dashboard/pages/1_Pricer_and_Greeks.md +0 -3
- optpricing-2.3.1/docs/reference/dashboard/pages/2_Calibration_and_IV.md +0 -3
- optpricing-2.3.1/docs/reference/dashboard/pages/3_Market_Analytics.md +0 -3
- optpricing-2.3.1/docs/reference/dashboard/pages/4_Model_Fitting.md +0 -3
- optpricing-2.3.1/docs/reference/dashboard/pages/5_Term_Structure.md +0 -3
- optpricing-2.3.1/docs/reference/dashboard/plots.md +0 -11
- optpricing-2.3.1/docs/reference/dashboard/service.md +0 -5
- optpricing-2.3.1/docs/reference/dashboard/widgets.md +0 -7
- optpricing-2.3.1/docs/reference/data/historical_manager.md +0 -3
- optpricing-2.3.1/docs/reference/data/index.md +0 -6
- optpricing-2.3.1/docs/reference/data/market_data_manager.md +0 -3
- optpricing-2.3.1/docs/reference/models/base/base_model.md +0 -3
- optpricing-2.3.1/docs/reference/models/base/index.md +0 -6
- optpricing-2.3.1/docs/reference/models/base/validators.md +0 -3
- optpricing-2.3.1/docs/reference/models/bates.md +0 -3
- optpricing-2.3.1/docs/reference/models/blacks_approx.md +0 -3
- optpricing-2.3.1/docs/reference/models/bsm.md +0 -3
- optpricing-2.3.1/docs/reference/models/cev.md +0 -3
- optpricing-2.3.1/docs/reference/models/cgmy.md +0 -3
- optpricing-2.3.1/docs/reference/models/cir.md +0 -3
- optpricing-2.3.1/docs/reference/models/dupire_local.md +0 -3
- optpricing-2.3.1/docs/reference/models/heston.md +0 -3
- optpricing-2.3.1/docs/reference/models/hyperbolic.md +0 -3
- optpricing-2.3.1/docs/reference/models/index.md +0 -12
- optpricing-2.3.1/docs/reference/models/kou.md +0 -3
- optpricing-2.3.1/docs/reference/models/merton_jump.md +0 -3
- optpricing-2.3.1/docs/reference/models/nig.md +0 -3
- optpricing-2.3.1/docs/reference/models/perpetual_put.md +0 -3
- optpricing-2.3.1/docs/reference/models/sabr.md +0 -3
- optpricing-2.3.1/docs/reference/models/sabr_jump.md +0 -3
- optpricing-2.3.1/docs/reference/models/vasicek.md +0 -3
- optpricing-2.3.1/docs/reference/models/vg.md +0 -3
- optpricing-2.3.1/docs/reference/parity/implied_rate.md +0 -3
- optpricing-2.3.1/docs/reference/parity/index.md +0 -6
- optpricing-2.3.1/docs/reference/parity/parity_model.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/american_monte_carlo.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/base/base_technique.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/base/greek_mixin.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/base/index.md +0 -10
- optpricing-2.3.1/docs/reference/techniques/base/iv_mixin.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/base/lattice_technique.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/base/pricing_result.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/base/random_utils.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/closed_form.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/crr.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/fft.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/index.md +0 -13
- optpricing-2.3.1/docs/reference/techniques/integration.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/kernels/american_mc_kernels.md +0 -5
- optpricing-2.3.1/docs/reference/techniques/kernels/index.md +0 -6
- optpricing-2.3.1/docs/reference/techniques/kernels/lattice_kernels.md +0 -5
- optpricing-2.3.1/docs/reference/techniques/kernels/mc_kernels.md +0 -5
- optpricing-2.3.1/docs/reference/techniques/kernels/path_kernels.md +0 -5
- optpricing-2.3.1/docs/reference/techniques/leisen_reimer.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/monte_carlo.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/pde.md +0 -3
- optpricing-2.3.1/docs/reference/techniques/topm.md +0 -3
- optpricing-2.3.1/docs/reference/workflows/backtest_workflow.md +0 -3
- optpricing-2.3.1/docs/reference/workflows/daily_workflow.md +0 -3
- optpricing-2.3.1/docs/reference/workflows/index.md +0 -10
- optpricing-2.3.1/mkdocs.yml +0 -169
- optpricing-2.3.1/src/optpricing/cli/__init__.py +0 -10
- optpricing-2.3.1/src/optpricing.egg-info/PKG-INFO +0 -109
- {optpricing-2.3.1 → optpricing-2.3.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/.github/workflows/ci.yml +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/.github/workflows/pages.yml +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/.github/workflows/publish.yml +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/.pre-commit-config.yaml +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/CHANGELOG.md +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/CODE_OF_CONDUCT.md +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/CONTRIBUTING.md +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/LICENSE +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/MANIFEST.in +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/PULL_REQUEST_TEMPLATE.md +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/SECURITY.md +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/backtest_logs/SPY_backtest_2025-06-17.csv +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/backtest_logs/SPY_backtest_2025-07-07.csv +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/backtest_logs/SPY_backtest_2025-07-09.csv +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/calibrated_params/SPY_BSM_2023-01-01.json +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/calibrated_params/SPY_BSM_2025-06-17.json +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/calibrated_params/SPY_BSM_2025-07-03.json +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/calibrated_params/SPY_BSM_2025-07-07.json +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/calibrated_params/SPY_BSM_2025-07-08.json +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/calibrated_params/SPY_BSM_2025-07-09.json +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/calibrated_params/SPY_Black-Scholes_2025-06-17.json +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/calibrated_params/SPY_Merton_2025-06-17.json +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/calibrated_params/SPY_Merton_2025-07-03.json +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/calibrated_params/SPY_Merton_2025-07-07.json +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/calibrated_params/SPY_Merton_2025-07-08.json +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/calibrated_params/SPY_Merton_2025-07-09.json +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/artifacts/calibration_logs/SPY_evaluation_2025-06-16.csv +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/config.yaml +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/AAPL_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/AMC_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/AMD_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/AMZN_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/BAC_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/BA_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/CAT_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/CVX_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/GME_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/GOOGL_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/GS_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/HD_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/JNJ_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/JPM_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/META_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/MSFT_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/NKE_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/NVDA_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/PFE_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/QQQ_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/SPY_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/SPY_5y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/TSLA_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/UNH_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/WMT_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/historical_data/XOM_10y_returns.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AAPL_2025-06-16.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AAPL_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AAPL_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AAPL_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AAPL_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AAPL_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AAPL_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AAPL_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMC_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMC_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMC_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMC_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMC_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMC_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMC_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMD_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMD_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMD_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMD_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMD_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMD_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMD_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMZN_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMZN_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMZN_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMZN_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMZN_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMZN_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/AMZN_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/BAC_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/BAC_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/BAC_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/BAC_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/BAC_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/BAC_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/BAC_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/BA_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/BA_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/BA_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/BA_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/BA_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/BA_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/BA_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/CAT_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/CAT_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/CAT_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/CAT_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/CAT_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/CAT_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/CAT_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/CVX_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/CVX_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/CVX_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/CVX_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/CVX_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/CVX_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/CVX_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GME_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GME_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GME_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GME_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GME_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GME_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GME_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GOOGL_2025-06-16.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GOOGL_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GOOGL_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GOOGL_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GOOGL_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GOOGL_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GOOGL_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GOOGL_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GS_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GS_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GS_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GS_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GS_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GS_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/GS_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/HD_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/HD_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/HD_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/HD_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/HD_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/HD_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/HD_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/JNJ_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/JNJ_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/JNJ_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/JNJ_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/JNJ_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/JNJ_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/JNJ_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/JPM_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/JPM_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/JPM_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/JPM_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/JPM_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/JPM_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/JPM_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/META_2025-06-16.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/META_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/META_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/META_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/META_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/META_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/META_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/META_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/MSFT_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/MSFT_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/MSFT_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/MSFT_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/MSFT_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/MSFT_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/MSFT_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/NKE_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/NKE_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/NKE_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/NKE_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/NKE_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/NKE_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/NKE_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/NVDA_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/NVDA_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/NVDA_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/NVDA_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/NVDA_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/NVDA_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/NVDA_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/PFE_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/PFE_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/PFE_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/PFE_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/PFE_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/PFE_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/PFE_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/QQQ_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/QQQ_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/QQQ_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/QQQ_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/QQQ_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/QQQ_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/QQQ_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/SPY_2025-06-16.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/SPY_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/SPY_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/SPY_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/SPY_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/SPY_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/SPY_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/SPY_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/TSLA_2025-06-16.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/TSLA_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/TSLA_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/TSLA_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/TSLA_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/TSLA_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/TSLA_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/TSLA_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/UNH_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/UNH_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/UNH_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/UNH_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/UNH_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/UNH_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/UNH_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/WMT_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/WMT_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/WMT_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/WMT_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/WMT_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/WMT_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/WMT_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/XOM_2025-06-17.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/XOM_2025-06-26.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/XOM_2025-07-02.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/XOM_2025-07-03.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/XOM_2025-07-07.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/XOM_2025-07-08.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/data/market_data_snapshots/XOM_2025-07-09.parquet +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/docs/images/bates.png +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/docs/images/calibration.png +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/docs/images/fit_jump.png +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/docs/images/zcb.png +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/examples/american_options_benchmark.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/examples/european_options_benchmark.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/examples/getting_started.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/examples/rate_models_benchmark.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/setup.cfg +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/__init__.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/atoms/__init__.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/atoms/bond.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/atoms/option.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/atoms/rate.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/atoms/stock.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/calibration/__init__.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/calibration/calibrator.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/calibration/fit_jump_parameters.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/calibration/fit_market_params.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/calibration/iv_surface.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/calibration/technique_selector.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/calibration/vectorized_bsm_iv.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/calibration/vectorized_integration_iv.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/calibration/vectorized_pricer.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/cli/commands/__init__.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/cli/commands/backtest.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/cli/commands/calibrate.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/cli/commands/dashboard.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/cli/commands/data.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/cli/commands/demo.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/cli/commands/price.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/cli/commands/tools.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/cli/main.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/config.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/dashboard/Home.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/dashboard/pages/1_Pricer_and_Greeks.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/dashboard/pages/2_Calibration_and_IV.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/dashboard/pages/3_Market_Analytics.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/dashboard/pages/4_Model_Fitting.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/dashboard/pages/5_Term_Structure.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/dashboard/pages/__init__.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/dashboard/plots.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/dashboard/service.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/dashboard/widgets.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/data/__init__.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/data/historical_manager.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/data/market_data_manager.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/base/__init__.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/base/base_model.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/base/validators.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/bates.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/blacks_approx.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/bsm.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/cev.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/cgmy.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/cir.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/dupire_local.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/heston.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/hyperbolic.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/kou.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/merton_jump.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/nig.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/perpetual_put.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/sabr.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/sabr_jump.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/vasicek.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/models/vg.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/parity/__init__.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/parity/implied_rate.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/parity/parity_model.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/__init__.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/american_monte_carlo.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/base/__init__.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/base/base_technique.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/base/greek_mixin.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/base/iv_mixin.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/base/lattice_technique.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/base/pricing_result.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/base/random_utils.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/closed_form.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/crr.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/fft.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/integration.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/kernels/__init__.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/kernels/american_mc_kernels.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/kernels/lattice_kernels.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/kernels/mc_kernels.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/kernels/path_kernels.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/leisen_reimer.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/monte_carlo.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/pde.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/techniques/topm.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/__init__.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/backtest_workflow.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/configs/__init__.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/configs/bates_config.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/configs/bsm_config.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/configs/cev_config.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/configs/cgmy_config.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/configs/heston_config.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/configs/hyperbolic_config.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/configs/kou_config.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/configs/merton_config.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/configs/nig_config.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/configs/sabr_config.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/configs/sabr_jump_config.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/configs/vg_config.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing/workflows/daily_workflow.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing.egg-info/dependency_links.txt +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing.egg-info/entry_points.txt +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing.egg-info/requires.txt +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/src/optpricing.egg-info/top_level.txt +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/atoms/test_bond.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/atoms/test_option.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/atoms/test_rate.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/atoms/test_stock.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/calibration/test_calibrator.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/calibration/test_fit_jump_parameters.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/calibration/test_fit_market_params.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/calibration/test_iv_surface.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/calibration/test_technique_selector.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/calibration/test_vectorized_bsm_iv.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/calibration/test_vectorized_integration_iv.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/calibration/test_vectorized_pricer.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/cli/commands/test_backtest.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/cli/commands/test_calibrate.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/cli/commands/test_data.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/cli/commands/test_price.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/cli/commands/test_tools.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/cli/test_main.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/dashboard/test_plots.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/dashboard/test_service.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/dashboard/test_widgets.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/data/test_historical_manager.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/data/test_market_data_manager.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/base/test_base_model.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/base/test_validators.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_bates.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_blacks_approx.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_bsm.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_cev.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_cgmy.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_cir.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_dupire_local.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_heston.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_hyperbolic.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_kou.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_merton_jump.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_nig.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_perpetual_put.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_sabr.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_sabr_jump.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_vasicek.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/models/test_vg.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/parity/test_implied_rate.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/parity/test_parity_model.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/base/test_greek_mixin.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/base/test_iv_mixin.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/base/test_pricing_result.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/base/test_random_utils.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/kernels/test_lattice_kernels.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/kernels/test_mc_kernels.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/kernels/test_path_kernels.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/test_american_monte_carlo.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/test_closed_form.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/test_crr.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/test_fft.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/test_integration.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/test_leisen_reimer.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/test_monte_carlo.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/test_pde.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/techniques/test_topm.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/workflows/test_backtest_workflow.py +0 -0
- {optpricing-2.3.1 → optpricing-2.3.3}/tests/workflows/test_daily_workflow.py +0 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: optpricing
|
|
3
|
+
Version: 2.3.3
|
|
4
|
+
Summary: A financial options pricing and analysis library.
|
|
5
|
+
Author-email: Diljit Singh <first_last22@google.com>
|
|
6
|
+
License: # MIT LICENSE
|
|
7
|
+
|
|
8
|
+
Copyright 2025 Diljit Singh
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
15
|
+
|
|
16
|
+
Project-URL: Homepage, https://diljit22.github.io/quantFin/
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
19
|
+
Classifier: Operating System :: OS Independent
|
|
20
|
+
Classifier: Topic :: Office/Business :: Financial :: Investment
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Requires-Dist: numpy~=2.2.5
|
|
25
|
+
Requires-Dist: scipy~=1.15.2
|
|
26
|
+
Requires-Dist: pandas~=2.2.3
|
|
27
|
+
Requires-Dist: numba~=0.61.2
|
|
28
|
+
Requires-Dist: pyyaml~=6.0.2
|
|
29
|
+
Requires-Dist: click~=8.1
|
|
30
|
+
Requires-Dist: typer~=0.15.2
|
|
31
|
+
Requires-Dist: streamlit~=1.45.1
|
|
32
|
+
Requires-Dist: matplotlib~=3.10.1
|
|
33
|
+
Requires-Dist: plotly~=6.1.2
|
|
34
|
+
Requires-Dist: yfinance~=0.2.63
|
|
35
|
+
Requires-Dist: tabulate~=0.9.0
|
|
36
|
+
Provides-Extra: dev
|
|
37
|
+
Requires-Dist: pytest; extra == "dev"
|
|
38
|
+
Requires-Dist: pytest-cov; extra == "dev"
|
|
39
|
+
Requires-Dist: ruff==0.11.6; extra == "dev"
|
|
40
|
+
Requires-Dist: mkdocs; extra == "dev"
|
|
41
|
+
Requires-Dist: mkdocs-material; extra == "dev"
|
|
42
|
+
Requires-Dist: mkdocstrings[python]; extra == "dev"
|
|
43
|
+
Requires-Dist: mkdocs-section-index; extra == "dev"
|
|
44
|
+
Requires-Dist: line_profiler; extra == "dev"
|
|
45
|
+
Requires-Dist: pre-commit; extra == "dev"
|
|
46
|
+
Requires-Dist: codecov; extra == "dev"
|
|
47
|
+
Dynamic: license-file
|
|
48
|
+
|
|
49
|
+
# OptPricing: A Quantitative Finance Library for Derivative Pricing and Analysis
|
|
50
|
+
|
|
51
|
+
[](https://github.com/diljit22/quantfin/actions/workflows/ci.yml)
|
|
52
|
+
[](https://codecov.io/gh/diljit22/quantfin)
|
|
53
|
+
[](https://github.com/diljit22/quantfin/actions/workflows/ci.yml)
|
|
54
|
+
[](https://github.com/diljit22/quantfin/actions/workflows/ci.yml)
|
|
55
|
+
[](https://pypi.org/project/optpricing/)
|
|
56
|
+
[](https://www.python.org/downloads/)
|
|
57
|
+
[](https://opensource.org/licenses/MIT)
|
|
58
|
+
|
|
59
|
+
`optpricing` is a Python library for pricing, calibrating, and analyzing financial derivatives. It is built with a focus on architectural clarity, model breadth, and practical usability through a robust API, command-line interface, and an interactive dashboard.
|
|
60
|
+
|
|
61
|
+
Diljit Singh
|
|
62
|
+
[LinkedIn](https://linkedin.com/in/singhdiljit/)
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Core Features
|
|
67
|
+
|
|
68
|
+
* **Model Library**: Implements a comprehensive set of models, including:
|
|
69
|
+
* **Stochastic Volatility**: Heston, SABR
|
|
70
|
+
* **Jump-Diffusion**: Merton, Bates, Kou, SABR with Jumps
|
|
71
|
+
* **Pure Levy Processes**: Variance Gamma (VG), Normal Inverse Gaussian (NIG), CGMY, Hyperbolic
|
|
72
|
+
* **Interest Rate Models**: Vasicek, Cox-Ingersoll-Ross (CIR), Put-Call Parity Implied Rate
|
|
73
|
+
* **Local Volatility**: Dupire's Equation
|
|
74
|
+
|
|
75
|
+
* **Pricing Engines**: Provides a suite of numerical methods, allowing for technique comparison and validation:
|
|
76
|
+
* Analytic closed-form solutions
|
|
77
|
+
* Numerical integration and FFT-based pricing via characteristic functions
|
|
78
|
+
* Finite difference (PDE) solver using a Crank-Nicolson scheme
|
|
79
|
+
* Binomial and trinomial tree methods (CRR, TOPM, Leisen-Reimer) for European and American options
|
|
80
|
+
* High-performance Monte Carlo engine for European and American options, accelerated with `numba`, featuring variance reduction techniques (e.g., antithetic variates, control variates, importance sampling)
|
|
81
|
+
|
|
82
|
+
* **Interfaces**:
|
|
83
|
+
* **Programmatic API**: Use the package as a Python library to build custom financial models in your scripts. Define options, stocks, rates, and models programmatically to compute prices and other metrics.
|
|
84
|
+
* **Command-Line Interface (CLI)**: A robust CLI for live pricing, data management, model calibration, and historical backtesting.
|
|
85
|
+
* **Interactive Dashboard (UI)**: A Streamlit application for visual analysis of option chains, implied volatility surfaces, and model calibrations.
|
|
86
|
+
|
|
87
|
+
* **Workflow Automation**: High-level classes that orchestrate complex tasks like daily calibration runs and out-of-sample performance evaluation.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Quick Start
|
|
92
|
+
|
|
93
|
+
`optpricing` is designed for a straightforward installation using `pip` and is compatible with Python 3.10 and higher.
|
|
94
|
+
|
|
95
|
+
### 1. Install the Library
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
pip install optpricing
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 2. Download Historical Data
|
|
102
|
+
|
|
103
|
+
Some models require historical data (e.g., for calibration). Download data for a ticker like SPY:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
optpricing data download --ticker SPY
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
For more details, see the [Getting Started Guide](https://diljit22.github.io/quantFin/guide/getting_started/).
|
|
110
|
+
|
|
111
|
+
### 3. Use the CLI
|
|
112
|
+
|
|
113
|
+
Price an option directly from the terminal. The command below fetches the live option chain for AAPL, retrieves the current dividend rate, calculates the implied risk-free rate from at-the-money contracts, and prices the contract with Heston’s model using its default pricing technique (FFT):
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
optpricing price --ticker AAPL --strike 630 --maturity 2025-12-19 --model Heston --param "rho=-0.7" --param "vol_of_vol=0.5"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
To price the same contract as an American Option use:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
optpricing price -t AAPL -k 210 -T 2025-12-19 --style american --model Heston --param "rho=-0.7" --param "vol_of_vol=0.5"
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
For more details, see the [CLI Guide](https://diljit22.github.io/quantFin/guide/CLI/).
|
|
126
|
+
|
|
127
|
+
### 4. Launch the Dashboard
|
|
128
|
+
|
|
129
|
+
Visualize option chains and model outputs, interact with a pricing calculator featuring 15 models and 10 techniques.
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
optpricing dashboard
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
For more details, see the [Dashboard Guide](https://diljit22.github.io/quantFin/guide/dashboard/).
|
|
136
|
+
|
|
137
|
+
### 5. Use the Programmatic API
|
|
138
|
+
|
|
139
|
+
The most powerful way to use the package is via the API, which provides customization of nearly every aspect of pricing:
|
|
140
|
+
|
|
141
|
+
```python
|
|
142
|
+
from optpricing import Option, OptionType, Rate, Stock, ZeroCouponBond
|
|
143
|
+
from optpricing.models import BSMModel, CIRModel, VasicekModel
|
|
144
|
+
from optpricing.techniques import ClosedFormTechnique
|
|
145
|
+
|
|
146
|
+
# Define an option, underlying and rate
|
|
147
|
+
option = Option(strike=105, maturity=1.0, option_type=OptionType.CALL)
|
|
148
|
+
stock = Stock(spot=100, dividend=0.01)
|
|
149
|
+
rate = Rate(rate=0.05)
|
|
150
|
+
|
|
151
|
+
# Choose a model and technique
|
|
152
|
+
bsm_model = BSMModel(params={"sigma": 0.20})
|
|
153
|
+
cf_technique = ClosedFormTechnique()
|
|
154
|
+
|
|
155
|
+
result = cf_technique.price(option, stock, bsm_model, rate)
|
|
156
|
+
print(f"The option price is: {result.price:.4f}")
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
delta = cf_technique.delta(option, stock, bsm_model, rate)
|
|
160
|
+
gamma = cf_technique.gamma(option, stock, bsm_model, rate)
|
|
161
|
+
vega = cf_technique.vega(option, stock, bsm_model, rate)
|
|
162
|
+
|
|
163
|
+
print(f"Delta: {delta:.4f}")
|
|
164
|
+
print(f"Gamma: {gamma:.4f}")
|
|
165
|
+
print(f"Vega: {vega:.4f}")
|
|
166
|
+
|
|
167
|
+
target_price = 7.50
|
|
168
|
+
iv = cf_technique.implied_volatility(
|
|
169
|
+
option, stock, bsm_model, rate, target_price=target_price
|
|
170
|
+
)
|
|
171
|
+
print(f"Implied volatility for price ${target_price:.2f}: {iv:.4%}")
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
# Zero Coupon Bond
|
|
175
|
+
bond = ZeroCouponBond(maturity=1.0)
|
|
176
|
+
r0_stock = Stock(spot=0.05) # initial short rate
|
|
177
|
+
dummy_rate = Rate(rate=0.0) # ignored by rate models
|
|
178
|
+
|
|
179
|
+
vasicek = VasicekModel(params={"kappa": 0.86, "theta": 0.09, "sigma": 0.02})
|
|
180
|
+
cir = CIRModel(params={"kappa": 0.86, "theta": 0.09, "sigma": 0.02})
|
|
181
|
+
|
|
182
|
+
p_vasi = cf_technique.price(bond, r0_stock, vasicek, dummy_rate).price
|
|
183
|
+
p_cir = cf_technique.price(bond, r0_stock, cir, dummy_rate).price
|
|
184
|
+
|
|
185
|
+
print(f"Vasicek ZCB Price: {p_vasi:.4f}")
|
|
186
|
+
print(f"CIR ZCB Price: {p_cir:.4f}")
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
For more details, see the [API Guide](https://diljit22.github.io/quantFin/guide/API/).
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Documentation
|
|
194
|
+
|
|
195
|
+
The full documentation includes installation instructions, user guides, examples, and a complete API reference.
|
|
196
|
+
|
|
197
|
+
* **[View the Official Documentation](https://diljit22.github.io/quantFin/)**
|
|
198
|
+
|
|
199
|
+
### Guides
|
|
200
|
+
|
|
201
|
+
* [Introduction](https://diljit22.github.io/quantFin/guide/introduction/)
|
|
202
|
+
* [Installation](https://diljit22.github.io/quantFin/guide/installation/)
|
|
203
|
+
* [Getting Started](https://diljit22.github.io/quantFin/guide/getting_started/)
|
|
204
|
+
* [CLI](https://diljit22.github.io/quantFin/guide/CLI/)
|
|
205
|
+
* [Dashboard](https://diljit22.github.io/quantFin/guide/dashboard/)
|
|
206
|
+
* [API](https://diljit22.github.io/quantFin/guide/API/)
|
|
207
|
+
* [Examples](https://diljit22.github.io/quantFin/guide/examples/)
|
|
208
|
+
* [API Reference](https://diljit22.github.io/quantFin/reference/)
|
|
209
|
+
|
|
210
|
+
## Contributing
|
|
211
|
+
|
|
212
|
+
Contributions are welcome; see [CONTRIBUTING](/CONTRIBUTING.md) for details.
|
|
213
|
+
|
|
214
|
+
## License
|
|
215
|
+
|
|
216
|
+
This project is licensed under the MIT License. See [LICENSE](LICENSE) for details.
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# OptPricing: A Quantitative Finance Library for Derivative Pricing and Analysis
|
|
2
|
+
|
|
3
|
+
[](https://github.com/diljit22/quantfin/actions/workflows/ci.yml)
|
|
4
|
+
[](https://codecov.io/gh/diljit22/quantfin)
|
|
5
|
+
[](https://github.com/diljit22/quantfin/actions/workflows/ci.yml)
|
|
6
|
+
[](https://github.com/diljit22/quantfin/actions/workflows/ci.yml)
|
|
7
|
+
[](https://pypi.org/project/optpricing/)
|
|
8
|
+
[](https://www.python.org/downloads/)
|
|
9
|
+
[](https://opensource.org/licenses/MIT)
|
|
10
|
+
|
|
11
|
+
`optpricing` is a Python library for pricing, calibrating, and analyzing financial derivatives. It is built with a focus on architectural clarity, model breadth, and practical usability through a robust API, command-line interface, and an interactive dashboard.
|
|
12
|
+
|
|
13
|
+
Diljit Singh
|
|
14
|
+
[LinkedIn](https://linkedin.com/in/singhdiljit/)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Core Features
|
|
19
|
+
|
|
20
|
+
* **Model Library**: Implements a comprehensive set of models, including:
|
|
21
|
+
* **Stochastic Volatility**: Heston, SABR
|
|
22
|
+
* **Jump-Diffusion**: Merton, Bates, Kou, SABR with Jumps
|
|
23
|
+
* **Pure Levy Processes**: Variance Gamma (VG), Normal Inverse Gaussian (NIG), CGMY, Hyperbolic
|
|
24
|
+
* **Interest Rate Models**: Vasicek, Cox-Ingersoll-Ross (CIR), Put-Call Parity Implied Rate
|
|
25
|
+
* **Local Volatility**: Dupire's Equation
|
|
26
|
+
|
|
27
|
+
* **Pricing Engines**: Provides a suite of numerical methods, allowing for technique comparison and validation:
|
|
28
|
+
* Analytic closed-form solutions
|
|
29
|
+
* Numerical integration and FFT-based pricing via characteristic functions
|
|
30
|
+
* Finite difference (PDE) solver using a Crank-Nicolson scheme
|
|
31
|
+
* Binomial and trinomial tree methods (CRR, TOPM, Leisen-Reimer) for European and American options
|
|
32
|
+
* High-performance Monte Carlo engine for European and American options, accelerated with `numba`, featuring variance reduction techniques (e.g., antithetic variates, control variates, importance sampling)
|
|
33
|
+
|
|
34
|
+
* **Interfaces**:
|
|
35
|
+
* **Programmatic API**: Use the package as a Python library to build custom financial models in your scripts. Define options, stocks, rates, and models programmatically to compute prices and other metrics.
|
|
36
|
+
* **Command-Line Interface (CLI)**: A robust CLI for live pricing, data management, model calibration, and historical backtesting.
|
|
37
|
+
* **Interactive Dashboard (UI)**: A Streamlit application for visual analysis of option chains, implied volatility surfaces, and model calibrations.
|
|
38
|
+
|
|
39
|
+
* **Workflow Automation**: High-level classes that orchestrate complex tasks like daily calibration runs and out-of-sample performance evaluation.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Quick Start
|
|
44
|
+
|
|
45
|
+
`optpricing` is designed for a straightforward installation using `pip` and is compatible with Python 3.10 and higher.
|
|
46
|
+
|
|
47
|
+
### 1. Install the Library
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
pip install optpricing
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 2. Download Historical Data
|
|
54
|
+
|
|
55
|
+
Some models require historical data (e.g., for calibration). Download data for a ticker like SPY:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
optpricing data download --ticker SPY
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
For more details, see the [Getting Started Guide](https://diljit22.github.io/quantFin/guide/getting_started/).
|
|
62
|
+
|
|
63
|
+
### 3. Use the CLI
|
|
64
|
+
|
|
65
|
+
Price an option directly from the terminal. The command below fetches the live option chain for AAPL, retrieves the current dividend rate, calculates the implied risk-free rate from at-the-money contracts, and prices the contract with Heston’s model using its default pricing technique (FFT):
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
optpricing price --ticker AAPL --strike 630 --maturity 2025-12-19 --model Heston --param "rho=-0.7" --param "vol_of_vol=0.5"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
To price the same contract as an American Option use:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
optpricing price -t AAPL -k 210 -T 2025-12-19 --style american --model Heston --param "rho=-0.7" --param "vol_of_vol=0.5"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
For more details, see the [CLI Guide](https://diljit22.github.io/quantFin/guide/CLI/).
|
|
78
|
+
|
|
79
|
+
### 4. Launch the Dashboard
|
|
80
|
+
|
|
81
|
+
Visualize option chains and model outputs, interact with a pricing calculator featuring 15 models and 10 techniques.
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
optpricing dashboard
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
For more details, see the [Dashboard Guide](https://diljit22.github.io/quantFin/guide/dashboard/).
|
|
88
|
+
|
|
89
|
+
### 5. Use the Programmatic API
|
|
90
|
+
|
|
91
|
+
The most powerful way to use the package is via the API, which provides customization of nearly every aspect of pricing:
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
from optpricing import Option, OptionType, Rate, Stock, ZeroCouponBond
|
|
95
|
+
from optpricing.models import BSMModel, CIRModel, VasicekModel
|
|
96
|
+
from optpricing.techniques import ClosedFormTechnique
|
|
97
|
+
|
|
98
|
+
# Define an option, underlying and rate
|
|
99
|
+
option = Option(strike=105, maturity=1.0, option_type=OptionType.CALL)
|
|
100
|
+
stock = Stock(spot=100, dividend=0.01)
|
|
101
|
+
rate = Rate(rate=0.05)
|
|
102
|
+
|
|
103
|
+
# Choose a model and technique
|
|
104
|
+
bsm_model = BSMModel(params={"sigma": 0.20})
|
|
105
|
+
cf_technique = ClosedFormTechnique()
|
|
106
|
+
|
|
107
|
+
result = cf_technique.price(option, stock, bsm_model, rate)
|
|
108
|
+
print(f"The option price is: {result.price:.4f}")
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
delta = cf_technique.delta(option, stock, bsm_model, rate)
|
|
112
|
+
gamma = cf_technique.gamma(option, stock, bsm_model, rate)
|
|
113
|
+
vega = cf_technique.vega(option, stock, bsm_model, rate)
|
|
114
|
+
|
|
115
|
+
print(f"Delta: {delta:.4f}")
|
|
116
|
+
print(f"Gamma: {gamma:.4f}")
|
|
117
|
+
print(f"Vega: {vega:.4f}")
|
|
118
|
+
|
|
119
|
+
target_price = 7.50
|
|
120
|
+
iv = cf_technique.implied_volatility(
|
|
121
|
+
option, stock, bsm_model, rate, target_price=target_price
|
|
122
|
+
)
|
|
123
|
+
print(f"Implied volatility for price ${target_price:.2f}: {iv:.4%}")
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
# Zero Coupon Bond
|
|
127
|
+
bond = ZeroCouponBond(maturity=1.0)
|
|
128
|
+
r0_stock = Stock(spot=0.05) # initial short rate
|
|
129
|
+
dummy_rate = Rate(rate=0.0) # ignored by rate models
|
|
130
|
+
|
|
131
|
+
vasicek = VasicekModel(params={"kappa": 0.86, "theta": 0.09, "sigma": 0.02})
|
|
132
|
+
cir = CIRModel(params={"kappa": 0.86, "theta": 0.09, "sigma": 0.02})
|
|
133
|
+
|
|
134
|
+
p_vasi = cf_technique.price(bond, r0_stock, vasicek, dummy_rate).price
|
|
135
|
+
p_cir = cf_technique.price(bond, r0_stock, cir, dummy_rate).price
|
|
136
|
+
|
|
137
|
+
print(f"Vasicek ZCB Price: {p_vasi:.4f}")
|
|
138
|
+
print(f"CIR ZCB Price: {p_cir:.4f}")
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
For more details, see the [API Guide](https://diljit22.github.io/quantFin/guide/API/).
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Documentation
|
|
146
|
+
|
|
147
|
+
The full documentation includes installation instructions, user guides, examples, and a complete API reference.
|
|
148
|
+
|
|
149
|
+
* **[View the Official Documentation](https://diljit22.github.io/quantFin/)**
|
|
150
|
+
|
|
151
|
+
### Guides
|
|
152
|
+
|
|
153
|
+
* [Introduction](https://diljit22.github.io/quantFin/guide/introduction/)
|
|
154
|
+
* [Installation](https://diljit22.github.io/quantFin/guide/installation/)
|
|
155
|
+
* [Getting Started](https://diljit22.github.io/quantFin/guide/getting_started/)
|
|
156
|
+
* [CLI](https://diljit22.github.io/quantFin/guide/CLI/)
|
|
157
|
+
* [Dashboard](https://diljit22.github.io/quantFin/guide/dashboard/)
|
|
158
|
+
* [API](https://diljit22.github.io/quantFin/guide/API/)
|
|
159
|
+
* [Examples](https://diljit22.github.io/quantFin/guide/examples/)
|
|
160
|
+
* [API Reference](https://diljit22.github.io/quantFin/reference/)
|
|
161
|
+
|
|
162
|
+
## Contributing
|
|
163
|
+
|
|
164
|
+
Contributions are welcome; see [CONTRIBUTING](/CONTRIBUTING.md) for details.
|
|
165
|
+
|
|
166
|
+
## License
|
|
167
|
+
|
|
168
|
+
This project is licensed under the MIT License. See [LICENSE](LICENSE) for details.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Guide: Programmatic API
|
|
2
|
+
|
|
3
|
+
The `optpricing` Python API provides a powerful, object-oriented framework for building custom financial analysis scripts and workflows. Its modular design allows you to mix and match models, techniques, and data to suit your specific research needs.
|
|
4
|
+
|
|
5
|
+
This guide covers the fundamental components and provides examples for common use cases.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Core Concepts: Atoms, Models, and Techniques
|
|
10
|
+
|
|
11
|
+
All programmatic workflows are built on three core components:
|
|
12
|
+
|
|
13
|
+
1. **Atoms**: Immutable data classes like `Option`, `Stock`, and `Rate` that represent the basic inputs.
|
|
14
|
+
2. **Models**: Classes representing financial theories, such as `BSMModel` or `HestonModel` (and many others).
|
|
15
|
+
3. **Techniques**: Classes representing numerical algorithms, such as `ClosedFormTechnique` or `MonteCarloTechnique` (and many others).
|
|
16
|
+
|
|
17
|
+
You instantiate these components and pass them to a technique's `price` method to get a result.
|
|
18
|
+
|
|
19
|
+
## Example 1: Pricing a Standard European Option
|
|
20
|
+
|
|
21
|
+
This example demonstrates the most common use case: pricing a European call option using the Black-Scholes-Merton model's analytic formula.
|
|
22
|
+
|
|
23
|
+
```python
|
|
24
|
+
from optpricing import Option, OptionType, Rate, Stock
|
|
25
|
+
from optpricing.models import BSMModel
|
|
26
|
+
from optpricing.techniques import ClosedFormTechnique
|
|
27
|
+
|
|
28
|
+
# 1. Define the core Atoms
|
|
29
|
+
option = Option(strike=105, maturity=1.0, option_type=OptionType.CALL)
|
|
30
|
+
stock = Stock(spot=100.0, dividend=0.01)
|
|
31
|
+
rate = Rate(rate=0.05)
|
|
32
|
+
|
|
33
|
+
# 2. Instantiate the Model and Technique
|
|
34
|
+
bsm_model = BSMModel(params={"sigma": 0.20})
|
|
35
|
+
cf_technique = ClosedFormTechnique()
|
|
36
|
+
|
|
37
|
+
# 3. Calculate the price and Greeks
|
|
38
|
+
result = cf_technique.price(option, stock, bsm_model, rate)
|
|
39
|
+
delta = cf_technique.delta(option, stock, bsm_model, rate)
|
|
40
|
+
gamma = cf_technique.gamma(option, stock, bsm_model, rate)
|
|
41
|
+
|
|
42
|
+
print(f"The option price is: {result.price:.4f}")
|
|
43
|
+
print(f"Delta: {delta:.4f}")
|
|
44
|
+
print(f"Gamma: {gamma:.4f}")
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Example 2: Pricing an American Option with Monte Carlo
|
|
48
|
+
|
|
49
|
+
The API's flexibility allows you to easily switch to more complex scenarios. Here, we price an American option using the Heston model with the Longstaff-Schwartz Monte Carlo method.
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
from optpricing.models import HestonModel
|
|
53
|
+
from optpricing.techniques import AmericanMonteCarloTechnique
|
|
54
|
+
|
|
55
|
+
# 1. Define an American option Atom
|
|
56
|
+
american_option = Option(strike=105, maturity=1.0, option_type=OptionType.PUT)
|
|
57
|
+
|
|
58
|
+
# 2. Instantiate a more complex model and the appropriate technique
|
|
59
|
+
heston_model = HestonModel(params={
|
|
60
|
+
"v0": 0.04,
|
|
61
|
+
"kappa": 2.0,
|
|
62
|
+
"theta": 0.05,
|
|
63
|
+
"rho": -0.7,
|
|
64
|
+
"vol_of_vol": 0.5
|
|
65
|
+
})
|
|
66
|
+
lsmc_technique = AmericanMonteCarloTechnique(n_paths=20000, n_steps=100)
|
|
67
|
+
|
|
68
|
+
# 3. Calculate the price
|
|
69
|
+
# Note: The 'v0' parameter is passed as a keyword argument for the simulation
|
|
70
|
+
result = lsmc_technique.price(
|
|
71
|
+
american_option,
|
|
72
|
+
stock,
|
|
73
|
+
heston_model,
|
|
74
|
+
rate,
|
|
75
|
+
v0=heston_model.params['v0']
|
|
76
|
+
)
|
|
77
|
+
print(f"The American option price is: {result.price:.4f}")
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Example 3: Calculating Implied Volatility
|
|
81
|
+
|
|
82
|
+
The library includes mixins for common tasks like calculating implied volatility. This functionality is available on most technique objects.
|
|
83
|
+
|
|
84
|
+
```python
|
|
85
|
+
# Using the components from Example 1
|
|
86
|
+
target_price = 7.50
|
|
87
|
+
|
|
88
|
+
iv = cf_technique.implied_volatility(
|
|
89
|
+
option,
|
|
90
|
+
stock,
|
|
91
|
+
bsm_model,
|
|
92
|
+
rate,
|
|
93
|
+
target_price=target_price
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
print(f"Implied volatility for a target price of ${target_price:.2f}: {iv:.4%}")
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Example 4: Pricing an Interest Rate Product
|
|
100
|
+
|
|
101
|
+
The framework is not limited to equity options. It can be used to price other derivatives, such as Zero-Coupon Bonds using short-rate models.
|
|
102
|
+
|
|
103
|
+
```python
|
|
104
|
+
from optpricing.atoms import ZeroCouponBond
|
|
105
|
+
from optpricing.models import VasicekModel
|
|
106
|
+
|
|
107
|
+
# 1. Define a ZeroCouponBond Atom
|
|
108
|
+
bond = ZeroCouponBond(maturity=5.0, face_value=1000.0)
|
|
109
|
+
|
|
110
|
+
# 2. For rate models, the 'stock.spot' is re-interpreted as the initial short rate r0
|
|
111
|
+
r0_stock = Stock(spot=0.03)
|
|
112
|
+
# The 'rate' atom is ignored by rate models but required by the technique signature
|
|
113
|
+
dummy_rate = Rate(rate=0.0)
|
|
114
|
+
|
|
115
|
+
# 3. Instantiate the Vasicek model
|
|
116
|
+
vasicek_model = VasicekModel(params={"kappa": 0.86, "theta": 0.05, "sigma": 0.02})
|
|
117
|
+
|
|
118
|
+
# 4. Price using the ClosedFormTechnique
|
|
119
|
+
price_result = cf_technique.price(bond, r0_stock, vasicek_model, dummy_rate)
|
|
120
|
+
print(f"Price of 5-Year ZCB under Vasicek model: ${price_result.price:.2f}")
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Advanced Usage: Extending the Library
|
|
124
|
+
|
|
125
|
+
The library's true power lies in its extensibility. By inheriting from `BaseModel` and `BaseTechnique`, you can easily add your own custom models and pricing algorithms, which will automatically integrate with the existing framework.
|
|
126
|
+
|
|
127
|
+
For a complete and detailed list of all available classes, methods, and functions, please consult the full **[API Reference](../reference/index.md)**.
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Guide: Command-Line Interface (CLI)
|
|
2
|
+
|
|
3
|
+
The `optpricing` CLI is a powerful tool for performing complex financial analysis directly from your terminal. It provides access to pricing, data management, calibration, and backtesting workflows without requiring any Python scripting.
|
|
4
|
+
|
|
5
|
+
## Main Commands
|
|
6
|
+
|
|
7
|
+
These are the top-level commands available directly after `optpricing`.
|
|
8
|
+
|
|
9
|
+
### `price`
|
|
10
|
+
|
|
11
|
+
Prices a single option using live market data. This command automatically fetches the underlying spot price, estimates the dividend yield, and calculates an implied risk-free rate from the live option chain before pricing the specified contract.
|
|
12
|
+
|
|
13
|
+
**Usage:**
|
|
14
|
+
`optpricing price [OPTIONS]`
|
|
15
|
+
|
|
16
|
+
**Key Options:**
|
|
17
|
+
|
|
18
|
+
- `--ticker, -t TEXT`: Stock ticker (e.g., 'AAPL'). **[required]**
|
|
19
|
+
- `--strike, -k FLOAT`: Strike price. **[required]**
|
|
20
|
+
- `--maturity, -T TEXT`: Maturity date in YYYY-MM-DD format. **[required]**
|
|
21
|
+
- `--type TEXT`: 'call' or 'put'. [default: call]
|
|
22
|
+
- `--style TEXT`: 'european' or 'american'. [default: european]
|
|
23
|
+
- `--model, -m TEXT`: Model to use (e.g., 'BSM', 'Heston'). [default: BSM]
|
|
24
|
+
- `--param TEXT`: Set a model parameter (e.g., `sigma=0.2`). Can be used multiple times.
|
|
25
|
+
|
|
26
|
+
**Example:**
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Price an American put on TSLA using the Heston model
|
|
30
|
+
optpricing price -t TSLA -k 290 -T 2026-01-16 --style american --model Heston
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### `calibrate`
|
|
34
|
+
|
|
35
|
+
Calibrates model parameters to saved market data. This workflow loads a market snapshot, filters for liquid options, and uses an optimization routine to find the model parameters that best fit the observed market prices.
|
|
36
|
+
|
|
37
|
+
**Usage:**
|
|
38
|
+
`optpricing calibrate [OPTIONS]`
|
|
39
|
+
|
|
40
|
+
**Key Options:**
|
|
41
|
+
|
|
42
|
+
- `--ticker, -t TEXT`: Ticker for the snapshot to use. **[required]**
|
|
43
|
+
- `--model, -m TEXT`: Model to calibrate ('BSM' or 'Merton'). Can be used multiple times. **[required]**
|
|
44
|
+
- `--date, -d TEXT`: Snapshot date (YYYY-MM-DD). Defaults to the latest available.
|
|
45
|
+
|
|
46
|
+
**Example:**
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Calibrate the BSM and Merton models to a specific historical snapshot
|
|
50
|
+
optpricing calibrate -t SPY -m BSM -m Merton --date 2025-07-08
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### `backtest`
|
|
54
|
+
|
|
55
|
+
Runs a historical out-of-sample backtest for a model. The workflow iterates through all available historical data, calibrates the model on day `D`, and evaluates its pricing accuracy on the unseen data from day `D+1`.
|
|
56
|
+
|
|
57
|
+
**Usage:**
|
|
58
|
+
`optpricing backtest [OPTIONS]`
|
|
59
|
+
|
|
60
|
+
**Key Options:**
|
|
61
|
+
|
|
62
|
+
- `--ticker, -t TEXT`: Ticker to backtest. **[required]**
|
|
63
|
+
- `--model, -m TEXT`: Model to backtest. **[required]**
|
|
64
|
+
- `--verbose, -v`: Enable detailed logging output.
|
|
65
|
+
|
|
66
|
+
**Example:**
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
optpricing backtest -t SPY -m BSM -v
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### `dashboard`
|
|
73
|
+
|
|
74
|
+
Launches the interactive Streamlit dashboard.
|
|
75
|
+
|
|
76
|
+
**Usage:**
|
|
77
|
+
`optpricing dashboard`
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Sub-Command Groups
|
|
82
|
+
|
|
83
|
+
### `data`
|
|
84
|
+
|
|
85
|
+
Tools for downloading and managing market data.
|
|
86
|
+
|
|
87
|
+
**Usage:**
|
|
88
|
+
`optpricing data [COMMAND]`
|
|
89
|
+
|
|
90
|
+
**Commands:**
|
|
91
|
+
|
|
92
|
+
- `download`: Downloads and saves historical log returns for one or more tickers.
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
optpricing data download --ticker AAPL --period 5y
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
- `snapshot`: Fetches and saves a live market data snapshot of the full option chain.
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
optpricing data snapshot --ticker TSLA
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
- `dividends`: Fetches and displays live forward dividend yields.
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
optpricing data dividends --ticker JPM
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### `demo`
|
|
111
|
+
|
|
112
|
+
Runs benchmark scripts from the `examples/` directory (requires a local clone of the repository).
|
|
113
|
+
|
|
114
|
+
**Usage:**
|
|
115
|
+
`optpricing demo [COMMAND]`
|
|
116
|
+
|
|
117
|
+
**Commands:**
|
|
118
|
+
|
|
119
|
+
- `european`: Runs the European options benchmark across all models.
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
optpricing demo european --model Heston
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
- `american`: Runs the American options benchmark.
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
optpricing demo american
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
- `rates`: Runs the interest rate models benchmark.
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
optpricing demo rates
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### `tools`
|
|
138
|
+
|
|
139
|
+
Miscellaneous financial utility tools.
|
|
140
|
+
|
|
141
|
+
**Usage:**
|
|
142
|
+
`optpricing tools [COMMAND]`
|
|
143
|
+
|
|
144
|
+
**Commands:**
|
|
145
|
+
|
|
146
|
+
- `implied-rate`: Calculates the implied risk-free rate from a live call-put pair using put-call parity.
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
optpricing tools implied-rate --ticker SPY --strike 630 --maturity 2025-12-19
|
|
150
|
+
```
|