financetoolkit 2.3.2__tar.gz → 2.3.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/PKG-INFO +7 -4
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/README.md +4 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/cache_controller.py +24 -16
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/policy_model.py +13 -0
- financetoolkit-2.3.3/financetoolkit/cache/serialization_model.py +526 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/sqlite_model.py +37 -44
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/currencies_model.py +0 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/discovery/discovery_controller.py +102 -33
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/discovery/discovery_model.py +267 -24
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/causal_inference_model.py +0 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/data_model.py +3 -3
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/econometrics_controller.py +16 -22
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/forecast_evaluation_model.py +2 -25
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/hypothesis_testing_model.py +0 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/panel_data_model.py +0 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/regression_model.py +0 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/specification_tests_model.py +2 -6
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/state_space_model.py +15 -14
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/unitroot_model.py +3 -31
- financetoolkit-2.3.3/financetoolkit/economics/bea_model.py +67 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/bls_model.py +32 -5
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/cboe_model.py +4 -1
- financetoolkit-2.3.3/financetoolkit/economics/census_model.py +109 -0
- financetoolkit-2.3.3/financetoolkit/economics/dol_model.py +75 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/economics_controller.py +384 -214
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/fmp_model.py +6 -25
- financetoolkit-2.3.3/financetoolkit/economics/futures_model.py +263 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/gmdb_model.py +0 -9
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/helpers.py +88 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/oecd_model.py +1 -4
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/yfinance_model.py +8 -1
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/etf/etf_controller.py +55 -31
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/finra_model.py +4 -4
- financetoolkit-2.3.3/financetoolkit/fixedincome/bond_data_model.py +251 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/bond_model.py +6 -6
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/curve_model.py +5 -15
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/eiopa_model.py +3 -7
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/fixedincome_controller.py +1781 -1828
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/helpers.py +35 -0
- financetoolkit-2.3.3/financetoolkit/fixedincome/hqm_model.py +253 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/short_rate_model.py +0 -2
- financetoolkit-2.3.3/financetoolkit/fixedincome/treasurydirect_model.py +212 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/yieldcurve_model.py +2 -4
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fmp_model.py +181 -53
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fundamentals_model.py +0 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/helpers.py +304 -23
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/historical_model.py +33 -34
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/__main__.py +1 -1
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/analytics_model.py +98 -10
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/auth_model.py +444 -101
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/coercion_model.py +61 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/config.yaml +152 -69
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/diagnostics_model.py +9 -42
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/formatting_model.py +63 -16
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/inspection_controller.py +2 -7
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/mcp_controller.py +198 -78
- financetoolkit-2.3.3/financetoolkit/mcp_server/mcpb/manifest.json +190 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/mcpb/pyproject.toml +2 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/provider_model.py +23 -4
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/registry_controller.py +152 -89
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/setup_model.py +91 -14
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/tools_model.py +12 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/altman_model.py +115 -34
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/beneish_model.py +0 -2
- financetoolkit-2.3.3/financetoolkit/models/chs_model.py +367 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/credit_model.py +0 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/fulmer_model.py +11 -36
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/grover_model.py +5 -3
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/growth_model.py +0 -2
- financetoolkit-2.3.3/financetoolkit/models/helpers.py +338 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/intrinsic_model.py +9 -10
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/models_controller.py +1412 -742
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/ohlson_model.py +21 -15
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/quality_model.py +0 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/springate_model.py +6 -4
- financetoolkit-2.3.3/financetoolkit/models/taffler_model.py +179 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/wacc_model.py +0 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/zmijewski_model.py +5 -3
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/balance_yf.csv +1 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/statistics_yf.csv +1 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization_model.py +25 -10
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/binomial_trees_model.py +10 -3
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/black_scholes_model.py +16 -44
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/exotics_model.py +4 -22
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/helpers.py +66 -11
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/market_metrics_model.py +0 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/options_controller.py +346 -250
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/options_model.py +9 -14
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/risk_neutral_density_model.py +0 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/svi_model.py +0 -2
- financetoolkit-2.3.3/financetoolkit/performance/helpers.py +93 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/performance/performance_controller.py +601 -48
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/performance/performance_model.py +545 -44
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/attribution_model.py +61 -7
- financetoolkit-2.3.3/financetoolkit/portfolio/backtest_model.py +262 -0
- financetoolkit-2.3.3/financetoolkit/portfolio/construction_controller.py +4621 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/definition_model.py +0 -2
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/helpers.py +0 -17
- financetoolkit-2.3.3/financetoolkit/portfolio/optimization_model.py +4010 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/overview_model.py +3 -4
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/portfolio_controller.py +14 -35
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/portfolio_model.py +0 -1
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/efficiency_model.py +138 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/profitability_model.py +280 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/ratios_controller.py +7484 -4465
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/solvency_model.py +255 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/valuation_model.py +225 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/cvar_model.py +2 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/garch_model.py +8 -4
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/helpers.py +20 -20
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/market_liquidity_model.py +7 -3
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/realized_volatility_model.py +54 -12
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/risk_controller.py +216 -119
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/risk_model.py +142 -55
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/var_model.py +5 -20
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/technicals_controller.py +112 -636
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/toolkit_controller.py +165 -133
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/utilities/error_model.py +6 -5
- financetoolkit-2.3.3/financetoolkit/utilities/logger_model.py +127 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/utilities/requests_model.py +31 -12
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/utilities/statistics_model.py +240 -16
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/yfinance_model.py +90 -37
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/pyproject.toml +17 -23
- financetoolkit-2.3.2/financetoolkit/cache/serialization_model.py +0 -160
- financetoolkit-2.3.2/financetoolkit/mcp_server/mcpb/manifest.json +0 -190
- financetoolkit-2.3.2/financetoolkit/models/helpers.py +0 -43
- financetoolkit-2.3.2/financetoolkit/performance/helpers.py +0 -86
- financetoolkit-2.3.2/financetoolkit/portfolio/construction_controller.py +0 -1659
- financetoolkit-2.3.2/financetoolkit/portfolio/optimization_model.py +0 -987
- financetoolkit-2.3.2/financetoolkit/utilities/logger_model.py +0 -58
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/.gitignore +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/LICENSE.txt +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/coverage_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/frame_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/request_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/ticker_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/discovery/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/earnings_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/causality_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/cointegration_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/diagnostics_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/event_study_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/fama_macbeth_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/pairs_trading_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/regime_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/time_series_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/bis_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/boe_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/boj_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/dnb_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/ecb_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/eex_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/esrb_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/eurostat_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/frb_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/fred_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/freddie_mac_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/ibge_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/imf_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/macrohistory_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/mof_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/nber_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/ngfs_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/nyfed_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/ons_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/sbj_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/shiller_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/stoxx_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/treasury_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/etf/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/etf/etf_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/boc_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/bundesbank_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/derivative_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/ecb_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/esma_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/euribor_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/fed_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/fiscaldata_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/fmp_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/fred_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/norgesbank_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/rba_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/riksbank_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/mcpb/.mcpbignore +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/mcpb/LICENSE +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/mcpb/README.md +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/mcpb/finance_toolkit_icon.png +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/series_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/static/apple-touch-icon.png +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/static/favicon-32.png +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/static/favicon.ico +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/stats_page_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/damodaran_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/dupont_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/enterprise_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/eva_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/peers_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/piotroski_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/balance.csv +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/cash.csv +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/cash_yf.csv +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/income.csv +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/income_yf.csv +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/statistics.csv +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/greeks_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/performance/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/config.yaml +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/example_datasets/example_portfolio.csv +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/example_datasets/example_portfolio.xlsx +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/all_weather.yaml +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/balanced_60_40.yaml +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/barbell.yaml +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/bogleheads_three_fund.yaml +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/buffett_90_10.yaml +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/conservative_income.yaml +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/global_60_40.yaml +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/global_equity_growth.yaml +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/golden_butterfly.yaml +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/permanent_portfolio.yaml +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/small_cap_value_tilt.yaml +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/target_date_glidepath.yaml +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/us_equity_sectors.yaml +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/py.typed +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/helpers.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/liquidity_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/backtesting_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/copula_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/covar_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/evar_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/__init__.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/breadth_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/momentum_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/overlap_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/pattern_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/seasonality_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/volatility_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/utilities/dataframe_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/utilities/excel_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/utilities/factor_model.py +0 -0
- {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/utilities/validation_model.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: financetoolkit
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.3
|
|
4
4
|
Summary: Transparent and Efficient Financial Analysis
|
|
5
5
|
Project-URL: Homepage, https://www.jeroenbouma.com/projects/financetoolkit
|
|
6
6
|
Project-URL: Documentation, https://www.jeroenbouma.com/projects/financetoolkit/docs
|
|
@@ -26,7 +26,7 @@ Requires-Dist: openpyxl>=3.1
|
|
|
26
26
|
Requires-Dist: pandas>=3.0
|
|
27
27
|
Requires-Dist: python-calamine>=0.3.0; python_full_version < '3.15'
|
|
28
28
|
Requires-Dist: pyyaml>=6.0
|
|
29
|
-
Requires-Dist: requests>=2.32
|
|
29
|
+
Requires-Dist: requests>=2.32.4
|
|
30
30
|
Requires-Dist: scipy>=1.10
|
|
31
31
|
Requires-Dist: xlrd>=2.0
|
|
32
32
|
Requires-Dist: yfinance
|
|
@@ -34,6 +34,7 @@ Provides-Extra: econometrics
|
|
|
34
34
|
Requires-Dist: linearmodels>=6.0; extra == 'econometrics'
|
|
35
35
|
Requires-Dist: statsmodels>=0.14; extra == 'econometrics'
|
|
36
36
|
Provides-Extra: mcp
|
|
37
|
+
Requires-Dist: cryptography>=42; extra == 'mcp'
|
|
37
38
|
Requires-Dist: fastmcp>=3.4.2; extra == 'mcp'
|
|
38
39
|
Requires-Dist: linearmodels>=6.0; extra == 'mcp'
|
|
39
40
|
Requires-Dist: mcp[cli]<2,>=1.27.0; extra == 'mcp'
|
|
@@ -362,7 +363,7 @@ Options usually price more risk than follows, as their sellers want to be paid f
|
|
|
362
363
|
|
|
363
364
|
All three are listed in the United States and valued on earnings that lie years ahead, which makes US inflation and interest rates the backdrop to their share prices. In 2022, the year the maximum drawdown above shows each of them falling by more than half, inflation reached 9% and the Federal Reserve raised its policy rate from 0.12% to 4.38%.
|
|
364
365
|
|
|
365
|
-
The [economics](https://www.jeroenbouma.com/projects/financetoolkit/docs/economics) module covers 60+ countries with 50+ indicators, from GDP and unemployment to money supply and interest rates, and the [fixed income](https://www.jeroenbouma.com/projects/financetoolkit/docs/fixedincome) module adds bond yields, yield curves, central bank rates and
|
|
366
|
+
The [economics](https://www.jeroenbouma.com/projects/financetoolkit/docs/economics) module covers 60+ countries with 50+ indicators, from GDP and unemployment to money supply and interest rates, and the [fixed income](https://www.jeroenbouma.com/projects/financetoolkit/docs/fixedincome) module adds bond yields, yield curves, central bank rates and calculations on individual bonds. Both are reached through the same Toolkit instance, or on their own with `from financetoolkit import Economics, FixedIncome`:
|
|
366
367
|
|
|
367
368
|
```python
|
|
368
369
|
# Inflation on the same month a year earlier and the Federal Reserve's policy rate
|
|
@@ -492,7 +493,7 @@ The three US funds and SMH largely hold the same companies, with SOXX and SMH sh
|
|
|
492
493
|
|
|
493
494
|
## Building a Diversified Portfolio
|
|
494
495
|
|
|
495
|
-
A fund spreads the risk over the sector, but the sector still moves as one. The [portfolio](https://www.jeroenbouma.com/projects/financetoolkit/docs/portfolio-optimization) module builds portfolios from the tickers of any Toolkit: minimum variance, maximum Sharpe ratio, mean-variance, risk parity, Hierarchical Risk Parity, minimum CVaR and Black-Litterman weights, the efficient frontier, risk contributions, stress tests and attribution. Below the semiconductor fund is combined with health care (XLV), energy (XLE), long-term Treasuries (TLT) and gold (GLD):
|
|
496
|
+
A fund spreads the risk over the sector, but the sector still moves as one. The [portfolio](https://www.jeroenbouma.com/projects/financetoolkit/docs/portfolio-optimization) module builds portfolios from the tickers of any Toolkit: minimum variance, maximum Sharpe ratio, mean-variance, risk parity, Hierarchical Risk Parity, Hierarchical Equal Risk Contribution, Nested Clustered Optimization, minimum CVaR, minimum drawdown, maximum Omega and CVaR ratio, Black-Litterman, maximum diversification, minimum tracking error and growth optimal (Kelly) weights, the efficient frontier, risk contributions, stress tests and attribution. Below the semiconductor fund is combined with health care (XLV), energy (XLE), long-term Treasuries (TLT) and gold (GLD):
|
|
496
497
|
|
|
497
498
|
```python
|
|
498
499
|
# Initialize the Toolkit for funds across sectors and asset classes from 2021 to 2025
|
|
@@ -744,6 +745,8 @@ Alternatively, if your company's root certificate is already installed in your o
|
|
|
744
745
|
|
|
745
746
|
If none of this is possible, you can accept the risk and allow requests with an API key to be sent without verification by setting `FINANCETOOLKIT_ALLOW_UNVERIFIED_SSL=1` in the same way as above. Only do so on a network you trust: the connection is then encrypted to whoever answers it, which may not be the website you think you are talking to, and your API key is readable to them.
|
|
746
747
|
|
|
748
|
+
To go the other way and never send a request without verification, not even one without an API key, set `FINANCETOOLKIT_ALLOW_UNVERIFIED_SSL=0`. A hosted MCP server (the `sse` or `streamable-http` transport) does this by default, since the data it retrieves reaches every user through its cache.
|
|
749
|
+
|
|
747
750
|
> **Are you part of FinancialModelingPrep?**
|
|
748
751
|
|
|
749
752
|
*No, I am not*. I've merely picked them as the primary data provider given that they have a generous free tier and fair pricing compared to other providers. Therefore, any questions related to the data should go through [their contact form](https://site.financialmodelingprep.com/contact). When it comes to any type of ratios, performance metrics, risk metrics, technical indicators or economic indicators, feel free to reach out to me as this is my own work.
|
|
@@ -318,7 +318,7 @@ Options usually price more risk than follows, as their sellers want to be paid f
|
|
|
318
318
|
|
|
319
319
|
All three are listed in the United States and valued on earnings that lie years ahead, which makes US inflation and interest rates the backdrop to their share prices. In 2022, the year the maximum drawdown above shows each of them falling by more than half, inflation reached 9% and the Federal Reserve raised its policy rate from 0.12% to 4.38%.
|
|
320
320
|
|
|
321
|
-
The [economics](https://www.jeroenbouma.com/projects/financetoolkit/docs/economics) module covers 60+ countries with 50+ indicators, from GDP and unemployment to money supply and interest rates, and the [fixed income](https://www.jeroenbouma.com/projects/financetoolkit/docs/fixedincome) module adds bond yields, yield curves, central bank rates and
|
|
321
|
+
The [economics](https://www.jeroenbouma.com/projects/financetoolkit/docs/economics) module covers 60+ countries with 50+ indicators, from GDP and unemployment to money supply and interest rates, and the [fixed income](https://www.jeroenbouma.com/projects/financetoolkit/docs/fixedincome) module adds bond yields, yield curves, central bank rates and calculations on individual bonds. Both are reached through the same Toolkit instance, or on their own with `from financetoolkit import Economics, FixedIncome`:
|
|
322
322
|
|
|
323
323
|
```python
|
|
324
324
|
# Inflation on the same month a year earlier and the Federal Reserve's policy rate
|
|
@@ -448,7 +448,7 @@ The three US funds and SMH largely hold the same companies, with SOXX and SMH sh
|
|
|
448
448
|
|
|
449
449
|
## Building a Diversified Portfolio
|
|
450
450
|
|
|
451
|
-
A fund spreads the risk over the sector, but the sector still moves as one. The [portfolio](https://www.jeroenbouma.com/projects/financetoolkit/docs/portfolio-optimization) module builds portfolios from the tickers of any Toolkit: minimum variance, maximum Sharpe ratio, mean-variance, risk parity, Hierarchical Risk Parity, minimum CVaR and Black-Litterman weights, the efficient frontier, risk contributions, stress tests and attribution. Below the semiconductor fund is combined with health care (XLV), energy (XLE), long-term Treasuries (TLT) and gold (GLD):
|
|
451
|
+
A fund spreads the risk over the sector, but the sector still moves as one. The [portfolio](https://www.jeroenbouma.com/projects/financetoolkit/docs/portfolio-optimization) module builds portfolios from the tickers of any Toolkit: minimum variance, maximum Sharpe ratio, mean-variance, risk parity, Hierarchical Risk Parity, Hierarchical Equal Risk Contribution, Nested Clustered Optimization, minimum CVaR, minimum drawdown, maximum Omega and CVaR ratio, Black-Litterman, maximum diversification, minimum tracking error and growth optimal (Kelly) weights, the efficient frontier, risk contributions, stress tests and attribution. Below the semiconductor fund is combined with health care (XLV), energy (XLE), long-term Treasuries (TLT) and gold (GLD):
|
|
452
452
|
|
|
453
453
|
```python
|
|
454
454
|
# Initialize the Toolkit for funds across sectors and asset classes from 2021 to 2025
|
|
@@ -700,6 +700,8 @@ Alternatively, if your company's root certificate is already installed in your o
|
|
|
700
700
|
|
|
701
701
|
If none of this is possible, you can accept the risk and allow requests with an API key to be sent without verification by setting `FINANCETOOLKIT_ALLOW_UNVERIFIED_SSL=1` in the same way as above. Only do so on a network you trust: the connection is then encrypted to whoever answers it, which may not be the website you think you are talking to, and your API key is readable to them.
|
|
702
702
|
|
|
703
|
+
To go the other way and never send a request without verification, not even one without an API key, set `FINANCETOOLKIT_ALLOW_UNVERIFIED_SSL=0`. A hosted MCP server (the `sse` or `streamable-http` transport) does this by default, since the data it retrieves reaches every user through its cache.
|
|
704
|
+
|
|
703
705
|
> **Are you part of FinancialModelingPrep?**
|
|
704
706
|
|
|
705
707
|
*No, I am not*. I've merely picked them as the primary data provider given that they have a generous free tier and fair pricing compared to other providers. Therefore, any questions related to the data should go through [their contact form](https://site.financialmodelingprep.com/contact). When it comes to any type of ratios, performance metrics, risk metrics, technical indicators or economic indicators, feel free to reach out to me as this is my own work.
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
__docformat__ = "google"
|
|
4
4
|
|
|
5
|
+
import contextlib
|
|
5
6
|
import os
|
|
6
7
|
import platform
|
|
7
8
|
import time
|
|
9
|
+
import zlib
|
|
8
10
|
from dataclasses import dataclass, field
|
|
9
11
|
from datetime import date, datetime, timedelta
|
|
10
12
|
from pathlib import Path
|
|
@@ -280,7 +282,7 @@ class Cache:
|
|
|
280
282
|
if enabled:
|
|
281
283
|
try:
|
|
282
284
|
self._backend = SQLiteBackend(self._location)
|
|
283
|
-
except Exception as error:
|
|
285
|
+
except Exception as error:
|
|
284
286
|
# A cache is an optimization, so a database that cannot be opened just disables it.
|
|
285
287
|
self._enabled = False
|
|
286
288
|
|
|
@@ -317,7 +319,7 @@ class Cache:
|
|
|
317
319
|
EVICTION_INTERVAL_SECONDS,
|
|
318
320
|
excluded_sources=frozenset({policy_model.MCP}),
|
|
319
321
|
)
|
|
320
|
-
except Exception as error:
|
|
322
|
+
except Exception as error:
|
|
321
323
|
# Eviction is housekeeping, so a failure here is not surfaced.
|
|
322
324
|
logger.debug("Could not evict stale cache entries: %s", error)
|
|
323
325
|
return
|
|
@@ -478,7 +480,7 @@ class Cache:
|
|
|
478
480
|
ever_covered, fresh_covered, payload = self._backend.read_entity_state(
|
|
479
481
|
key, entity, minimum_fetched_at
|
|
480
482
|
)
|
|
481
|
-
except Exception as error:
|
|
483
|
+
except Exception as error:
|
|
482
484
|
# A read that fails mid-session is a cache miss, not a failed call.
|
|
483
485
|
logger.debug(
|
|
484
486
|
"Could not read cached %s.%s for %s: %s",
|
|
@@ -512,8 +514,8 @@ class Cache:
|
|
|
512
514
|
plan.cached[entity] = frame_model.slice_frame(
|
|
513
515
|
stored, start, end, date_axis
|
|
514
516
|
)
|
|
515
|
-
except Exception as error:
|
|
516
|
-
# An unreadable payload is a miss: ask the source for the lot.
|
|
517
|
+
except Exception as error:
|
|
518
|
+
# An unreadable payload (one in another format, such as a pickle, is never read) is a miss: ask the source for the lot. # noqa: E501
|
|
517
519
|
logger.debug(
|
|
518
520
|
"Could not decode cached %s.%s for %s: %s",
|
|
519
521
|
source,
|
|
@@ -523,6 +525,10 @@ class Cache:
|
|
|
523
525
|
)
|
|
524
526
|
plan.missing[entity] = [request]
|
|
525
527
|
|
|
528
|
+
# Removed with its coverage, so the rows fetched now are not recorded as merged with ranges that are no longer held. # noqa: E501
|
|
529
|
+
with contextlib.suppress(Exception):
|
|
530
|
+
self._backend.delete_entity(key, entity)
|
|
531
|
+
|
|
526
532
|
return plan
|
|
527
533
|
|
|
528
534
|
def store(
|
|
@@ -599,11 +605,12 @@ class Cache:
|
|
|
599
605
|
Returns:
|
|
600
606
|
bytes: The payload to store in its place.
|
|
601
607
|
"""
|
|
602
|
-
existing =
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
608
|
+
existing = None
|
|
609
|
+
|
|
610
|
+
# A payload that can't be read (another format, such as a pickle) is replaced.
|
|
611
|
+
if existing_payload is not None:
|
|
612
|
+
with contextlib.suppress(ValueError, zlib.error):
|
|
613
|
+
existing = serialization_model.decode_dataframe(existing_payload)
|
|
607
614
|
|
|
608
615
|
return serialization_model.encode_dataframe(
|
|
609
616
|
frame_model.merge_frames(existing, data, date_axis)
|
|
@@ -620,7 +627,7 @@ class Cache:
|
|
|
620
627
|
dataset=dataset,
|
|
621
628
|
compaction_threshold=COVERAGE_COMPACTION_THRESHOLD,
|
|
622
629
|
)
|
|
623
|
-
except Exception as error:
|
|
630
|
+
except Exception as error:
|
|
624
631
|
# A cache write must never break the call that produced the data.
|
|
625
632
|
logger.debug(
|
|
626
633
|
"Could not cache %s.%s for %s: %s", source, dataset, entity, error
|
|
@@ -676,7 +683,7 @@ class Cache:
|
|
|
676
683
|
return None
|
|
677
684
|
|
|
678
685
|
return serialization_model.decode_object(payload)
|
|
679
|
-
except Exception as error:
|
|
686
|
+
except Exception as error:
|
|
680
687
|
# Any read failure is reported as a miss, so the caller falls back to the source.
|
|
681
688
|
logger.debug(
|
|
682
689
|
"Could not read cached %s.%s for %s: %s", source, dataset, entity, error
|
|
@@ -699,7 +706,8 @@ class Cache:
|
|
|
699
706
|
source (str): The external data source.
|
|
700
707
|
dataset (str): The dataset within that source.
|
|
701
708
|
entity (str): The entity the data belongs to.
|
|
702
|
-
data (Any): The value to store
|
|
709
|
+
data (Any): The value to store: a DataFrame, Series or Index, a scalar, or a
|
|
710
|
+
list, tuple or dictionary of these (see serialization_model.encode_object).
|
|
703
711
|
parameters (dict[str, Any] | None): Parameters that change the data.
|
|
704
712
|
"""
|
|
705
713
|
if not self.serves(source):
|
|
@@ -715,7 +723,7 @@ class Cache:
|
|
|
715
723
|
source=source,
|
|
716
724
|
dataset=dataset,
|
|
717
725
|
)
|
|
718
|
-
except Exception as error:
|
|
726
|
+
except Exception as error:
|
|
719
727
|
logger.debug(
|
|
720
728
|
"Could not cache %s.%s for %s: %s", source, dataset, entity, error
|
|
721
729
|
)
|
|
@@ -796,7 +804,7 @@ class Cache:
|
|
|
796
804
|
|
|
797
805
|
try:
|
|
798
806
|
return self._backend.get_contents()
|
|
799
|
-
except Exception as error:
|
|
807
|
+
except Exception as error:
|
|
800
808
|
logger.warning("Could not read the cache contents: %s", error)
|
|
801
809
|
|
|
802
810
|
return []
|
|
@@ -824,7 +832,7 @@ class Cache:
|
|
|
824
832
|
return self._backend.remove_expired_entries(
|
|
825
833
|
ttl, source=source, dataset=dataset
|
|
826
834
|
)
|
|
827
|
-
except Exception as error:
|
|
835
|
+
except Exception as error:
|
|
828
836
|
# Eviction is housekeeping on a timer, so a failure here is not surfaced.
|
|
829
837
|
logger.debug("Could not evict expired cache entries: %s", error)
|
|
830
838
|
|
|
@@ -28,6 +28,9 @@ STATISTICS_BUREAU_OF_JAPAN = "StatisticsBureauOfJapan"
|
|
|
28
28
|
US_TREASURY = "USTreasury"
|
|
29
29
|
BUREAU_OF_LABOR_STATISTICS = "BLS"
|
|
30
30
|
FREDDIE_MAC = "FreddieMac"
|
|
31
|
+
DEPARTMENT_OF_LABOR = "DepartmentOfLabor"
|
|
32
|
+
CENSUS_BUREAU = "CensusBureau"
|
|
33
|
+
BUREAU_OF_ECONOMIC_ANALYSIS = "BEA"
|
|
31
34
|
FEDERAL_RESERVE_BOARD = "FederalReserveBoard"
|
|
32
35
|
NATIONAL_BUREAU_OF_ECONOMIC_RESEARCH = "NBER"
|
|
33
36
|
IBGE = "IBGE"
|
|
@@ -257,7 +260,17 @@ POLICIES: dict[str, CachePolicy] = {
|
|
|
257
260
|
# Auctions are added several times a week; a past year's results are final.
|
|
258
261
|
f"{US_TREASURY}.auctions": CachePolicy(ttl_seconds=DAY),
|
|
259
262
|
f"{US_TREASURY}.auctions_year": CachePolicy(ttl_seconds=30 * DAY),
|
|
263
|
+
# The FedInvest prices of a day are completed with the end-of-day price the next
|
|
264
|
+
# business day; a day that has them is final.
|
|
265
|
+
f"{US_TREASURY}.fedinvest_prices": CachePolicy(ttl_seconds=3600),
|
|
266
|
+
f"{US_TREASURY}.fedinvest_prices_final": CachePolicy(ttl_seconds=365 * DAY),
|
|
260
267
|
f"{FREDDIE_MAC}.series": CachePolicy(ttl_seconds=DAY),
|
|
268
|
+
f"{DEPARTMENT_OF_LABOR}.series": CachePolicy(ttl_seconds=DAY),
|
|
269
|
+
f"{CENSUS_BUREAU}.series": CachePolicy(ttl_seconds=DAY),
|
|
270
|
+
f"{BUREAU_OF_ECONOMIC_ANALYSIS}.series": CachePolicy(ttl_seconds=DAY),
|
|
271
|
+
# The HQM curve is published monthly in files of five years; a past file is final.
|
|
272
|
+
f"{US_TREASURY}.hqm": CachePolicy(ttl_seconds=DAY),
|
|
273
|
+
f"{US_TREASURY}.hqm_years": CachePolicy(ttl_seconds=30 * DAY),
|
|
261
274
|
f"{IBGE}.series": CachePolicy(ttl_seconds=DAY),
|
|
262
275
|
# Daily bond yields; a rerun only asks for the last month, since yields are not revised
|
|
263
276
|
# but a holiday or late publication can leave the latest days open.
|