financetoolkit 2.3.3__tar.gz → 2.3.4__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 (253) hide show
  1. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/PKG-INFO +5 -4
  2. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/README.md +4 -3
  3. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/cache/cache_controller.py +12 -4
  4. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/cache/frame_model.py +12 -2
  5. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/cache/policy_model.py +18 -2
  6. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/discovery/discovery_controller.py +318 -54
  7. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/discovery/discovery_model.py +53 -18
  8. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/data_model.py +16 -1
  9. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/diagnostics_model.py +338 -0
  10. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/econometrics_controller.py +912 -1
  11. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/unitroot_model.py +4 -4
  12. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/bis_model.py +7 -0
  13. financetoolkit-2.3.4/financetoolkit/economics/bls_model.py +232 -0
  14. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/boe_model.py +20 -0
  15. financetoolkit-2.3.4/financetoolkit/economics/boj_model.py +206 -0
  16. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/dol_model.py +39 -13
  17. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/economics_controller.py +2942 -434
  18. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/eurostat_model.py +82 -8
  19. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/fmp_model.py +205 -0
  20. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/fred_model.py +94 -86
  21. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/gmdb_model.py +153 -15
  22. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/helpers.py +290 -19
  23. financetoolkit-2.3.4/financetoolkit/economics/imf_model.py +449 -0
  24. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/ngfs_model.py +2 -0
  25. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/oecd_model.py +3 -49
  26. financetoolkit-2.3.4/financetoolkit/economics/portwatch_model.py +189 -0
  27. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/sbj_model.py +2 -2
  28. financetoolkit-2.3.4/financetoolkit/economics/world_bank_model.py +96 -0
  29. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/yfinance_model.py +2 -0
  30. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/etf/etf_controller.py +91 -16
  31. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/bond_data_model.py +53 -1
  32. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/derivative_model.py +4 -2
  33. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/esma_model.py +2 -0
  34. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/fixedincome_controller.py +867 -65
  35. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/fmp_model.py +3 -2
  36. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/fred_model.py +45 -0
  37. financetoolkit-2.3.4/financetoolkit/fixedincome/loan_model.py +153 -0
  38. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/riksbank_model.py +3 -3
  39. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/short_rate_model.py +2 -2
  40. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/treasurydirect_model.py +2 -0
  41. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fmp_model.py +242 -20
  42. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/helpers.py +212 -1
  43. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/historical_model.py +12 -12
  44. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/analytics_model.py +2 -2
  45. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/config.yaml +66 -24
  46. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/diagnostics_model.py +2 -0
  47. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/formatting_model.py +186 -4
  48. financetoolkit-2.3.4/financetoolkit/mcp_server/mcpb/manifest.json +190 -0
  49. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/mcpb/pyproject.toml +2 -2
  50. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/provider_model.py +235 -108
  51. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/registry_controller.py +299 -23
  52. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/tools_model.py +42 -2
  53. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/altman_model.py +9 -0
  54. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/credit_model.py +11 -3
  55. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/growth_model.py +8 -3
  56. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/helpers.py +3 -1
  57. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/models_controller.py +421 -259
  58. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/quality_model.py +6 -0
  59. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/wacc_model.py +27 -10
  60. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/normalization_model.py +17 -11
  61. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/options/helpers.py +16 -7
  62. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/options/options_controller.py +234 -0
  63. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/options/options_model.py +4 -0
  64. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/options/svi_model.py +1 -1
  65. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/performance/performance_controller.py +333 -62
  66. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/performance/performance_model.py +82 -22
  67. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/backtest_model.py +51 -0
  68. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/construction_controller.py +163 -11
  69. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/helpers.py +2 -2
  70. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/optimization_model.py +2 -3
  71. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/portfolio_controller.py +59 -15
  72. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/portfolio_model.py +7 -0
  73. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/ratios/efficiency_model.py +29 -0
  74. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/ratios/ratios_controller.py +1063 -58
  75. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/ratios/valuation_model.py +64 -3
  76. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/risk/copula_model.py +4 -3
  77. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/risk/risk_controller.py +245 -6
  78. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/risk/risk_model.py +3 -4
  79. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/technicals/technicals_controller.py +304 -0
  80. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/toolkit_controller.py +500 -250
  81. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/utilities/dataframe_model.py +75 -4
  82. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/utilities/logger_model.py +24 -6
  83. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/utilities/requests_model.py +15 -8
  84. financetoolkit-2.3.4/financetoolkit/utilities/sources_model.py +358 -0
  85. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/utilities/statistics_model.py +53 -5
  86. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/yfinance_model.py +47 -0
  87. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/pyproject.toml +5 -4
  88. financetoolkit-2.3.3/financetoolkit/economics/bls_model.py +0 -142
  89. financetoolkit-2.3.3/financetoolkit/economics/boj_model.py +0 -111
  90. financetoolkit-2.3.3/financetoolkit/economics/imf_model.py +0 -212
  91. financetoolkit-2.3.3/financetoolkit/mcp_server/mcpb/manifest.json +0 -190
  92. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/.gitignore +0 -0
  93. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/LICENSE.txt +0 -0
  94. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/__init__.py +0 -0
  95. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/cache/__init__.py +0 -0
  96. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/cache/coverage_model.py +0 -0
  97. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/cache/request_model.py +0 -0
  98. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/cache/serialization_model.py +0 -0
  99. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/cache/sqlite_model.py +0 -0
  100. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/cache/ticker_model.py +0 -0
  101. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/currencies_model.py +0 -0
  102. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/discovery/__init__.py +0 -0
  103. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/earnings_model.py +0 -0
  104. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/__init__.py +0 -0
  105. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/causal_inference_model.py +0 -0
  106. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/causality_model.py +0 -0
  107. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/cointegration_model.py +0 -0
  108. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/event_study_model.py +0 -0
  109. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/fama_macbeth_model.py +0 -0
  110. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/forecast_evaluation_model.py +0 -0
  111. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/hypothesis_testing_model.py +0 -0
  112. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/pairs_trading_model.py +0 -0
  113. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/panel_data_model.py +0 -0
  114. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/regime_model.py +0 -0
  115. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/regression_model.py +0 -0
  116. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/specification_tests_model.py +0 -0
  117. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/state_space_model.py +0 -0
  118. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/econometrics/time_series_model.py +0 -0
  119. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/__init__.py +0 -0
  120. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/bea_model.py +0 -0
  121. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/cboe_model.py +0 -0
  122. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/census_model.py +0 -0
  123. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/dnb_model.py +0 -0
  124. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/ecb_model.py +0 -0
  125. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/eex_model.py +0 -0
  126. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/esrb_model.py +0 -0
  127. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/frb_model.py +0 -0
  128. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/freddie_mac_model.py +0 -0
  129. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/futures_model.py +0 -0
  130. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/ibge_model.py +0 -0
  131. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/macrohistory_model.py +0 -0
  132. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/mof_model.py +0 -0
  133. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/nber_model.py +0 -0
  134. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/nyfed_model.py +0 -0
  135. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/ons_model.py +0 -0
  136. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/shiller_model.py +0 -0
  137. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/stoxx_model.py +0 -0
  138. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/economics/treasury_model.py +0 -0
  139. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/etf/__init__.py +0 -0
  140. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/etf/etf_model.py +0 -0
  141. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/finra_model.py +0 -0
  142. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/__init__.py +0 -0
  143. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/boc_model.py +0 -0
  144. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/bond_model.py +0 -0
  145. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/bundesbank_model.py +0 -0
  146. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/curve_model.py +0 -0
  147. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/ecb_model.py +0 -0
  148. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/eiopa_model.py +0 -0
  149. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/euribor_model.py +0 -0
  150. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/fed_model.py +0 -0
  151. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/fiscaldata_model.py +0 -0
  152. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/helpers.py +0 -0
  153. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/hqm_model.py +0 -0
  154. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/norgesbank_model.py +0 -0
  155. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/rba_model.py +0 -0
  156. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fixedincome/yieldcurve_model.py +0 -0
  157. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/fundamentals_model.py +0 -0
  158. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/__init__.py +0 -0
  159. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/__main__.py +0 -0
  160. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/auth_model.py +0 -0
  161. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/coercion_model.py +0 -0
  162. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/inspection_controller.py +0 -0
  163. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/mcp_controller.py +0 -0
  164. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/mcpb/.mcpbignore +0 -0
  165. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/mcpb/LICENSE +0 -0
  166. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/mcpb/README.md +0 -0
  167. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/mcpb/finance_toolkit_icon.png +0 -0
  168. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/series_model.py +0 -0
  169. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/setup_model.py +0 -0
  170. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/static/apple-touch-icon.png +0 -0
  171. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/static/favicon-32.png +0 -0
  172. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/static/favicon.ico +0 -0
  173. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/mcp_server/stats_page_model.py +0 -0
  174. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/__init__.py +0 -0
  175. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/beneish_model.py +0 -0
  176. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/chs_model.py +0 -0
  177. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/damodaran_model.py +0 -0
  178. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/dupont_model.py +0 -0
  179. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/enterprise_model.py +0 -0
  180. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/eva_model.py +0 -0
  181. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/fulmer_model.py +0 -0
  182. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/grover_model.py +0 -0
  183. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/intrinsic_model.py +0 -0
  184. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/ohlson_model.py +0 -0
  185. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/peers_model.py +0 -0
  186. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/piotroski_model.py +0 -0
  187. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/springate_model.py +0 -0
  188. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/taffler_model.py +0 -0
  189. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/models/zmijewski_model.py +0 -0
  190. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/normalization/balance.csv +0 -0
  191. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/normalization/balance_yf.csv +0 -0
  192. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/normalization/cash.csv +0 -0
  193. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/normalization/cash_yf.csv +0 -0
  194. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/normalization/income.csv +0 -0
  195. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/normalization/income_yf.csv +0 -0
  196. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/normalization/statistics.csv +0 -0
  197. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/normalization/statistics_yf.csv +0 -0
  198. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/options/__init__.py +0 -0
  199. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/options/binomial_trees_model.py +0 -0
  200. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/options/black_scholes_model.py +0 -0
  201. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/options/exotics_model.py +0 -0
  202. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/options/greeks_model.py +0 -0
  203. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/options/market_metrics_model.py +0 -0
  204. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/options/risk_neutral_density_model.py +0 -0
  205. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/performance/__init__.py +0 -0
  206. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/performance/helpers.py +0 -0
  207. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/__init__.py +0 -0
  208. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/attribution_model.py +0 -0
  209. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/config.yaml +0 -0
  210. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/definition_model.py +0 -0
  211. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/example_datasets/example_portfolio.csv +0 -0
  212. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/example_datasets/example_portfolio.xlsx +0 -0
  213. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/overview_model.py +0 -0
  214. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/presets/all_weather.yaml +0 -0
  215. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/presets/balanced_60_40.yaml +0 -0
  216. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/presets/barbell.yaml +0 -0
  217. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/presets/bogleheads_three_fund.yaml +0 -0
  218. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/presets/buffett_90_10.yaml +0 -0
  219. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/presets/conservative_income.yaml +0 -0
  220. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/presets/global_60_40.yaml +0 -0
  221. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/presets/global_equity_growth.yaml +0 -0
  222. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/presets/golden_butterfly.yaml +0 -0
  223. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/presets/permanent_portfolio.yaml +0 -0
  224. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/presets/small_cap_value_tilt.yaml +0 -0
  225. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/presets/target_date_glidepath.yaml +0 -0
  226. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/portfolio/presets/us_equity_sectors.yaml +0 -0
  227. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/py.typed +0 -0
  228. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/ratios/__init__.py +0 -0
  229. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/ratios/helpers.py +0 -0
  230. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/ratios/liquidity_model.py +0 -0
  231. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/ratios/profitability_model.py +0 -0
  232. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/ratios/solvency_model.py +0 -0
  233. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/risk/__init__.py +0 -0
  234. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/risk/backtesting_model.py +0 -0
  235. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/risk/covar_model.py +0 -0
  236. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/risk/cvar_model.py +0 -0
  237. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/risk/evar_model.py +0 -0
  238. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/risk/garch_model.py +0 -0
  239. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/risk/helpers.py +0 -0
  240. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/risk/market_liquidity_model.py +0 -0
  241. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/risk/realized_volatility_model.py +0 -0
  242. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/risk/var_model.py +0 -0
  243. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/technicals/__init__.py +0 -0
  244. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/technicals/breadth_model.py +0 -0
  245. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/technicals/momentum_model.py +0 -0
  246. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/technicals/overlap_model.py +0 -0
  247. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/technicals/pattern_model.py +0 -0
  248. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/technicals/seasonality_model.py +0 -0
  249. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/technicals/volatility_model.py +0 -0
  250. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/utilities/error_model.py +0 -0
  251. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/utilities/excel_model.py +0 -0
  252. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/financetoolkit/utilities/factor_model.py +0 -0
  253. {financetoolkit-2.3.3 → financetoolkit-2.3.4}/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
