optPricing 2.3.3__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.3/src/optpricing.egg-info → optpricing-2.4.0}/PKG-INFO +52 -60
- {optpricing-2.3.3 → optpricing-2.4.0}/README.md +22 -21
- optpricing-2.4.0/pyproject.toml +144 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/cli/commands/dashboard.py +2 -1
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/dashboard/plots.py +1 -0
- {optpricing-2.3.3 → optpricing-2.4.0/src/optpricing.egg-info}/PKG-INFO +52 -60
- 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.3 → optpricing-2.4.0}/tests/cli/commands/test_price.py +5 -1
- optpricing-2.3.3/.coveragerc +0 -4
- optpricing-2.3.3/.github/ISSUE_TEMPLATE/bug_report.md +0 -34
- optpricing-2.3.3/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- optpricing-2.3.3/.github/workflows/ci.yml +0 -45
- optpricing-2.3.3/.github/workflows/pages.yml +0 -54
- optpricing-2.3.3/.github/workflows/publish.yml +0 -43
- optpricing-2.3.3/.gitignore +0 -31
- optpricing-2.3.3/.pre-commit-config.yaml +0 -17
- optpricing-2.3.3/CHANGELOG.md +0 -7
- optpricing-2.3.3/CODE_OF_CONDUCT.md +0 -128
- optpricing-2.3.3/CONTRIBUTING.md +0 -58
- optpricing-2.3.3/MANIFEST.in +0 -6
- optpricing-2.3.3/PULL_REQUEST_TEMPLATE.md +0 -23
- optpricing-2.3.3/SECURITY.md +0 -15
- optpricing-2.3.3/artifacts/backtest_logs/SPY_backtest_2025-06-17.csv +0 -3
- optpricing-2.3.3/artifacts/backtest_logs/SPY_backtest_2025-07-07.csv +0 -6
- optpricing-2.3.3/artifacts/backtest_logs/SPY_backtest_2025-07-09.csv +0 -8
- optpricing-2.3.3/artifacts/calibrated_params/SPY_BSM_2023-01-01.json +0 -8
- optpricing-2.3.3/artifacts/calibrated_params/SPY_BSM_2025-06-17.json +0 -3
- optpricing-2.3.3/artifacts/calibrated_params/SPY_BSM_2025-07-03.json +0 -8
- optpricing-2.3.3/artifacts/calibrated_params/SPY_BSM_2025-07-07.json +0 -8
- optpricing-2.3.3/artifacts/calibrated_params/SPY_BSM_2025-07-08.json +0 -8
- optpricing-2.3.3/artifacts/calibrated_params/SPY_BSM_2025-07-09.json +0 -8
- optpricing-2.3.3/artifacts/calibrated_params/SPY_Black-Scholes_2025-06-17.json +0 -3
- optpricing-2.3.3/artifacts/calibrated_params/SPY_Merton_2025-06-17.json +0 -7
- optpricing-2.3.3/artifacts/calibrated_params/SPY_Merton_2025-07-03.json +0 -11
- optpricing-2.3.3/artifacts/calibrated_params/SPY_Merton_2025-07-07.json +0 -11
- optpricing-2.3.3/artifacts/calibrated_params/SPY_Merton_2025-07-08.json +0 -11
- optpricing-2.3.3/artifacts/calibrated_params/SPY_Merton_2025-07-09.json +0 -11
- optpricing-2.3.3/artifacts/calibration_logs/SPY_evaluation_2025-06-16.csv +0 -3
- optpricing-2.3.3/codecov.yml +0 -7
- optpricing-2.3.3/config.yaml +0 -34
- optpricing-2.3.3/data/historical_data/AAPL_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/AMC_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/AMD_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/AMZN_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/BAC_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/BA_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/CAT_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/CVX_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/GME_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/GOOGL_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/GS_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/HD_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/JNJ_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/JPM_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/META_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/MSFT_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/NKE_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/NVDA_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/PFE_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/QQQ_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/SPY_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/SPY_5y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/TSLA_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/UNH_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/WMT_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/historical_data/XOM_10y_returns.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AAPL_2025-06-16.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AAPL_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AAPL_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AAPL_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AAPL_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AAPL_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AAPL_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AAPL_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMC_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMC_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMC_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMC_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMC_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMC_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMC_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMD_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMD_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMD_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMD_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMD_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMD_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMD_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMZN_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMZN_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMZN_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMZN_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMZN_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMZN_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/AMZN_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/BAC_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/BAC_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/BAC_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/BAC_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/BAC_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/BAC_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/BAC_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/BA_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/BA_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/BA_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/BA_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/BA_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/BA_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/BA_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/CAT_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/CAT_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/CAT_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/CAT_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/CAT_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/CAT_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/CAT_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/CVX_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/CVX_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/CVX_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/CVX_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/CVX_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/CVX_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/CVX_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GME_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GME_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GME_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GME_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GME_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GME_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GME_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GOOGL_2025-06-16.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GOOGL_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GOOGL_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GOOGL_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GOOGL_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GOOGL_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GOOGL_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GOOGL_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GS_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GS_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GS_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GS_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GS_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GS_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/GS_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/HD_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/HD_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/HD_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/HD_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/HD_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/HD_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/HD_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/JNJ_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/JNJ_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/JNJ_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/JNJ_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/JNJ_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/JNJ_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/JNJ_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/JPM_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/JPM_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/JPM_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/JPM_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/JPM_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/JPM_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/JPM_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/META_2025-06-16.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/META_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/META_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/META_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/META_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/META_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/META_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/META_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/MSFT_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/MSFT_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/MSFT_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/MSFT_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/MSFT_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/MSFT_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/MSFT_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/NKE_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/NKE_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/NKE_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/NKE_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/NKE_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/NKE_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/NKE_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/NVDA_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/NVDA_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/NVDA_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/NVDA_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/NVDA_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/NVDA_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/NVDA_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/PFE_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/PFE_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/PFE_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/PFE_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/PFE_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/PFE_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/PFE_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/QQQ_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/QQQ_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/QQQ_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/QQQ_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/QQQ_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/QQQ_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/QQQ_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/SPY_2025-06-16.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/SPY_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/SPY_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/SPY_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/SPY_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/SPY_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/SPY_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/SPY_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/TSLA_2025-06-16.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/TSLA_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/TSLA_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/TSLA_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/TSLA_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/TSLA_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/TSLA_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/TSLA_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/UNH_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/UNH_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/UNH_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/UNH_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/UNH_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/UNH_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/UNH_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/WMT_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/WMT_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/WMT_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/WMT_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/WMT_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/WMT_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/WMT_2025-07-09.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/XOM_2025-06-17.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/XOM_2025-06-26.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/XOM_2025-07-02.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/XOM_2025-07-03.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/XOM_2025-07-07.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/XOM_2025-07-08.parquet +0 -0
- optpricing-2.3.3/data/market_data_snapshots/XOM_2025-07-09.parquet +0 -0
- optpricing-2.3.3/docs/guide/API.md +0 -127
- optpricing-2.3.3/docs/guide/CLI.md +0 -150
- optpricing-2.3.3/docs/guide/dashboard.md +0 -53
- optpricing-2.3.3/docs/guide/examples.md +0 -66
- optpricing-2.3.3/docs/guide/getting_started.md +0 -133
- optpricing-2.3.3/docs/guide/installation.md +0 -61
- optpricing-2.3.3/docs/guide/introduction.md +0 -23
- optpricing-2.3.3/docs/images/bates.png +0 -0
- optpricing-2.3.3/docs/images/calibration.png +0 -0
- optpricing-2.3.3/docs/images/fit_jump.png +0 -0
- optpricing-2.3.3/docs/images/zcb.png +0 -0
- optpricing-2.3.3/docs/index.md +0 -45
- optpricing-2.3.3/docs/reference/atoms/index.md +0 -7
- optpricing-2.3.3/docs/reference/calibration/index.md +0 -7
- optpricing-2.3.3/docs/reference/cli/index.md +0 -8
- optpricing-2.3.3/docs/reference/dashboard/index.md +0 -6
- optpricing-2.3.3/docs/reference/data/index.md +0 -6
- optpricing-2.3.3/docs/reference/index.md +0 -77
- optpricing-2.3.3/docs/reference/models/index.md +0 -9
- optpricing-2.3.3/docs/reference/parity/index.md +0 -5
- optpricing-2.3.3/docs/reference/techniques/index.md +0 -6
- optpricing-2.3.3/docs/reference/workflows/index.md +0 -6
- optpricing-2.3.3/examples/american_options_benchmark.py +0 -208
- optpricing-2.3.3/examples/european_options_benchmark.py +0 -453
- optpricing-2.3.3/examples/getting_started.py +0 -47
- optpricing-2.3.3/examples/rate_models_benchmark.py +0 -55
- optpricing-2.3.3/mkdocs.yml +0 -87
- optpricing-2.3.3/pyproject.toml +0 -97
- optpricing-2.3.3/src/optpricing.egg-info/SOURCES.txt +0 -438
- optpricing-2.3.3/src/optpricing.egg-info/requires.txt +0 -24
- {optpricing-2.3.3 → optpricing-2.4.0}/LICENSE +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/setup.cfg +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/atoms/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/atoms/bond.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/atoms/option.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/atoms/rate.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/atoms/stock.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/calibration/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/calibration/calibrator.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/calibration/fit_jump_parameters.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/calibration/fit_market_params.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/calibration/iv_surface.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/calibration/technique_selector.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/calibration/vectorized_bsm_iv.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/calibration/vectorized_integration_iv.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/calibration/vectorized_pricer.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/cli/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/cli/commands/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/cli/commands/backtest.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/cli/commands/calibrate.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/cli/commands/data.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/cli/commands/demo.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/cli/commands/price.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/cli/commands/tools.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/cli/main.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/config.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/dashboard/Home.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/dashboard/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/dashboard/pages/1_Pricer_and_Greeks.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/dashboard/pages/2_Calibration_and_IV.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/dashboard/pages/3_Market_Analytics.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/dashboard/pages/4_Model_Fitting.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/dashboard/pages/5_Term_Structure.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/dashboard/pages/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/dashboard/service.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/dashboard/widgets.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/data/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/data/historical_manager.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/data/market_data_manager.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/base/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/base/base_model.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/base/validators.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/bates.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/blacks_approx.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/bsm.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/cev.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/cgmy.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/cir.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/dupire_local.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/heston.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/hyperbolic.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/kou.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/merton_jump.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/nig.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/perpetual_put.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/sabr.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/sabr_jump.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/vasicek.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/models/vg.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/parity/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/parity/implied_rate.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/parity/parity_model.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/american_monte_carlo.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/base/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/base/base_technique.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/base/greek_mixin.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/base/iv_mixin.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/base/lattice_technique.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/base/pricing_result.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/base/random_utils.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/closed_form.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/crr.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/fft.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/integration.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/kernels/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/kernels/american_mc_kernels.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/kernels/lattice_kernels.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/kernels/mc_kernels.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/kernels/path_kernels.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/leisen_reimer.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/monte_carlo.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/pde.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/techniques/topm.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/backtest_workflow.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/configs/__init__.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/configs/bates_config.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/configs/bsm_config.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/configs/cev_config.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/configs/cgmy_config.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/configs/heston_config.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/configs/hyperbolic_config.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/configs/kou_config.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/configs/merton_config.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/configs/nig_config.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/configs/sabr_config.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/configs/sabr_jump_config.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/configs/vg_config.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing/workflows/daily_workflow.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing.egg-info/dependency_links.txt +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing.egg-info/entry_points.txt +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/src/optpricing.egg-info/top_level.txt +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/atoms/test_bond.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/atoms/test_option.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/atoms/test_rate.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/atoms/test_stock.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/calibration/test_calibrator.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/calibration/test_fit_jump_parameters.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/calibration/test_fit_market_params.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/calibration/test_iv_surface.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/calibration/test_technique_selector.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/calibration/test_vectorized_bsm_iv.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/calibration/test_vectorized_integration_iv.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/calibration/test_vectorized_pricer.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/cli/commands/test_backtest.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/cli/commands/test_calibrate.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/cli/commands/test_data.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/cli/commands/test_tools.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/cli/test_main.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/dashboard/test_plots.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/dashboard/test_service.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/dashboard/test_widgets.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/data/test_historical_manager.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/data/test_market_data_manager.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/base/test_base_model.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/base/test_validators.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_bates.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_blacks_approx.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_bsm.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_cev.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_cgmy.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_cir.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_dupire_local.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_heston.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_hyperbolic.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_kou.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_merton_jump.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_nig.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_perpetual_put.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_sabr.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_sabr_jump.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_vasicek.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/models/test_vg.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/parity/test_implied_rate.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/parity/test_parity_model.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/base/test_greek_mixin.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/base/test_iv_mixin.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/base/test_pricing_result.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/base/test_random_utils.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/kernels/test_lattice_kernels.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/kernels/test_mc_kernels.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/kernels/test_path_kernels.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/test_american_monte_carlo.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/test_closed_form.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/test_crr.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/test_fft.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/test_integration.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/test_leisen_reimer.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/test_monte_carlo.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/test_pde.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/techniques/test_topm.py +0 -0
- {optpricing-2.3.3 → optpricing-2.4.0}/tests/workflows/test_backtest_workflow.py +0 -0
- {optpricing-2.3.3 → 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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
Project-URL: Homepage, https://diljit22.github.io/quantFin/
|
|
17
|
-
Classifier: Programming Language :: Python :: 3
|
|
18
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
5
|
+
Author: Diljit Singh
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://diljit22.github.io/optpricing/
|
|
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/quantfin/actions/workflows/ci.yml)
|
|
42
|
+
[](https://github.com/diljit22/optpricing/actions/workflows/ci.yml)
|
|
43
|
+
[](https://codecov.io/gh/diljit22/optpricing)
|
|
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
|
|
@@ -106,7 +98,7 @@ Some models require historical data (e.g., for calibration). Download data for a
|
|
|
106
98
|
optpricing data download --ticker SPY
|
|
107
99
|
```
|
|
108
100
|
|
|
109
|
-
For more details, see the [Getting Started Guide](https://diljit22.github.io/
|
|
101
|
+
For more details, see the [Getting Started Guide](https://diljit22.github.io/optpricing/guide/getting_started/).
|
|
110
102
|
|
|
111
103
|
### 3. Use the CLI
|
|
112
104
|
|
|
@@ -122,17 +114,17 @@ To price the same contract as an American Option use:
|
|
|
122
114
|
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
115
|
```
|
|
124
116
|
|
|
125
|
-
For more details, see the [CLI Guide](https://diljit22.github.io/
|
|
117
|
+
For more details, see the [CLI Guide](https://diljit22.github.io/optpricing/guide/CLI/).
|
|
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
|
|
133
125
|
```
|
|
134
126
|
|
|
135
|
-
For more details, see the [Dashboard Guide](https://diljit22.github.io/
|
|
127
|
+
For more details, see the [Dashboard Guide](https://diljit22.github.io/optpricing/guide/dashboard/).
|
|
136
128
|
|
|
137
129
|
### 5. Use the Programmatic API
|
|
138
130
|
|
|
@@ -186,7 +178,7 @@ print(f"Vasicek ZCB Price: {p_vasi:.4f}")
|
|
|
186
178
|
print(f"CIR ZCB Price: {p_cir:.4f}")
|
|
187
179
|
```
|
|
188
180
|
|
|
189
|
-
For more details, see the [API Guide](https://diljit22.github.io/
|
|
181
|
+
For more details, see the [API Guide](https://diljit22.github.io/optpricing/guide/API/).
|
|
190
182
|
|
|
191
183
|
---
|
|
192
184
|
|
|
@@ -194,18 +186,18 @@ For more details, see the [API Guide](https://diljit22.github.io/quantFin/guide/
|
|
|
194
186
|
|
|
195
187
|
The full documentation includes installation instructions, user guides, examples, and a complete API reference.
|
|
196
188
|
|
|
197
|
-
* **[View the Official Documentation](https://diljit22.github.io/
|
|
189
|
+
* **[View the Official Documentation](https://diljit22.github.io/optpricing/)**
|
|
198
190
|
|
|
199
191
|
### Guides
|
|
200
192
|
|
|
201
|
-
* [Introduction](https://diljit22.github.io/
|
|
202
|
-
* [Installation](https://diljit22.github.io/
|
|
203
|
-
* [Getting Started](https://diljit22.github.io/
|
|
204
|
-
* [CLI](https://diljit22.github.io/
|
|
205
|
-
* [Dashboard](https://diljit22.github.io/
|
|
206
|
-
* [API](https://diljit22.github.io/
|
|
207
|
-
* [Examples](https://diljit22.github.io/
|
|
208
|
-
* [API Reference](https://diljit22.github.io/
|
|
193
|
+
* [Introduction](https://diljit22.github.io/optpricing/guide/introduction/)
|
|
194
|
+
* [Installation](https://diljit22.github.io/optpricing/guide/installation/)
|
|
195
|
+
* [Getting Started](https://diljit22.github.io/optpricing/guide/getting_started/)
|
|
196
|
+
* [CLI](https://diljit22.github.io/optpricing/guide/CLI/)
|
|
197
|
+
* [Dashboard](https://diljit22.github.io/optpricing/guide/dashboard/)
|
|
198
|
+
* [API](https://diljit22.github.io/optpricing/guide/API/)
|
|
199
|
+
* [Examples](https://diljit22.github.io/optpricing/guide/examples/)
|
|
200
|
+
* [API Reference](https://diljit22.github.io/optpricing/reference/)
|
|
209
201
|
|
|
210
202
|
## Contributing
|
|
211
203
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# OptPricing: A Quantitative Finance Library for Derivative Pricing and Analysis
|
|
2
2
|
|
|
3
|
-
[](https://github.com/diljit22/quantfin/actions/workflows/ci.yml)
|
|
3
|
+
[](https://github.com/diljit22/optpricing/actions/workflows/ci.yml)
|
|
4
|
+
[](https://codecov.io/gh/diljit22/optpricing)
|
|
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
|
|
@@ -58,7 +59,7 @@ Some models require historical data (e.g., for calibration). Download data for a
|
|
|
58
59
|
optpricing data download --ticker SPY
|
|
59
60
|
```
|
|
60
61
|
|
|
61
|
-
For more details, see the [Getting Started Guide](https://diljit22.github.io/
|
|
62
|
+
For more details, see the [Getting Started Guide](https://diljit22.github.io/optpricing/guide/getting_started/).
|
|
62
63
|
|
|
63
64
|
### 3. Use the CLI
|
|
64
65
|
|
|
@@ -74,17 +75,17 @@ To price the same contract as an American Option use:
|
|
|
74
75
|
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
|
```
|
|
76
77
|
|
|
77
|
-
For more details, see the [CLI Guide](https://diljit22.github.io/
|
|
78
|
+
For more details, see the [CLI Guide](https://diljit22.github.io/optpricing/guide/CLI/).
|
|
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
|
|
85
86
|
```
|
|
86
87
|
|
|
87
|
-
For more details, see the [Dashboard Guide](https://diljit22.github.io/
|
|
88
|
+
For more details, see the [Dashboard Guide](https://diljit22.github.io/optpricing/guide/dashboard/).
|
|
88
89
|
|
|
89
90
|
### 5. Use the Programmatic API
|
|
90
91
|
|
|
@@ -138,7 +139,7 @@ print(f"Vasicek ZCB Price: {p_vasi:.4f}")
|
|
|
138
139
|
print(f"CIR ZCB Price: {p_cir:.4f}")
|
|
139
140
|
```
|
|
140
141
|
|
|
141
|
-
For more details, see the [API Guide](https://diljit22.github.io/
|
|
142
|
+
For more details, see the [API Guide](https://diljit22.github.io/optpricing/guide/API/).
|
|
142
143
|
|
|
143
144
|
---
|
|
144
145
|
|
|
@@ -146,18 +147,18 @@ For more details, see the [API Guide](https://diljit22.github.io/quantFin/guide/
|
|
|
146
147
|
|
|
147
148
|
The full documentation includes installation instructions, user guides, examples, and a complete API reference.
|
|
148
149
|
|
|
149
|
-
* **[View the Official Documentation](https://diljit22.github.io/
|
|
150
|
+
* **[View the Official Documentation](https://diljit22.github.io/optpricing/)**
|
|
150
151
|
|
|
151
152
|
### Guides
|
|
152
153
|
|
|
153
|
-
* [Introduction](https://diljit22.github.io/
|
|
154
|
-
* [Installation](https://diljit22.github.io/
|
|
155
|
-
* [Getting Started](https://diljit22.github.io/
|
|
156
|
-
* [CLI](https://diljit22.github.io/
|
|
157
|
-
* [Dashboard](https://diljit22.github.io/
|
|
158
|
-
* [API](https://diljit22.github.io/
|
|
159
|
-
* [Examples](https://diljit22.github.io/
|
|
160
|
-
* [API Reference](https://diljit22.github.io/
|
|
154
|
+
* [Introduction](https://diljit22.github.io/optpricing/guide/introduction/)
|
|
155
|
+
* [Installation](https://diljit22.github.io/optpricing/guide/installation/)
|
|
156
|
+
* [Getting Started](https://diljit22.github.io/optpricing/guide/getting_started/)
|
|
157
|
+
* [CLI](https://diljit22.github.io/optpricing/guide/CLI/)
|
|
158
|
+
* [Dashboard](https://diljit22.github.io/optpricing/guide/dashboard/)
|
|
159
|
+
* [API](https://diljit22.github.io/optpricing/guide/API/)
|
|
160
|
+
* [Examples](https://diljit22.github.io/optpricing/guide/examples/)
|
|
161
|
+
* [API Reference](https://diljit22.github.io/optpricing/reference/)
|
|
161
162
|
|
|
162
163
|
## Contributing
|
|
163
164
|
|
|
@@ -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)
|
|
@@ -210,6 +210,7 @@ def plot_error_heatmap(
|
|
|
210
210
|
|
|
211
211
|
|
|
212
212
|
def plot_calendar_heatmap(market_data: pd.DataFrame) -> go.Figure:
|
|
213
|
+
"""Plot the calandar heatmap."""
|
|
213
214
|
if market_data.empty:
|
|
214
215
|
return go.Figure().update_layout(title="No market data to plot calendar.")
|
|
215
216
|
df = market_data.copy()
|