optPricing 2.3.4__tar.gz → 2.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- optpricing-2.4.0/CHANGELOG.md +30 -0
- optpricing-2.4.0/MANIFEST.in +11 -0
- {optpricing-2.3.4/src/optpricing.egg-info → optpricing-2.4.0}/PKG-INFO +37 -45
- {optpricing-2.3.4 → optpricing-2.4.0}/README.md +8 -7
- optpricing-2.4.0/pyproject.toml +144 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/cli/commands/dashboard.py +2 -1
- {optpricing-2.3.4 → optpricing-2.4.0/src/optpricing.egg-info}/PKG-INFO +37 -45
- optpricing-2.4.0/src/optpricing.egg-info/SOURCES.txt +177 -0
- optpricing-2.4.0/src/optpricing.egg-info/requires.txt +11 -0
- optpricing-2.4.0/src/optpricing.egg-info/scm_file_list.json +439 -0
- optpricing-2.4.0/src/optpricing.egg-info/scm_version.json +8 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/cli/commands/test_price.py +5 -1
- optpricing-2.3.4/.coveragerc +0 -4
- optpricing-2.3.4/.github/ISSUE_TEMPLATE/bug_report.md +0 -34
- optpricing-2.3.4/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- optpricing-2.3.4/.github/workflows/ci.yml +0 -45
- optpricing-2.3.4/.github/workflows/pages.yml +0 -54
- optpricing-2.3.4/.github/workflows/publish.yml +0 -43
- optpricing-2.3.4/.gitignore +0 -31
- optpricing-2.3.4/.pre-commit-config.yaml +0 -17
- optpricing-2.3.4/CHANGELOG.md +0 -7
- optpricing-2.3.4/CODE_OF_CONDUCT.md +0 -128
- optpricing-2.3.4/CONTRIBUTING.md +0 -58
- optpricing-2.3.4/MANIFEST.in +0 -6
- optpricing-2.3.4/PULL_REQUEST_TEMPLATE.md +0 -23
- optpricing-2.3.4/SECURITY.md +0 -15
- optpricing-2.3.4/artifacts/backtest_logs/SPY_backtest_2025-06-17.csv +0 -3
- optpricing-2.3.4/artifacts/backtest_logs/SPY_backtest_2025-07-07.csv +0 -6
- optpricing-2.3.4/artifacts/backtest_logs/SPY_backtest_2025-07-09.csv +0 -8
- optpricing-2.3.4/artifacts/calibrated_params/SPY_BSM_2023-01-01.json +0 -8
- optpricing-2.3.4/artifacts/calibrated_params/SPY_BSM_2025-06-17.json +0 -3
- optpricing-2.3.4/artifacts/calibrated_params/SPY_BSM_2025-07-03.json +0 -8
- optpricing-2.3.4/artifacts/calibrated_params/SPY_BSM_2025-07-07.json +0 -8
- optpricing-2.3.4/artifacts/calibrated_params/SPY_BSM_2025-07-08.json +0 -8
- optpricing-2.3.4/artifacts/calibrated_params/SPY_BSM_2025-07-09.json +0 -8
- optpricing-2.3.4/artifacts/calibrated_params/SPY_Black-Scholes_2025-06-17.json +0 -3
- optpricing-2.3.4/artifacts/calibrated_params/SPY_Merton_2025-06-17.json +0 -7
- optpricing-2.3.4/artifacts/calibrated_params/SPY_Merton_2025-07-03.json +0 -11
- optpricing-2.3.4/artifacts/calibrated_params/SPY_Merton_2025-07-07.json +0 -11
- optpricing-2.3.4/artifacts/calibrated_params/SPY_Merton_2025-07-08.json +0 -11
- optpricing-2.3.4/artifacts/calibrated_params/SPY_Merton_2025-07-09.json +0 -11
- optpricing-2.3.4/artifacts/calibration_logs/SPY_evaluation_2025-06-16.csv +0 -3
- optpricing-2.3.4/codecov.yml +0 -7
- optpricing-2.3.4/config.yaml +0 -34
- optpricing-2.3.4/data/historical_data/AAPL_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/AMC_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/AMD_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/AMZN_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/BAC_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/BA_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/CAT_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/CVX_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/GME_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/GOOGL_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/GS_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/HD_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/JNJ_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/JPM_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/META_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/MSFT_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/NKE_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/NVDA_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/PFE_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/QQQ_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/SPY_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/SPY_5y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/TSLA_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/UNH_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/WMT_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/historical_data/XOM_10y_returns.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AAPL_2025-06-16.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AAPL_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AAPL_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AAPL_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AAPL_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AAPL_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AAPL_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AAPL_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMC_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMC_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMC_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMC_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMC_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMC_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMC_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMD_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMD_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMD_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMD_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMD_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMD_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMD_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMZN_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMZN_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMZN_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMZN_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMZN_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMZN_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/AMZN_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/BAC_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/BAC_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/BAC_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/BAC_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/BAC_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/BAC_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/BAC_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/BA_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/BA_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/BA_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/BA_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/BA_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/BA_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/BA_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/CAT_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/CAT_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/CAT_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/CAT_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/CAT_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/CAT_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/CAT_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/CVX_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/CVX_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/CVX_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/CVX_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/CVX_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/CVX_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/CVX_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GME_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GME_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GME_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GME_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GME_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GME_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GME_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GOOGL_2025-06-16.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GOOGL_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GOOGL_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GOOGL_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GOOGL_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GOOGL_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GOOGL_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GOOGL_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GS_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GS_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GS_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GS_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GS_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GS_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/GS_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/HD_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/HD_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/HD_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/HD_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/HD_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/HD_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/HD_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/JNJ_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/JNJ_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/JNJ_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/JNJ_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/JNJ_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/JNJ_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/JNJ_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/JPM_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/JPM_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/JPM_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/JPM_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/JPM_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/JPM_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/JPM_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/META_2025-06-16.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/META_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/META_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/META_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/META_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/META_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/META_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/META_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/MSFT_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/MSFT_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/MSFT_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/MSFT_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/MSFT_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/MSFT_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/MSFT_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/NKE_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/NKE_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/NKE_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/NKE_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/NKE_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/NKE_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/NKE_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/NVDA_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/NVDA_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/NVDA_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/NVDA_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/NVDA_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/NVDA_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/NVDA_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/PFE_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/PFE_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/PFE_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/PFE_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/PFE_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/PFE_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/PFE_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/QQQ_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/QQQ_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/QQQ_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/QQQ_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/QQQ_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/QQQ_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/QQQ_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/SPY_2025-06-16.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/SPY_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/SPY_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/SPY_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/SPY_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/SPY_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/SPY_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/SPY_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/TSLA_2025-06-16.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/TSLA_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/TSLA_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/TSLA_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/TSLA_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/TSLA_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/TSLA_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/TSLA_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/UNH_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/UNH_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/UNH_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/UNH_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/UNH_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/UNH_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/UNH_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/WMT_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/WMT_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/WMT_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/WMT_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/WMT_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/WMT_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/WMT_2025-07-09.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/XOM_2025-06-17.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/XOM_2025-06-26.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/XOM_2025-07-02.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/XOM_2025-07-03.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/XOM_2025-07-07.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/XOM_2025-07-08.parquet +0 -0
- optpricing-2.3.4/data/market_data_snapshots/XOM_2025-07-09.parquet +0 -0
- optpricing-2.3.4/docs/guide/API.md +0 -127
- optpricing-2.3.4/docs/guide/CLI.md +0 -150
- optpricing-2.3.4/docs/guide/dashboard.md +0 -53
- optpricing-2.3.4/docs/guide/examples.md +0 -66
- optpricing-2.3.4/docs/guide/getting_started.md +0 -133
- optpricing-2.3.4/docs/guide/installation.md +0 -61
- optpricing-2.3.4/docs/guide/introduction.md +0 -23
- optpricing-2.3.4/docs/images/bates.png +0 -0
- optpricing-2.3.4/docs/images/calibration.png +0 -0
- optpricing-2.3.4/docs/images/fit_jump.png +0 -0
- optpricing-2.3.4/docs/images/zcb.png +0 -0
- optpricing-2.3.4/docs/index.md +0 -45
- optpricing-2.3.4/docs/reference/atoms/index.md +0 -7
- optpricing-2.3.4/docs/reference/calibration/index.md +0 -7
- optpricing-2.3.4/docs/reference/cli/index.md +0 -12
- optpricing-2.3.4/docs/reference/dashboard/index.md +0 -9
- optpricing-2.3.4/docs/reference/data/index.md +0 -6
- optpricing-2.3.4/docs/reference/index.md +0 -77
- optpricing-2.3.4/docs/reference/models/index.md +0 -9
- optpricing-2.3.4/docs/reference/parity/index.md +0 -5
- optpricing-2.3.4/docs/reference/techniques/index.md +0 -6
- optpricing-2.3.4/docs/reference/workflows/index.md +0 -6
- optpricing-2.3.4/examples/american_options_benchmark.py +0 -208
- optpricing-2.3.4/examples/european_options_benchmark.py +0 -453
- optpricing-2.3.4/examples/getting_started.py +0 -47
- optpricing-2.3.4/examples/rate_models_benchmark.py +0 -55
- optpricing-2.3.4/mkdocs.yml +0 -87
- optpricing-2.3.4/pyproject.toml +0 -97
- optpricing-2.3.4/src/optpricing.egg-info/SOURCES.txt +0 -438
- optpricing-2.3.4/src/optpricing.egg-info/requires.txt +0 -24
- {optpricing-2.3.4 → optpricing-2.4.0}/LICENSE +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/setup.cfg +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/atoms/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/atoms/bond.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/atoms/option.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/atoms/rate.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/atoms/stock.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/calibration/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/calibration/calibrator.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/calibration/fit_jump_parameters.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/calibration/fit_market_params.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/calibration/iv_surface.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/calibration/technique_selector.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/calibration/vectorized_bsm_iv.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/calibration/vectorized_integration_iv.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/calibration/vectorized_pricer.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/cli/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/cli/commands/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/cli/commands/backtest.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/cli/commands/calibrate.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/cli/commands/data.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/cli/commands/demo.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/cli/commands/price.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/cli/commands/tools.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/cli/main.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/config.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/dashboard/Home.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/dashboard/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/dashboard/pages/1_Pricer_and_Greeks.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/dashboard/pages/2_Calibration_and_IV.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/dashboard/pages/3_Market_Analytics.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/dashboard/pages/4_Model_Fitting.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/dashboard/pages/5_Term_Structure.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/dashboard/pages/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/dashboard/plots.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/dashboard/service.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/dashboard/widgets.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/data/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/data/historical_manager.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/data/market_data_manager.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/base/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/base/base_model.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/base/validators.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/bates.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/blacks_approx.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/bsm.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/cev.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/cgmy.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/cir.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/dupire_local.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/heston.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/hyperbolic.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/kou.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/merton_jump.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/nig.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/perpetual_put.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/sabr.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/sabr_jump.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/vasicek.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/models/vg.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/parity/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/parity/implied_rate.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/parity/parity_model.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/american_monte_carlo.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/base/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/base/base_technique.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/base/greek_mixin.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/base/iv_mixin.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/base/lattice_technique.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/base/pricing_result.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/base/random_utils.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/closed_form.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/crr.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/fft.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/integration.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/kernels/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/kernels/american_mc_kernels.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/kernels/lattice_kernels.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/kernels/mc_kernels.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/kernels/path_kernels.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/leisen_reimer.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/monte_carlo.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/pde.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/techniques/topm.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/backtest_workflow.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/configs/__init__.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/configs/bates_config.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/configs/bsm_config.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/configs/cev_config.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/configs/cgmy_config.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/configs/heston_config.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/configs/hyperbolic_config.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/configs/kou_config.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/configs/merton_config.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/configs/nig_config.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/configs/sabr_config.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/configs/sabr_jump_config.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/configs/vg_config.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing/workflows/daily_workflow.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing.egg-info/dependency_links.txt +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing.egg-info/entry_points.txt +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/src/optpricing.egg-info/top_level.txt +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/atoms/test_bond.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/atoms/test_option.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/atoms/test_rate.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/atoms/test_stock.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/calibration/test_calibrator.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/calibration/test_fit_jump_parameters.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/calibration/test_fit_market_params.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/calibration/test_iv_surface.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/calibration/test_technique_selector.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/calibration/test_vectorized_bsm_iv.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/calibration/test_vectorized_integration_iv.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/calibration/test_vectorized_pricer.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/cli/commands/test_backtest.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/cli/commands/test_calibrate.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/cli/commands/test_data.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/cli/commands/test_tools.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/cli/test_main.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/dashboard/test_plots.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/dashboard/test_service.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/dashboard/test_widgets.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/data/test_historical_manager.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/data/test_market_data_manager.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/base/test_base_model.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/base/test_validators.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_bates.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_blacks_approx.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_bsm.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_cev.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_cgmy.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_cir.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_dupire_local.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_heston.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_hyperbolic.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_kou.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_merton_jump.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_nig.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_perpetual_put.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_sabr.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_sabr_jump.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_vasicek.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/models/test_vg.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/parity/test_implied_rate.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/parity/test_parity_model.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/base/test_greek_mixin.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/base/test_iv_mixin.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/base/test_pricing_result.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/base/test_random_utils.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/kernels/test_lattice_kernels.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/kernels/test_mc_kernels.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/kernels/test_path_kernels.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/test_american_monte_carlo.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/test_closed_form.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/test_crr.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/test_fft.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/test_integration.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/test_leisen_reimer.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/test_monte_carlo.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/test_pde.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/techniques/test_topm.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/workflows/test_backtest_workflow.py +0 -0
- {optpricing-2.3.4 → optpricing-2.4.0}/tests/workflows/test_daily_workflow.py +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented here. The format follows
|
|
4
|
+
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions come from git tags
|
|
5
|
+
(`vX.Y.Z`) via setuptools_scm.
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- Python 3.10 support dropped (end of life); supported versions are 3.11–3.14, with 3.15 tested as experimental.
|
|
12
|
+
- Dependency pins relaxed from `~=` to verified minimum versions (`numpy>=2.3.2`, `scipy>=1.16.1`, `pandas>=2.3.3`, `numba>=0.63`, `pyyaml>=6.0.3`, `typer>=0.15.3`, `yfinance>=0.2.63`). Current releases (numpy 2.5, pandas 3.1, numba 0.68, yfinance 1.x) are supported.
|
|
13
|
+
- Streamlit and Plotly moved to the optional `ui` extra: `pip install "optpricing[ui]"` for the dashboard.
|
|
14
|
+
- Development tooling moved from the `dev` extra to PEP 735 dependency groups (`uv sync`; `pip install -e . --group dev`).
|
|
15
|
+
- Package metadata uses a PEP 639 license expression; the source distribution no longer bundles `data/`, `artifacts/` or docs (24 MB → ~0.1 MB).
|
|
16
|
+
- CI rebuilt on uv: lint, Python 3.11–3.15 matrix, minimum-dependency-versions job, build/twine checks; docs and publish workflows split into build and deploy jobs with hash-pinned actions.
|
|
17
|
+
|
|
18
|
+
### Removed
|
|
19
|
+
|
|
20
|
+
- Unused runtime dependencies `matplotlib`, `tabulate` and the explicit `click` pin (Click arrives via Typer).
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- `test_price_command` relied on a hard-coded maturity date that is now in the past.
|
|
25
|
+
|
|
26
|
+
## [2.0.0] - 2025-06-26
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
|
|
30
|
+
- Shipped to PyPI `pyproject.toml`
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# setuptools_scm seeds the sdist with every git-tracked file. Keep the archive to
|
|
2
|
+
# what a source build and the test suite need; data, artifacts, docs and CI config
|
|
3
|
+
# live in the repository only.
|
|
4
|
+
prune data
|
|
5
|
+
prune artifacts
|
|
6
|
+
prune docs
|
|
7
|
+
prune examples
|
|
8
|
+
prune .github
|
|
9
|
+
exclude .gitignore .pre-commit-config.yaml .python-version
|
|
10
|
+
exclude codecov.yml config.yaml mkdocs.yml uv.lock
|
|
11
|
+
exclude CODE_OF_CONDUCT.md CONTRIBUTING.md PULL_REQUEST_TEMPLATE.md SECURITY.md
|
|
@@ -1,59 +1,50 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: optpricing
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.0
|
|
4
4
|
Summary: A financial options pricing and analysis library.
|
|
5
|
-
Author
|
|
6
|
-
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
|
-
|
|
5
|
+
Author: Diljit Singh
|
|
6
|
+
License-Expression: MIT
|
|
16
7
|
Project-URL: Homepage, https://diljit22.github.io/optpricing/
|
|
17
|
-
|
|
18
|
-
|
|
8
|
+
Project-URL: Documentation, https://diljit22.github.io/optpricing/
|
|
9
|
+
Project-URL: Repository, https://github.com/Diljit22/optpricing
|
|
10
|
+
Project-URL: Issues, https://github.com/Diljit22/optpricing/issues
|
|
11
|
+
Project-URL: Changelog, https://github.com/Diljit22/optpricing/blob/main/CHANGELOG.md
|
|
12
|
+
Keywords: options,derivatives,quantitative-finance,option-pricing,heston,monte-carlo,fft,calibration
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
15
|
+
Classifier: Intended Audience :: Science/Research
|
|
19
16
|
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
23
|
Classifier: Topic :: Office/Business :: Financial :: Investment
|
|
21
|
-
|
|
24
|
+
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
25
|
+
Requires-Python: >=3.11
|
|
22
26
|
Description-Content-Type: text/markdown
|
|
23
27
|
License-File: LICENSE
|
|
24
|
-
Requires-Dist: numpy
|
|
25
|
-
Requires-Dist: scipy
|
|
26
|
-
Requires-Dist: pandas
|
|
27
|
-
Requires-Dist: numba
|
|
28
|
-
Requires-Dist: pyyaml
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist: plotly
|
|
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"
|
|
28
|
+
Requires-Dist: numpy>=2.3.2
|
|
29
|
+
Requires-Dist: scipy>=1.16.1
|
|
30
|
+
Requires-Dist: pandas>=2.3.3
|
|
31
|
+
Requires-Dist: numba>=0.63
|
|
32
|
+
Requires-Dist: pyyaml>=6.0.3
|
|
33
|
+
Requires-Dist: typer>=0.15.3
|
|
34
|
+
Requires-Dist: yfinance>=0.2.63
|
|
35
|
+
Provides-Extra: ui
|
|
36
|
+
Requires-Dist: streamlit>=1.45.1; extra == "ui"
|
|
37
|
+
Requires-Dist: plotly>=6.1.2; extra == "ui"
|
|
47
38
|
Dynamic: license-file
|
|
48
39
|
|
|
49
40
|
# OptPricing: A Quantitative Finance Library for Derivative Pricing and Analysis
|
|
50
41
|
|
|
51
|
-
[](https://github.com/diljit22/optpricing/actions/workflows/ci.yml)
|
|
52
43
|
[](https://codecov.io/gh/diljit22/optpricing)
|
|
53
|
-
[](https://github.com/diljit22/optpricing/actions/workflows/ci.yml)
|
|
44
|
+
[](https://github.com/diljit22/optpricing/actions/workflows/pages.yml)
|
|
55
45
|
[](https://pypi.org/project/optpricing/)
|
|
56
|
-
[](https://www.python.org/downloads/)
|
|
47
|
+
[](https://github.com/astral-sh/ruff)
|
|
57
48
|
[](https://opensource.org/licenses/MIT)
|
|
58
49
|
|
|
59
50
|
`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.
|
|
@@ -90,12 +81,13 @@ Diljit Singh
|
|
|
90
81
|
|
|
91
82
|
## Quick Start
|
|
92
83
|
|
|
93
|
-
`optpricing`
|
|
84
|
+
`optpricing` installs with `pip` (or `uv`) and supports Python 3.11 through 3.14.
|
|
94
85
|
|
|
95
86
|
### 1. Install the Library
|
|
96
87
|
|
|
97
88
|
```bash
|
|
98
|
-
pip install optpricing
|
|
89
|
+
pip install optpricing # library + CLI
|
|
90
|
+
pip install "optpricing[ui]" # also the Streamlit dashboard
|
|
99
91
|
```
|
|
100
92
|
|
|
101
93
|
### 2. Download Historical Data
|
|
@@ -126,7 +118,7 @@ For more details, see the [CLI Guide](https://diljit22.github.io/optpricing/guid
|
|
|
126
118
|
|
|
127
119
|
### 4. Launch the Dashboard
|
|
128
120
|
|
|
129
|
-
Visualize option chains and model outputs, interact with a pricing calculator
|
|
121
|
+
Visualize option chains and model outputs, and interact with a pricing calculator covering 12 models and 8 techniques (the full library exposes 17 pricing models plus parity/implied-rate models, and 9 techniques). Requires the `ui` extra.
|
|
130
122
|
|
|
131
123
|
```bash
|
|
132
124
|
optpricing dashboard
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# OptPricing: A Quantitative Finance Library for Derivative Pricing and Analysis
|
|
2
2
|
|
|
3
|
-
[](https://github.com/diljit22/optpricing/actions/workflows/ci.yml)
|
|
4
4
|
[](https://codecov.io/gh/diljit22/optpricing)
|
|
5
|
-
[](https://github.com/diljit22/optpricing/actions/workflows/ci.yml)
|
|
5
|
+
[](https://github.com/diljit22/optpricing/actions/workflows/pages.yml)
|
|
7
6
|
[](https://pypi.org/project/optpricing/)
|
|
8
|
-
[](https://www.python.org/downloads/)
|
|
8
|
+
[](https://github.com/astral-sh/ruff)
|
|
9
9
|
[](https://opensource.org/licenses/MIT)
|
|
10
10
|
|
|
11
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.
|
|
@@ -42,12 +42,13 @@ Diljit Singh
|
|
|
42
42
|
|
|
43
43
|
## Quick Start
|
|
44
44
|
|
|
45
|
-
`optpricing`
|
|
45
|
+
`optpricing` installs with `pip` (or `uv`) and supports Python 3.11 through 3.14.
|
|
46
46
|
|
|
47
47
|
### 1. Install the Library
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
|
-
pip install optpricing
|
|
50
|
+
pip install optpricing # library + CLI
|
|
51
|
+
pip install "optpricing[ui]" # also the Streamlit dashboard
|
|
51
52
|
```
|
|
52
53
|
|
|
53
54
|
### 2. Download Historical Data
|
|
@@ -78,7 +79,7 @@ For more details, see the [CLI Guide](https://diljit22.github.io/optpricing/guid
|
|
|
78
79
|
|
|
79
80
|
### 4. Launch the Dashboard
|
|
80
81
|
|
|
81
|
-
Visualize option chains and model outputs, interact with a pricing calculator
|
|
82
|
+
Visualize option chains and model outputs, and interact with a pricing calculator covering 12 models and 8 techniques (the full library exposes 17 pricing models plus parity/implied-rate models, and 9 techniques). Requires the `ui` extra.
|
|
82
83
|
|
|
83
84
|
```bash
|
|
84
85
|
optpricing dashboard
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77", "setuptools-scm>=8"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "optpricing"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "A financial options pricing and analysis library."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
license-files = ["LICENSE"]
|
|
13
|
+
authors = [{ name = "Diljit Singh" }]
|
|
14
|
+
keywords = [
|
|
15
|
+
"options",
|
|
16
|
+
"derivatives",
|
|
17
|
+
"quantitative-finance",
|
|
18
|
+
"option-pricing",
|
|
19
|
+
"heston",
|
|
20
|
+
"monte-carlo",
|
|
21
|
+
"fft",
|
|
22
|
+
"calibration",
|
|
23
|
+
]
|
|
24
|
+
classifiers = [
|
|
25
|
+
"Development Status :: 4 - Beta",
|
|
26
|
+
"Intended Audience :: Financial and Insurance Industry",
|
|
27
|
+
"Intended Audience :: Science/Research",
|
|
28
|
+
"Operating System :: OS Independent",
|
|
29
|
+
"Programming Language :: Python :: 3",
|
|
30
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
31
|
+
"Programming Language :: Python :: 3.11",
|
|
32
|
+
"Programming Language :: Python :: 3.12",
|
|
33
|
+
"Programming Language :: Python :: 3.13",
|
|
34
|
+
"Programming Language :: Python :: 3.14",
|
|
35
|
+
"Topic :: Office/Business :: Financial :: Investment",
|
|
36
|
+
"Topic :: Scientific/Engineering :: Mathematics",
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
# Floors are the oldest releases with wheels for every supported CPython (3.11-3.14)
|
|
40
|
+
# and were verified with `uv pip install --resolution lowest-direct` + the full test
|
|
41
|
+
# suite on each interpreter. Do not raise a floor without re-running that check.
|
|
42
|
+
dependencies = [
|
|
43
|
+
"numpy>=2.3.2",
|
|
44
|
+
"scipy>=1.16.1",
|
|
45
|
+
"pandas>=2.3.3",
|
|
46
|
+
"numba>=0.63",
|
|
47
|
+
"pyyaml>=6.0.3",
|
|
48
|
+
"typer>=0.15.3",
|
|
49
|
+
"yfinance>=0.2.63",
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
[project.optional-dependencies]
|
|
53
|
+
# Streamlit dashboard (`optpricing dashboard`).
|
|
54
|
+
ui = [
|
|
55
|
+
"streamlit>=1.45.1",
|
|
56
|
+
"plotly>=6.1.2",
|
|
57
|
+
]
|
|
58
|
+
|
|
59
|
+
[project.urls]
|
|
60
|
+
Homepage = "https://diljit22.github.io/optpricing/"
|
|
61
|
+
Documentation = "https://diljit22.github.io/optpricing/"
|
|
62
|
+
Repository = "https://github.com/Diljit22/optpricing"
|
|
63
|
+
Issues = "https://github.com/Diljit22/optpricing/issues"
|
|
64
|
+
Changelog = "https://github.com/Diljit22/optpricing/blob/main/CHANGELOG.md"
|
|
65
|
+
|
|
66
|
+
[project.scripts]
|
|
67
|
+
optpricing = "optpricing.cli.main:app"
|
|
68
|
+
|
|
69
|
+
# Development tooling (PEP 735). Not published with the package.
|
|
70
|
+
# uv sync -> default `dev` group (test + lint + docs + pre-commit)
|
|
71
|
+
# uv sync --group test -> just what the test suite needs
|
|
72
|
+
# pip install -e . --group dev -> pip >= 25.1
|
|
73
|
+
[dependency-groups]
|
|
74
|
+
test = [
|
|
75
|
+
"optpricing[ui]",
|
|
76
|
+
"pytest>=8.3",
|
|
77
|
+
"pytest-cov>=5",
|
|
78
|
+
]
|
|
79
|
+
lint = [
|
|
80
|
+
"ruff==0.17.3",
|
|
81
|
+
]
|
|
82
|
+
docs = [
|
|
83
|
+
"mkdocs>=1.6.1",
|
|
84
|
+
"mkdocs-material>=9.6",
|
|
85
|
+
"mkdocstrings[python]>=0.29",
|
|
86
|
+
"mkdocs-section-index>=0.3.9",
|
|
87
|
+
]
|
|
88
|
+
profile = [
|
|
89
|
+
"line-profiler>=4.2",
|
|
90
|
+
"py-spy>=0.4",
|
|
91
|
+
]
|
|
92
|
+
dev = [
|
|
93
|
+
{ include-group = "test" },
|
|
94
|
+
{ include-group = "lint" },
|
|
95
|
+
{ include-group = "docs" },
|
|
96
|
+
"pre-commit>=4.0",
|
|
97
|
+
]
|
|
98
|
+
|
|
99
|
+
[tool.uv]
|
|
100
|
+
default-groups = ["dev"]
|
|
101
|
+
|
|
102
|
+
[tool.setuptools]
|
|
103
|
+
package-dir = { "" = "src" }
|
|
104
|
+
|
|
105
|
+
[tool.setuptools.packages.find]
|
|
106
|
+
where = ["src"]
|
|
107
|
+
|
|
108
|
+
[tool.setuptools_scm]
|
|
109
|
+
version_scheme = "post-release"
|
|
110
|
+
local_scheme = "no-local-version"
|
|
111
|
+
|
|
112
|
+
[tool.ruff]
|
|
113
|
+
line-length = 88
|
|
114
|
+
|
|
115
|
+
[tool.ruff.lint]
|
|
116
|
+
select = ["E", "W", "F", "I", "N", "UP", "NPY"]
|
|
117
|
+
ignore = ["N803", "N806"]
|
|
118
|
+
|
|
119
|
+
[tool.ruff.lint.per-file-ignores]
|
|
120
|
+
# streamlit page files are named for the sidebar, not for PEP 8
|
|
121
|
+
"src/optpricing/dashboard/pages/*.py" = ["N999"]
|
|
122
|
+
"src/optpricing/dashboard/Home.py" = ["N999"]
|
|
123
|
+
# numba kernels use the legacy np.random API on purpose
|
|
124
|
+
"src/optpricing/techniques/kernels/mc_kernels.py" = ["NPY002"]
|
|
125
|
+
"src/optpricing/techniques/kernels/american_mc_kernels.py" = ["NPY002", "E722"]
|
|
126
|
+
"src/optpricing/techniques/kernels/path_kernels.py" = ["NPY002"]
|
|
127
|
+
|
|
128
|
+
[tool.ruff.format]
|
|
129
|
+
quote-style = "double"
|
|
130
|
+
skip-magic-trailing-comma = false
|
|
131
|
+
|
|
132
|
+
[tool.pytest.ini_options]
|
|
133
|
+
minversion = "8.0"
|
|
134
|
+
testpaths = ["tests"]
|
|
135
|
+
# Coverage is opt-in: `pytest --cov` (CI does this); plain `pytest` stays fast and debuggable.
|
|
136
|
+
addopts = "-ra --strict-markers --strict-config"
|
|
137
|
+
xfail_strict = true
|
|
138
|
+
|
|
139
|
+
[tool.coverage.run]
|
|
140
|
+
source = ["optpricing"]
|
|
141
|
+
omit = ["*/dashboard/pages/*"]
|
|
142
|
+
|
|
143
|
+
[tool.coverage.report]
|
|
144
|
+
show_missing = true
|
|
@@ -20,7 +20,8 @@ def dashboard():
|
|
|
20
20
|
subprocess.run(["streamlit", "run", str(app_path)], check=True)
|
|
21
21
|
except FileNotFoundError:
|
|
22
22
|
typer.secho(
|
|
23
|
-
"Error: 'streamlit' command not found.
|
|
23
|
+
"Error: 'streamlit' command not found. "
|
|
24
|
+
"Hint: `pip install 'optpricing[ui]'`",
|
|
24
25
|
fg=typer.colors.RED,
|
|
25
26
|
)
|
|
26
27
|
raise typer.Exit(code=1)
|
|
@@ -1,59 +1,50 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: optpricing
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.0
|
|
4
4
|
Summary: A financial options pricing and analysis library.
|
|
5
|
-
Author
|
|
6
|
-
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
|
-
|
|
5
|
+
Author: Diljit Singh
|
|
6
|
+
License-Expression: MIT
|
|
16
7
|
Project-URL: Homepage, https://diljit22.github.io/optpricing/
|
|
17
|
-
|
|
18
|
-
|
|
8
|
+
Project-URL: Documentation, https://diljit22.github.io/optpricing/
|
|
9
|
+
Project-URL: Repository, https://github.com/Diljit22/optpricing
|
|
10
|
+
Project-URL: Issues, https://github.com/Diljit22/optpricing/issues
|
|
11
|
+
Project-URL: Changelog, https://github.com/Diljit22/optpricing/blob/main/CHANGELOG.md
|
|
12
|
+
Keywords: options,derivatives,quantitative-finance,option-pricing,heston,monte-carlo,fft,calibration
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
15
|
+
Classifier: Intended Audience :: Science/Research
|
|
19
16
|
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
23
|
Classifier: Topic :: Office/Business :: Financial :: Investment
|
|
21
|
-
|
|
24
|
+
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
25
|
+
Requires-Python: >=3.11
|
|
22
26
|
Description-Content-Type: text/markdown
|
|
23
27
|
License-File: LICENSE
|
|
24
|
-
Requires-Dist: numpy
|
|
25
|
-
Requires-Dist: scipy
|
|
26
|
-
Requires-Dist: pandas
|
|
27
|
-
Requires-Dist: numba
|
|
28
|
-
Requires-Dist: pyyaml
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist: plotly
|
|
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"
|
|
28
|
+
Requires-Dist: numpy>=2.3.2
|
|
29
|
+
Requires-Dist: scipy>=1.16.1
|
|
30
|
+
Requires-Dist: pandas>=2.3.3
|
|
31
|
+
Requires-Dist: numba>=0.63
|
|
32
|
+
Requires-Dist: pyyaml>=6.0.3
|
|
33
|
+
Requires-Dist: typer>=0.15.3
|
|
34
|
+
Requires-Dist: yfinance>=0.2.63
|
|
35
|
+
Provides-Extra: ui
|
|
36
|
+
Requires-Dist: streamlit>=1.45.1; extra == "ui"
|
|
37
|
+
Requires-Dist: plotly>=6.1.2; extra == "ui"
|
|
47
38
|
Dynamic: license-file
|
|
48
39
|
|
|
49
40
|
# OptPricing: A Quantitative Finance Library for Derivative Pricing and Analysis
|
|
50
41
|
|
|
51
|
-
[](https://github.com/diljit22/optpricing/actions/workflows/ci.yml)
|
|
52
43
|
[](https://codecov.io/gh/diljit22/optpricing)
|
|
53
|
-
[](https://github.com/diljit22/optpricing/actions/workflows/ci.yml)
|
|
44
|
+
[](https://github.com/diljit22/optpricing/actions/workflows/pages.yml)
|
|
55
45
|
[](https://pypi.org/project/optpricing/)
|
|
56
|
-
[](https://www.python.org/downloads/)
|
|
47
|
+
[](https://github.com/astral-sh/ruff)
|
|
57
48
|
[](https://opensource.org/licenses/MIT)
|
|
58
49
|
|
|
59
50
|
`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.
|
|
@@ -90,12 +81,13 @@ Diljit Singh
|
|
|
90
81
|
|
|
91
82
|
## Quick Start
|
|
92
83
|
|
|
93
|
-
`optpricing`
|
|
84
|
+
`optpricing` installs with `pip` (or `uv`) and supports Python 3.11 through 3.14.
|
|
94
85
|
|
|
95
86
|
### 1. Install the Library
|
|
96
87
|
|
|
97
88
|
```bash
|
|
98
|
-
pip install optpricing
|
|
89
|
+
pip install optpricing # library + CLI
|
|
90
|
+
pip install "optpricing[ui]" # also the Streamlit dashboard
|
|
99
91
|
```
|
|
100
92
|
|
|
101
93
|
### 2. Download Historical Data
|
|
@@ -126,7 +118,7 @@ For more details, see the [CLI Guide](https://diljit22.github.io/optpricing/guid
|
|
|
126
118
|
|
|
127
119
|
### 4. Launch the Dashboard
|
|
128
120
|
|
|
129
|
-
Visualize option chains and model outputs, interact with a pricing calculator
|
|
121
|
+
Visualize option chains and model outputs, and interact with a pricing calculator covering 12 models and 8 techniques (the full library exposes 17 pricing models plus parity/implied-rate models, and 9 techniques). Requires the `ui` extra.
|
|
130
122
|
|
|
131
123
|
```bash
|
|
132
124
|
optpricing dashboard
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
CHANGELOG.md
|
|
2
|
+
LICENSE
|
|
3
|
+
MANIFEST.in
|
|
4
|
+
README.md
|
|
5
|
+
pyproject.toml
|
|
6
|
+
src/optpricing/__init__.py
|
|
7
|
+
src/optpricing/config.py
|
|
8
|
+
src/optpricing.egg-info/PKG-INFO
|
|
9
|
+
src/optpricing.egg-info/SOURCES.txt
|
|
10
|
+
src/optpricing.egg-info/dependency_links.txt
|
|
11
|
+
src/optpricing.egg-info/entry_points.txt
|
|
12
|
+
src/optpricing.egg-info/requires.txt
|
|
13
|
+
src/optpricing.egg-info/scm_file_list.json
|
|
14
|
+
src/optpricing.egg-info/scm_version.json
|
|
15
|
+
src/optpricing.egg-info/top_level.txt
|
|
16
|
+
src/optpricing/atoms/__init__.py
|
|
17
|
+
src/optpricing/atoms/bond.py
|
|
18
|
+
src/optpricing/atoms/option.py
|
|
19
|
+
src/optpricing/atoms/rate.py
|
|
20
|
+
src/optpricing/atoms/stock.py
|
|
21
|
+
src/optpricing/calibration/__init__.py
|
|
22
|
+
src/optpricing/calibration/calibrator.py
|
|
23
|
+
src/optpricing/calibration/fit_jump_parameters.py
|
|
24
|
+
src/optpricing/calibration/fit_market_params.py
|
|
25
|
+
src/optpricing/calibration/iv_surface.py
|
|
26
|
+
src/optpricing/calibration/technique_selector.py
|
|
27
|
+
src/optpricing/calibration/vectorized_bsm_iv.py
|
|
28
|
+
src/optpricing/calibration/vectorized_integration_iv.py
|
|
29
|
+
src/optpricing/calibration/vectorized_pricer.py
|
|
30
|
+
src/optpricing/cli/__init__.py
|
|
31
|
+
src/optpricing/cli/main.py
|
|
32
|
+
src/optpricing/cli/commands/__init__.py
|
|
33
|
+
src/optpricing/cli/commands/backtest.py
|
|
34
|
+
src/optpricing/cli/commands/calibrate.py
|
|
35
|
+
src/optpricing/cli/commands/dashboard.py
|
|
36
|
+
src/optpricing/cli/commands/data.py
|
|
37
|
+
src/optpricing/cli/commands/demo.py
|
|
38
|
+
src/optpricing/cli/commands/price.py
|
|
39
|
+
src/optpricing/cli/commands/tools.py
|
|
40
|
+
src/optpricing/dashboard/Home.py
|
|
41
|
+
src/optpricing/dashboard/__init__.py
|
|
42
|
+
src/optpricing/dashboard/plots.py
|
|
43
|
+
src/optpricing/dashboard/service.py
|
|
44
|
+
src/optpricing/dashboard/widgets.py
|
|
45
|
+
src/optpricing/dashboard/pages/1_Pricer_and_Greeks.py
|
|
46
|
+
src/optpricing/dashboard/pages/2_Calibration_and_IV.py
|
|
47
|
+
src/optpricing/dashboard/pages/3_Market_Analytics.py
|
|
48
|
+
src/optpricing/dashboard/pages/4_Model_Fitting.py
|
|
49
|
+
src/optpricing/dashboard/pages/5_Term_Structure.py
|
|
50
|
+
src/optpricing/dashboard/pages/__init__.py
|
|
51
|
+
src/optpricing/data/__init__.py
|
|
52
|
+
src/optpricing/data/historical_manager.py
|
|
53
|
+
src/optpricing/data/market_data_manager.py
|
|
54
|
+
src/optpricing/models/__init__.py
|
|
55
|
+
src/optpricing/models/bates.py
|
|
56
|
+
src/optpricing/models/blacks_approx.py
|
|
57
|
+
src/optpricing/models/bsm.py
|
|
58
|
+
src/optpricing/models/cev.py
|
|
59
|
+
src/optpricing/models/cgmy.py
|
|
60
|
+
src/optpricing/models/cir.py
|
|
61
|
+
src/optpricing/models/dupire_local.py
|
|
62
|
+
src/optpricing/models/heston.py
|
|
63
|
+
src/optpricing/models/hyperbolic.py
|
|
64
|
+
src/optpricing/models/kou.py
|
|
65
|
+
src/optpricing/models/merton_jump.py
|
|
66
|
+
src/optpricing/models/nig.py
|
|
67
|
+
src/optpricing/models/perpetual_put.py
|
|
68
|
+
src/optpricing/models/sabr.py
|
|
69
|
+
src/optpricing/models/sabr_jump.py
|
|
70
|
+
src/optpricing/models/vasicek.py
|
|
71
|
+
src/optpricing/models/vg.py
|
|
72
|
+
src/optpricing/models/base/__init__.py
|
|
73
|
+
src/optpricing/models/base/base_model.py
|
|
74
|
+
src/optpricing/models/base/validators.py
|
|
75
|
+
src/optpricing/parity/__init__.py
|
|
76
|
+
src/optpricing/parity/implied_rate.py
|
|
77
|
+
src/optpricing/parity/parity_model.py
|
|
78
|
+
src/optpricing/techniques/__init__.py
|
|
79
|
+
src/optpricing/techniques/american_monte_carlo.py
|
|
80
|
+
src/optpricing/techniques/closed_form.py
|
|
81
|
+
src/optpricing/techniques/crr.py
|
|
82
|
+
src/optpricing/techniques/fft.py
|
|
83
|
+
src/optpricing/techniques/integration.py
|
|
84
|
+
src/optpricing/techniques/leisen_reimer.py
|
|
85
|
+
src/optpricing/techniques/monte_carlo.py
|
|
86
|
+
src/optpricing/techniques/pde.py
|
|
87
|
+
src/optpricing/techniques/topm.py
|
|
88
|
+
src/optpricing/techniques/base/__init__.py
|
|
89
|
+
src/optpricing/techniques/base/base_technique.py
|
|
90
|
+
src/optpricing/techniques/base/greek_mixin.py
|
|
91
|
+
src/optpricing/techniques/base/iv_mixin.py
|
|
92
|
+
src/optpricing/techniques/base/lattice_technique.py
|
|
93
|
+
src/optpricing/techniques/base/pricing_result.py
|
|
94
|
+
src/optpricing/techniques/base/random_utils.py
|
|
95
|
+
src/optpricing/techniques/kernels/__init__.py
|
|
96
|
+
src/optpricing/techniques/kernels/american_mc_kernels.py
|
|
97
|
+
src/optpricing/techniques/kernels/lattice_kernels.py
|
|
98
|
+
src/optpricing/techniques/kernels/mc_kernels.py
|
|
99
|
+
src/optpricing/techniques/kernels/path_kernels.py
|
|
100
|
+
src/optpricing/workflows/__init__.py
|
|
101
|
+
src/optpricing/workflows/backtest_workflow.py
|
|
102
|
+
src/optpricing/workflows/daily_workflow.py
|
|
103
|
+
src/optpricing/workflows/configs/__init__.py
|
|
104
|
+
src/optpricing/workflows/configs/bates_config.py
|
|
105
|
+
src/optpricing/workflows/configs/bsm_config.py
|
|
106
|
+
src/optpricing/workflows/configs/cev_config.py
|
|
107
|
+
src/optpricing/workflows/configs/cgmy_config.py
|
|
108
|
+
src/optpricing/workflows/configs/heston_config.py
|
|
109
|
+
src/optpricing/workflows/configs/hyperbolic_config.py
|
|
110
|
+
src/optpricing/workflows/configs/kou_config.py
|
|
111
|
+
src/optpricing/workflows/configs/merton_config.py
|
|
112
|
+
src/optpricing/workflows/configs/nig_config.py
|
|
113
|
+
src/optpricing/workflows/configs/sabr_config.py
|
|
114
|
+
src/optpricing/workflows/configs/sabr_jump_config.py
|
|
115
|
+
src/optpricing/workflows/configs/vg_config.py
|
|
116
|
+
tests/atoms/test_bond.py
|
|
117
|
+
tests/atoms/test_option.py
|
|
118
|
+
tests/atoms/test_rate.py
|
|
119
|
+
tests/atoms/test_stock.py
|
|
120
|
+
tests/calibration/test_calibrator.py
|
|
121
|
+
tests/calibration/test_fit_jump_parameters.py
|
|
122
|
+
tests/calibration/test_fit_market_params.py
|
|
123
|
+
tests/calibration/test_iv_surface.py
|
|
124
|
+
tests/calibration/test_technique_selector.py
|
|
125
|
+
tests/calibration/test_vectorized_bsm_iv.py
|
|
126
|
+
tests/calibration/test_vectorized_integration_iv.py
|
|
127
|
+
tests/calibration/test_vectorized_pricer.py
|
|
128
|
+
tests/cli/test_main.py
|
|
129
|
+
tests/cli/commands/test_backtest.py
|
|
130
|
+
tests/cli/commands/test_calibrate.py
|
|
131
|
+
tests/cli/commands/test_data.py
|
|
132
|
+
tests/cli/commands/test_price.py
|
|
133
|
+
tests/cli/commands/test_tools.py
|
|
134
|
+
tests/dashboard/test_plots.py
|
|
135
|
+
tests/dashboard/test_service.py
|
|
136
|
+
tests/dashboard/test_widgets.py
|
|
137
|
+
tests/data/test_historical_manager.py
|
|
138
|
+
tests/data/test_market_data_manager.py
|
|
139
|
+
tests/models/test_bates.py
|
|
140
|
+
tests/models/test_blacks_approx.py
|
|
141
|
+
tests/models/test_bsm.py
|
|
142
|
+
tests/models/test_cev.py
|
|
143
|
+
tests/models/test_cgmy.py
|
|
144
|
+
tests/models/test_cir.py
|
|
145
|
+
tests/models/test_dupire_local.py
|
|
146
|
+
tests/models/test_heston.py
|
|
147
|
+
tests/models/test_hyperbolic.py
|
|
148
|
+
tests/models/test_kou.py
|
|
149
|
+
tests/models/test_merton_jump.py
|
|
150
|
+
tests/models/test_nig.py
|
|
151
|
+
tests/models/test_perpetual_put.py
|
|
152
|
+
tests/models/test_sabr.py
|
|
153
|
+
tests/models/test_sabr_jump.py
|
|
154
|
+
tests/models/test_vasicek.py
|
|
155
|
+
tests/models/test_vg.py
|
|
156
|
+
tests/models/base/test_base_model.py
|
|
157
|
+
tests/models/base/test_validators.py
|
|
158
|
+
tests/parity/test_implied_rate.py
|
|
159
|
+
tests/parity/test_parity_model.py
|
|
160
|
+
tests/techniques/test_american_monte_carlo.py
|
|
161
|
+
tests/techniques/test_closed_form.py
|
|
162
|
+
tests/techniques/test_crr.py
|
|
163
|
+
tests/techniques/test_fft.py
|
|
164
|
+
tests/techniques/test_integration.py
|
|
165
|
+
tests/techniques/test_leisen_reimer.py
|
|
166
|
+
tests/techniques/test_monte_carlo.py
|
|
167
|
+
tests/techniques/test_pde.py
|
|
168
|
+
tests/techniques/test_topm.py
|
|
169
|
+
tests/techniques/base/test_greek_mixin.py
|
|
170
|
+
tests/techniques/base/test_iv_mixin.py
|
|
171
|
+
tests/techniques/base/test_pricing_result.py
|
|
172
|
+
tests/techniques/base/test_random_utils.py
|
|
173
|
+
tests/techniques/kernels/test_lattice_kernels.py
|
|
174
|
+
tests/techniques/kernels/test_mc_kernels.py
|
|
175
|
+
tests/techniques/kernels/test_path_kernels.py
|
|
176
|
+
tests/workflows/test_backtest_workflow.py
|
|
177
|
+
tests/workflows/test_daily_workflow.py
|