3
+ Version: 2.3.4
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
@@ -585,7 +585,7 @@ https://github.com/user-attachments/assets/96ad5288-d83d-4497-a345-1841c48c29d5
585
585
 
586
586
  ### Remote server
587
587
 
588
- Connect directly to the hosted server at `https://financetoolkit.jeroenbouma.com/mcp`. Nothing needs to be installed locally. On first connection your client opens an OAuth consent page asking for your FMP API key; enter it once and the server handles authentication from there.
588
+ Connect directly to the hosted server at `https://financetoolkit.jeroenbouma.com/mcp`. Nothing needs to be installed locally. On first connection your client opens an OAuth consent page asking for your FMP API key (and, optionally, a FRED API key for the corporate bond series); enter it once and the server handles authentication from there.
589
589
 
590
590
  | Client | Steps |
591
591
  |:---|:---|
@@ -593,8 +593,8 @@ Connect directly to the hosted server at `https://financetoolkit.jeroenbouma.com
593
593
  | **Claude.ai** | Customize → Connectors → Add custom connector → paste the URL |
594
594
  | **Claude Code** | `claude mcp add --transport http finance-toolkit https://financetoolkit.jeroenbouma.com/mcp` |
595
595
  | **VS Code** | Command Palette → MCP: Add Server → HTTP → paste the URL |
