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.
Files changed (252) hide show
  1. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/PKG-INFO +7 -4
  2. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/README.md +4 -2
  3. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/cache_controller.py +24 -16
  4. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/policy_model.py +13 -0
  5. financetoolkit-2.3.3/financetoolkit/cache/serialization_model.py +526 -0
  6. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/sqlite_model.py +37 -44
  7. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/currencies_model.py +0 -2
  8. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/discovery/discovery_controller.py +102 -33
  9. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/discovery/discovery_model.py +267 -24
  10. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/causal_inference_model.py +0 -2
  11. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/data_model.py +3 -3
  12. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/econometrics_controller.py +16 -22
  13. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/forecast_evaluation_model.py +2 -25
  14. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/hypothesis_testing_model.py +0 -2
  15. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/panel_data_model.py +0 -2
  16. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/regression_model.py +0 -2
  17. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/specification_tests_model.py +2 -6
  18. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/state_space_model.py +15 -14
  19. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/unitroot_model.py +3 -31
  20. financetoolkit-2.3.3/financetoolkit/economics/bea_model.py +67 -0
  21. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/bls_model.py +32 -5
  22. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/cboe_model.py +4 -1
  23. financetoolkit-2.3.3/financetoolkit/economics/census_model.py +109 -0
  24. financetoolkit-2.3.3/financetoolkit/economics/dol_model.py +75 -0
  25. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/economics_controller.py +384 -214
  26. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/fmp_model.py +6 -25
  27. financetoolkit-2.3.3/financetoolkit/economics/futures_model.py +263 -0
  28. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/gmdb_model.py +0 -9
  29. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/helpers.py +88 -0
  30. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/oecd_model.py +1 -4
  31. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/yfinance_model.py +8 -1
  32. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/etf/etf_controller.py +55 -31
  33. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/finra_model.py +4 -4
  34. financetoolkit-2.3.3/financetoolkit/fixedincome/bond_data_model.py +251 -0
  35. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/bond_model.py +6 -6
  36. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/curve_model.py +5 -15
  37. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/eiopa_model.py +3 -7
  38. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/fixedincome_controller.py +1781 -1828
  39. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/helpers.py +35 -0
  40. financetoolkit-2.3.3/financetoolkit/fixedincome/hqm_model.py +253 -0
  41. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/short_rate_model.py +0 -2
  42. financetoolkit-2.3.3/financetoolkit/fixedincome/treasurydirect_model.py +212 -0
  43. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/yieldcurve_model.py +2 -4
  44. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fmp_model.py +181 -53
  45. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fundamentals_model.py +0 -2
  46. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/helpers.py +304 -23
  47. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/historical_model.py +33 -34
  48. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/__main__.py +1 -1
  49. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/analytics_model.py +98 -10
  50. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/auth_model.py +444 -101
  51. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/coercion_model.py +61 -0
  52. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/config.yaml +152 -69
  53. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/diagnostics_model.py +9 -42
  54. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/formatting_model.py +63 -16
  55. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/inspection_controller.py +2 -7
  56. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/mcp_controller.py +198 -78
  57. financetoolkit-2.3.3/financetoolkit/mcp_server/mcpb/manifest.json +190 -0
  58. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/mcpb/pyproject.toml +2 -2
  59. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/provider_model.py +23 -4
  60. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/registry_controller.py +152 -89
  61. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/setup_model.py +91 -14
  62. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/tools_model.py +12 -2
  63. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/altman_model.py +115 -34
  64. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/beneish_model.py +0 -2
  65. financetoolkit-2.3.3/financetoolkit/models/chs_model.py +367 -0
  66. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/credit_model.py +0 -2
  67. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/fulmer_model.py +11 -36
  68. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/grover_model.py +5 -3
  69. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/growth_model.py +0 -2
  70. financetoolkit-2.3.3/financetoolkit/models/helpers.py +338 -0
  71. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/intrinsic_model.py +9 -10
  72. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/models_controller.py +1412 -742
  73. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/ohlson_model.py +21 -15
  74. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/quality_model.py +0 -2
  75. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/springate_model.py +6 -4
  76. financetoolkit-2.3.3/financetoolkit/models/taffler_model.py +179 -0
  77. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/wacc_model.py +0 -2
  78. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/zmijewski_model.py +5 -3
  79. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/balance_yf.csv +1 -0
  80. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/statistics_yf.csv +1 -0
  81. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization_model.py +25 -10
  82. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/binomial_trees_model.py +10 -3
  83. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/black_scholes_model.py +16 -44
  84. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/exotics_model.py +4 -22
  85. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/helpers.py +66 -11
  86. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/market_metrics_model.py +0 -2
  87. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/options_controller.py +346 -250
  88. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/options_model.py +9 -14
  89. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/risk_neutral_density_model.py +0 -2
  90. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/svi_model.py +0 -2
  91. financetoolkit-2.3.3/financetoolkit/performance/helpers.py +93 -0
  92. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/performance/performance_controller.py +601 -48
  93. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/performance/performance_model.py +545 -44
  94. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/attribution_model.py +61 -7
  95. financetoolkit-2.3.3/financetoolkit/portfolio/backtest_model.py +262 -0
  96. financetoolkit-2.3.3/financetoolkit/portfolio/construction_controller.py +4621 -0
  97. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/definition_model.py +0 -2
  98. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/helpers.py +0 -17
  99. financetoolkit-2.3.3/financetoolkit/portfolio/optimization_model.py +4010 -0
  100. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/overview_model.py +3 -4
  101. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/portfolio_controller.py +14 -35
  102. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/portfolio_model.py +0 -1
  103. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/efficiency_model.py +138 -0
  104. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/profitability_model.py +280 -0
  105. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/ratios_controller.py +7484 -4465
  106. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/solvency_model.py +255 -0
  107. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/valuation_model.py +225 -0
  108. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/cvar_model.py +2 -0
  109. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/garch_model.py +8 -4
  110. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/helpers.py +20 -20
  111. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/market_liquidity_model.py +7 -3
  112. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/realized_volatility_model.py +54 -12
  113. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/risk_controller.py +216 -119
  114. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/risk_model.py +142 -55
  115. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/var_model.py +5 -20
  116. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/technicals_controller.py +112 -636
  117. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/toolkit_controller.py +165 -133
  118. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/utilities/error_model.py +6 -5
  119. financetoolkit-2.3.3/financetoolkit/utilities/logger_model.py +127 -0
  120. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/utilities/requests_model.py +31 -12
  121. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/utilities/statistics_model.py +240 -16
  122. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/yfinance_model.py +90 -37
  123. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/pyproject.toml +17 -23
  124. financetoolkit-2.3.2/financetoolkit/cache/serialization_model.py +0 -160
  125. financetoolkit-2.3.2/financetoolkit/mcp_server/mcpb/manifest.json +0 -190
  126. financetoolkit-2.3.2/financetoolkit/models/helpers.py +0 -43
  127. financetoolkit-2.3.2/financetoolkit/performance/helpers.py +0 -86
  128. financetoolkit-2.3.2/financetoolkit/portfolio/construction_controller.py +0 -1659
  129. financetoolkit-2.3.2/financetoolkit/portfolio/optimization_model.py +0 -987
  130. financetoolkit-2.3.2/financetoolkit/utilities/logger_model.py +0 -58
  131. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/.gitignore +0 -0
  132. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/LICENSE.txt +0 -0
  133. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/__init__.py +0 -0
  134. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/__init__.py +0 -0
  135. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/coverage_model.py +0 -0
  136. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/frame_model.py +0 -0
  137. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/request_model.py +0 -0
  138. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/cache/ticker_model.py +0 -0
  139. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/discovery/__init__.py +0 -0
  140. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/earnings_model.py +0 -0
  141. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/__init__.py +0 -0
  142. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/causality_model.py +0 -0
  143. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/cointegration_model.py +0 -0
  144. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/diagnostics_model.py +0 -0
  145. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/event_study_model.py +0 -0
  146. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/fama_macbeth_model.py +0 -0
  147. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/pairs_trading_model.py +0 -0
  148. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/regime_model.py +0 -0
  149. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/econometrics/time_series_model.py +0 -0
  150. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/__init__.py +0 -0
  151. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/bis_model.py +0 -0
  152. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/boe_model.py +0 -0
  153. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/boj_model.py +0 -0
  154. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/dnb_model.py +0 -0
  155. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/ecb_model.py +0 -0
  156. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/eex_model.py +0 -0
  157. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/esrb_model.py +0 -0
  158. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/eurostat_model.py +0 -0
  159. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/frb_model.py +0 -0
  160. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/fred_model.py +0 -0
  161. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/freddie_mac_model.py +0 -0
  162. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/ibge_model.py +0 -0
  163. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/imf_model.py +0 -0
  164. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/macrohistory_model.py +0 -0
  165. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/mof_model.py +0 -0
  166. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/nber_model.py +0 -0
  167. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/ngfs_model.py +0 -0
  168. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/nyfed_model.py +0 -0
  169. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/ons_model.py +0 -0
  170. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/sbj_model.py +0 -0
  171. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/shiller_model.py +0 -0
  172. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/stoxx_model.py +0 -0
  173. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/economics/treasury_model.py +0 -0
  174. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/etf/__init__.py +0 -0
  175. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/etf/etf_model.py +0 -0
  176. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/__init__.py +0 -0
  177. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/boc_model.py +0 -0
  178. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/bundesbank_model.py +0 -0
  179. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/derivative_model.py +0 -0
  180. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/ecb_model.py +0 -0
  181. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/esma_model.py +0 -0
  182. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/euribor_model.py +0 -0
  183. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/fed_model.py +0 -0
  184. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/fiscaldata_model.py +0 -0
  185. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/fmp_model.py +0 -0
  186. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/fred_model.py +0 -0
  187. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/norgesbank_model.py +0 -0
  188. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/rba_model.py +0 -0
  189. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/fixedincome/riksbank_model.py +0 -0
  190. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/__init__.py +0 -0
  191. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/mcpb/.mcpbignore +0 -0
  192. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/mcpb/LICENSE +0 -0
  193. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/mcpb/README.md +0 -0
  194. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/mcpb/finance_toolkit_icon.png +0 -0
  195. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/series_model.py +0 -0
  196. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/static/apple-touch-icon.png +0 -0
  197. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/static/favicon-32.png +0 -0
  198. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/static/favicon.ico +0 -0
  199. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/mcp_server/stats_page_model.py +0 -0
  200. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/__init__.py +0 -0
  201. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/damodaran_model.py +0 -0
  202. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/dupont_model.py +0 -0
  203. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/enterprise_model.py +0 -0
  204. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/eva_model.py +0 -0
  205. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/peers_model.py +0 -0
  206. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/models/piotroski_model.py +0 -0
  207. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/balance.csv +0 -0
  208. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/cash.csv +0 -0
  209. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/cash_yf.csv +0 -0
  210. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/income.csv +0 -0
  211. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/income_yf.csv +0 -0
  212. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/normalization/statistics.csv +0 -0
  213. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/__init__.py +0 -0
  214. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/options/greeks_model.py +0 -0
  215. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/performance/__init__.py +0 -0
  216. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/__init__.py +0 -0
  217. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/config.yaml +0 -0
  218. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/example_datasets/example_portfolio.csv +0 -0
  219. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/example_datasets/example_portfolio.xlsx +0 -0
  220. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/all_weather.yaml +0 -0
  221. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/balanced_60_40.yaml +0 -0
  222. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/barbell.yaml +0 -0
  223. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/bogleheads_three_fund.yaml +0 -0
  224. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/buffett_90_10.yaml +0 -0
  225. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/conservative_income.yaml +0 -0
  226. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/global_60_40.yaml +0 -0
  227. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/global_equity_growth.yaml +0 -0
  228. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/golden_butterfly.yaml +0 -0
  229. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/permanent_portfolio.yaml +0 -0
  230. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/small_cap_value_tilt.yaml +0 -0
  231. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/target_date_glidepath.yaml +0 -0
  232. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/portfolio/presets/us_equity_sectors.yaml +0 -0
  233. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/py.typed +0 -0
  234. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/__init__.py +0 -0
  235. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/helpers.py +0 -0
  236. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/ratios/liquidity_model.py +0 -0
  237. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/__init__.py +0 -0
  238. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/backtesting_model.py +0 -0
  239. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/copula_model.py +0 -0
  240. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/covar_model.py +0 -0
  241. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/risk/evar_model.py +0 -0
  242. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/__init__.py +0 -0
  243. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/breadth_model.py +0 -0
  244. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/momentum_model.py +0 -0
  245. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/overlap_model.py +0 -0
  246. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/pattern_model.py +0 -0
  247. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/seasonality_model.py +0 -0
  248. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/technicals/volatility_model.py +0 -0
  249. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/utilities/dataframe_model.py +0 -0
  250. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/utilities/excel_model.py +0 -0
  251. {financetoolkit-2.3.2 → financetoolkit-2.3.3}/financetoolkit/utilities/factor_model.py +0 -0
  252. {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.2
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 bond and derivative valuations. Both are reached through the same Toolkit instance, or on their own with `from financetoolkit import Economics, FixedIncome`:
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 bond and derivative valuations. Both are reached through the same Toolkit instance, or on their own with `from financetoolkit import Economics, FixedIncome`:
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: # pylint: disable=broad-except
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: # pylint: disable=broad-except
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: # pylint: disable=broad-except
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: # pylint: disable=broad-except
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
- serialization_model.decode_dataframe(existing_payload)
604
- if existing_payload is not None
605
- else None
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: # pylint: disable=broad-except
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: # pylint: disable=broad-except
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. Any picklable object is accepted.
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: # pylint: disable=broad-except
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: # pylint: disable=broad-except
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: # pylint: disable=broad-except
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.