596
- | **Cursor** | Settings → Features → MCP Servers → Add new → http → paste the URL |
597
- | **Windsurf** | Settings → MCP Servers → Add Server → Remote/HTTP → paste the URL |
596
+ | **Cursor** | Cursor Settings → Tools & MCP → New MCP Server → add `"finance-toolkit": { "url": "<URL>" }` |
597
+ | **Windsurf** | Cascade panel → MCPs → Configure → add `"finance-toolkit": { "serverUrl": "<URL>" }` and refresh |
598
598
 
599
599
  ### Local installation
600
600
 
@@ -776,6 +776,7 @@ The Finance Toolkit has been mentioned in various blogposts, research papers, ne
776
776
  - [Fundamental Analysis using Muli-Agent System and Agentic RAG](https://connect.cfauk.org/HigherLogic/System/DownloadDocumentFile.ashx?DocumentFileKey=3ae6f3fc-593a-04ec-c3b8-be5643cab479&forceDialog=0)
777
777
 
778
778
  **Newsletters & Social Media**
779
+ - [Stack to Street podcast: Your AI Shouldn't Guess the Formula](https://www.stacktostreet.com/episodes/financetoolkit/)
779
780
  - [LinkedIn #1](https://www.linkedin.com/posts/jerry-liu-64390071_this-is-an-extremely-comprehensive-100-activity-7340897396471623681-plI4?utm_source=share&utm_medium=member_desktop&rcm=ACoAABhYAQUBkaNnlBjz_IYBRfaurU68rfoZPE8) and [Linkedin #2](https://www.linkedin.com/posts/pyquant-news_getting-clean-fundamental-data-used-to-be-activity-7314273012927651841-KXP3?utm_source=share&utm_medium=member_desktop&rcm=ACoAABhYAQUBkaNnlBjz_IYBRfaurU68rfoZPE8)
780
781
  - [Facebook](https://www.facebook.com/groups/techtitansgroup/posts/1515790739748239/)
781
782
  - [Quant Seeker](https://www.quantseeker.com/p/weekly-research-recap)
@@ -540,7 +540,7 @@ https://github.com/user-attachments/assets/96ad5288-d83d-4497-a345-1841c48c29d5
540
540
 
541
541
  ### Remote server
542
542
 
543
- Connect directly to the hosted server at `https://financetoolkit.jeroenbouma.com/mcp`. Nothing needs to be installed locally. On first connection your client opens an OAuth consent page asking for your FMP API key; enter it once and the server handles authentication from there.
543
+ Connect directly to the hosted server at `https://financetoolkit.jeroenbouma.com/mcp`. Nothing needs to be installed locally. On first connection your client opens an OAuth consent page asking for your FMP API key (and, optionally, a FRED API key for the corporate bond series); enter it once and the server handles authentication from there.
544
544
 
545
545
  | Client | Steps |
546
546
  |:---|:---|
@@ -548,8 +548,8 @@ Connect directly to the hosted server at `https://financetoolkit.jeroenbouma.com
548
548
  | **Claude.ai** | Customize → Connectors → Add custom connector → paste the URL |
549
549
  | **Claude Code** | `claude mcp add --transport http finance-toolkit https://financetoolkit.jeroenbouma.com/mcp` |
550
550
  | **VS Code** | Command Palette → MCP: Add Server → HTTP → paste the URL |
551
- | **Cursor** | Settings → Features → MCP Servers → Add new → http → paste the URL |
552
- | **Windsurf** | Settings → MCP Servers → Add Server → Remote/HTTP → paste the URL |
551
+ | **Cursor** | Cursor Settings → Tools & MCP → New MCP Server → add `"finance-toolkit": { "url": "<URL>" }` |
552
+ | **Windsurf** | Cascade panel → MCPs → Configure → add `"finance-toolkit": { "serverUrl": "<URL>" }` and refresh |
553
553
 
554
554
  ### Local installation
555
555
 
@@ -731,6 +731,7 @@ The Finance Toolkit has been mentioned in various blogposts, research papers, ne
731
731
  - [Fundamental Analysis using Muli-Agent System and Agentic RAG](https://connect.cfauk.org/HigherLogic/System/DownloadDocumentFile.ashx?DocumentFileKey=3ae6f3fc-593a-04ec-c3b8-be5643cab479&forceDialog=0)
732
732
 
733
733
  **Newsletters & Social Media**
734
+ - [Stack to Street podcast: Your AI Shouldn't Guess the Formula](https://www.stacktostreet.com/episodes/financetoolkit/)
734
735
  - [LinkedIn #1](https://www.linkedin.com/posts/jerry-liu-64390071_this-is-an-extremely-comprehensive-100-activity-7340897396471623681-plI4?utm_source=share&utm_medium=member_desktop&rcm=ACoAABhYAQUBkaNnlBjz_IYBRfaurU68rfoZPE8) and [Linkedin #2](https://www.linkedin.com/posts/pyquant-news_getting-clean-fundamental-data-used-to-be-activity-7314273012927651841-KXP3?utm_source=share&utm_medium=member_desktop&rcm=ACoAABhYAQUBkaNnlBjz_IYBRfaurU68rfoZPE8)
735
736
  - [Facebook](https://www.facebook.com/groups/techtitansgroup/posts/1515790739748239/)
736
737
  - [Quant Seeker](https://www.quantseeker.com/p/weekly-research-recap)
@@ -22,7 +22,7 @@ from financetoolkit.cache import (
22
22
  serialization_model,
23
23
  )
24
24
  from financetoolkit.cache.sqlite_model import SCHEMA_VERSION, SQLiteBackend
25
- from financetoolkit.utilities import logger_model
25
+ from financetoolkit.utilities import logger_model, sources_model
26
26
 
27
27
  logger = logger_model.get_logger()
28
28
 
@@ -433,8 +433,8 @@ class Cache:
433
433
  parameters (dict[str, Any] | None): Parameters that change the data.
434
434
  date_axis (int): 0 when the index holds the dates, 1 when the columns do. Defaults to 0.
435
435
  reference_date (date | None): The date the revision window is measured
436
- back from when the requested range has no end or ends after it. Defaults to today;
437
- mainly useful for testing.
436
+ back from when the requested range has no end or ends after it. Defaults to None,
437
+ which uses today; mainly useful for testing.
438
438
 
439
439
  Returns:
440
440
  CachePlan: The cached data per entity and the gaps still to be fetched.
@@ -529,6 +529,9 @@ class Cache:
529
529
  with contextlib.suppress(Exception):
530
530
  self._backend.delete_entity(key, entity)
531
531
 
532
+ if plan.cached:
533
+ sources_model.record_source(source)
534
+
532
535
  return plan
533
536
 
534
537
  def store(
@@ -682,7 +685,12 @@ class Cache:
682
685
  if time.time() - updated_at > effective_ttl:
683
686
  return None
684
687
 
685
- return serialization_model.decode_object(payload)
688
+ value = serialization_model.decode_object(payload)
689
+ # A cached MCP answer names the sources it was computed from itself.
690
+ if source != policy_model.MCP:
691
+ sources_model.record_source(source)
692
+
693
+ return value
686
694
  except Exception as error:
687
695
  # Any read failure is reported as a miss, so the caller falls back to the source.
688
696
  logger.debug(
@@ -124,6 +124,10 @@ def slice_frame(
124
124
  the caller. Labels that cannot be parsed as dates are kept, which matters for
125
125
  statement frames that carry non-date columns alongside the reporting periods.
126
126
 
127
+ A period is kept when it overlaps the window, as a fresh request truncates it: a
128
+ start date of 31 December 2014 keeps the year 2014. A cached frame is then the same
129
+ as the one a fresh request returns, so no answer depends on what the cache holds.
130
+
127
131
  Args:
128
132
  data (pd.DataFrame | pd.Series): The frame to slice.
129
133
  start (str | date | None): Inclusive start of the window. None leaves it open.
@@ -147,9 +151,14 @@ def slice_frame(
147
151
  # is not a date.
148
152
  keep = vectorised.isna()
149
153
  within = np.ones(len(axis), dtype=bool)
154
+ last_days = (
155
+ axis.to_timestamp(how="end").normalize()
156
+ if isinstance(axis, pd.PeriodIndex)
157
+ else vectorised
158
+ )
150
159
 
151
160
  if start_date is not None:
152
- within &= vectorised >= pd.Timestamp(start_date)
161
+ within &= last_days >= pd.Timestamp(start_date)
153
162
  if end_date is not None:
154
163
  within &= vectorised <= pd.Timestamp(end_date)
155
164
 
@@ -167,7 +176,8 @@ def slice_frame(
167
176
  mask.append(True)
168
177
  continue
169
178
 
170
- within_start = start_date is None or label_date >= start_date
179
+ last_day = label.end_time.date() if isinstance(label, pd.Period) else label_date
180
+ within_start = start_date is None or last_day >= start_date
171
181
  within_end = end_date is None or label_date <= end_date
172
182
  mask.append(within_start and within_end)
173
183
 
@@ -41,6 +41,8 @@ NORGES_BANK = "NorgesBank"
41
41
  EIOPA = "EIOPA"
42
42
  INTERNATIONAL_MONETARY_FUND = "IMF"
43
43
  SHILLER = "Shiller"
44
+ WORLD_BANK = "WorldBank"
45
+ IMF_PORTWATCH = "IMFPortWatch"
44
46
  CBOE = "Cboe"
45
47
  STOXX = "STOXX"
46
48
  RESERVE_BANK_OF_AUSTRALIA = "ReserveBankOfAustralia"
@@ -110,8 +112,8 @@ def get_last_closed_session(now: datetime | None = None) -> date:
110
112
  date.
111
113
 
112
114
  Args:
113
- now (datetime | None): The moment to judge, with a time zone. Defaults to the
114
- current time; mainly useful for testing.
115
+ now (datetime | None): The moment to judge, with a time zone. Defaults to None,
116
+ which uses the current time; mainly useful for testing.
115
117
 
116
118
  Returns:
117
119
  date: The last date whose daily bars are final.
@@ -244,6 +246,7 @@ POLICIES: dict[str, CachePolicy] = {
244
246
  f"{BANK_OF_ENGLAND}.millennium": CachePolicy(ttl_seconds=365 * DAY),
245
247
  f"{BANK_OF_ENGLAND}.curve_current_month": CachePolicy(ttl_seconds=DAY),
246
248
  f"{BANK_OF_JAPAN}.series": CachePolicy(ttl_seconds=DAY, revision_days=31),
249
+ f"{BANK_OF_JAPAN}.price_index": CachePolicy(ttl_seconds=DAY),
247
250
  f"{EUROPEAN_CENTRAL_BANK}.economics_series": CachePolicy(
248
251
  ttl_seconds=DAY, revision_days=31
249
252
  ),
@@ -252,6 +255,9 @@ POLICIES: dict[str, CachePolicy] = {
252
255
  f"{STATISTICS_BUREAU_OF_JAPAN}.series": CachePolicy(ttl_seconds=DAY),
253
256
  # The keyless BLS API allows 25 requests a day, so the latest releases are fetched once.
254
257
  f"{BUREAU_OF_LABOR_STATISTICS}.series": CachePolicy(ttl_seconds=DAY),
258
+ # The consumer prices are one request for every measure, kept for six hours so the
259
+ # month a release publishes appears the same day.
260
+ f"{BUREAU_OF_LABOR_STATISTICS}.consumer_prices": CachePolicy(ttl_seconds=DAY // 4),
255
261
  # A past year of the Treasury yield curve is final; only the current year changes.
256
262
  f"{US_TREASURY}.par_yield_curve": CachePolicy(ttl_seconds=DAY),
257
263
  f"{US_TREASURY}.par_yield_curve_year": CachePolicy(ttl_seconds=30 * DAY),
@@ -287,6 +293,11 @@ POLICIES: dict[str, CachePolicy] = {
287
293
  f"{INTERNATIONAL_MONETARY_FUND}.codelist": CachePolicy(ttl_seconds=30 * DAY),
288
294
  # Updated about once a month.
289
295
  f"{SHILLER}.stock_market_data": CachePolicy(ttl_seconds=7 * DAY),
296
+ # The Pink Sheet is updated in the first days of every month.
297
+ f"{WORLD_BANK}.commodity_prices": CachePolicy(ttl_seconds=7 * DAY),
298
+ # PortWatch adds the latest days once a week, on Tuesdays, and the chokepoints rarely.
299
+ f"{IMF_PORTWATCH}.chokepoint_transits": CachePolicy(ttl_seconds=DAY),
300
+ f"{IMF_PORTWATCH}.chokepoints": CachePolicy(ttl_seconds=30 * DAY),
290
301
  # Index histories published whole, one file per index, updated after every close.
291
302
  f"{CBOE}.index": CachePolicy(ttl_seconds=DAY),
292
303
  f"{CBOE}.option_chain": CachePolicy(ttl_seconds=900),
@@ -316,6 +327,11 @@ POLICIES: dict[str, CachePolicy] = {
316
327
  f"{INTERNATIONAL_MONETARY_FUND}.consumer_prices": CachePolicy(
317
328
  ttl_seconds=DAY, revision_days=365
318
329
  ),
330
+ # Government finance and national accounts, published quarterly or yearly and revised
331
+ # back years when a country revises its national accounts.
332
+ f"{INTERNATIONAL_MONETARY_FUND}.government_finance": CachePolicy(
333
+ ttl_seconds=7 * DAY, revision_days=1095
334
+ ),
319
335
  f"{EUROPEAN_CENTRAL_BANK}.convergence_yields": CachePolicy(
320
336
  ttl_seconds=DAY, revision_days=93
321
337
  ),