financetoolkit 2.2.2__tar.gz → 2.2.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 (195) hide show
  1. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/PKG-INFO +1 -1
  2. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/cache/policy_model.py +1 -0
  3. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/cache/ticker_model.py +2 -1
  4. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/currencies_model.py +54 -0
  5. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/discovery/discovery_controller.py +68 -17
  6. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/discovery/discovery_model.py +429 -35
  7. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/econometrics_controller.py +12 -0
  8. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/economics_controller.py +84 -20
  9. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/fmp_model.py +12 -3
  10. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/gmdb_model.py +40 -0
  11. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/fixedincome_controller.py +18 -0
  12. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fmp_model.py +109 -8
  13. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/historical_model.py +7 -0
  14. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/config.yaml +130 -36
  15. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/diagnostics_model.py +93 -2
  16. financetoolkit-2.2.3/financetoolkit/mcp_server/formatting_model.py +540 -0
  17. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/inspection_controller.py +23 -1
  18. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/mcp_controller.py +28 -1
  19. financetoolkit-2.2.3/financetoolkit/mcp_server/mcpb/manifest.json +178 -0
  20. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/mcpb/pyproject.toml +2 -2
  21. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/provider_model.py +139 -10
  22. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/registry_controller.py +877 -23
  23. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/tools_model.py +202 -64
  24. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/models_controller.py +23 -0
  25. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/options/options_controller.py +18 -0
  26. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/performance/performance_controller.py +24 -4
  27. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/ratios/ratios_controller.py +19 -5
  28. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/risk/risk_controller.py +31 -24
  29. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/toolkit_controller.py +67 -20
  30. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/utilities/dataframe_model.py +3 -2
  31. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/utilities/statistics_model.py +164 -5
  32. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/yfinance_model.py +6 -4
  33. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/pyproject.toml +1 -1
  34. financetoolkit-2.2.2/financetoolkit/mcp_server/formatting_model.py +0 -234
  35. financetoolkit-2.2.2/financetoolkit/mcp_server/mcpb/manifest.json +0 -182
  36. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/.gitignore +0 -0
  37. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/LICENSE.txt +0 -0
  38. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/README.md +0 -0
  39. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/__init__.py +0 -0
  40. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/cache/__init__.py +0 -0
  41. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/cache/cache_controller.py +0 -0
  42. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/cache/coverage_model.py +0 -0
  43. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/cache/frame_model.py +0 -0
  44. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/cache/request_model.py +0 -0
  45. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/cache/serialization_model.py +0 -0
  46. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/cache/sqlite_model.py +0 -0
  47. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/discovery/__init__.py +0 -0
  48. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/__init__.py +0 -0
  49. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/causal_inference_model.py +0 -0
  50. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/causality_model.py +0 -0
  51. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/cointegration_model.py +0 -0
  52. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/diagnostics_model.py +0 -0
  53. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/event_study_model.py +0 -0
  54. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/fama_macbeth_model.py +0 -0
  55. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/forecast_evaluation_model.py +0 -0
  56. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/hypothesis_testing_model.py +0 -0
  57. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/panel_data_model.py +0 -0
  58. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/regression_model.py +0 -0
  59. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/specification_tests_model.py +0 -0
  60. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/time_series_model.py +0 -0
  61. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/econometrics/unitroot_model.py +0 -0
  62. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/__init__.py +0 -0
  63. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/bis_model.py +0 -0
  64. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/bls_model.py +0 -0
  65. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/boe_model.py +0 -0
  66. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/boj_model.py +0 -0
  67. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/cboe_model.py +0 -0
  68. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/dnb_model.py +0 -0
  69. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/ecb_model.py +0 -0
  70. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/eex_model.py +0 -0
  71. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/esrb_model.py +0 -0
  72. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/eurostat_model.py +0 -0
  73. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/frb_model.py +0 -0
  74. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/fred_model.py +0 -0
  75. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/freddie_mac_model.py +0 -0
  76. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/helpers.py +0 -0
  77. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/ibge_model.py +0 -0
  78. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/imf_model.py +0 -0
  79. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/macrohistory_model.py +0 -0
  80. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/mof_model.py +0 -0
  81. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/nber_model.py +0 -0
  82. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/ngfs_model.py +0 -0
  83. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/oecd_model.py +0 -0
  84. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/ons_model.py +0 -0
  85. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/sbj_model.py +0 -0
  86. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/shiller_model.py +0 -0
  87. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/stoxx_model.py +0 -0
  88. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/treasury_model.py +0 -0
  89. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/economics/yfinance_model.py +0 -0
  90. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/__init__.py +0 -0
  91. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/boc_model.py +0 -0
  92. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/bond_model.py +0 -0
  93. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/bundesbank_model.py +0 -0
  94. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/derivative_model.py +0 -0
  95. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/ecb_model.py +0 -0
  96. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/eiopa_model.py +0 -0
  97. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/esma_model.py +0 -0
  98. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/euribor_model.py +0 -0
  99. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/fed_model.py +0 -0
  100. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/fmp_model.py +0 -0
  101. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/fred_model.py +0 -0
  102. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/helpers.py +0 -0
  103. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/norgesbank_model.py +0 -0
  104. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/rba_model.py +0 -0
  105. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/riksbank_model.py +0 -0
  106. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fixedincome/yieldcurve_model.py +0 -0
  107. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/fundamentals_model.py +0 -0
  108. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/helpers.py +0 -0
  109. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/__init__.py +0 -0
  110. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/__main__.py +0 -0
  111. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/analytics_model.py +0 -0
  112. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/auth_model.py +0 -0
  113. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/coercion_model.py +0 -0
  114. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/mcpb/.mcpbignore +0 -0
  115. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/mcpb/LICENSE +0 -0
  116. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/mcpb/README.md +0 -0
  117. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/mcpb/build-mcpb.sh +0 -0
  118. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/mcpb/finance_toolkit_icon.png +0 -0
  119. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/mcp_server/setup_model.py +0 -0
  120. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/__init__.py +0 -0
  121. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/altman_model.py +0 -0
  122. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/beneish_model.py +0 -0
  123. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/dupont_model.py +0 -0
  124. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/enterprise_model.py +0 -0
  125. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/eva_model.py +0 -0
  126. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/fulmer_model.py +0 -0
  127. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/grover_model.py +0 -0
  128. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/growth_model.py +0 -0
  129. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/helpers.py +0 -0
  130. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/intrinsic_model.py +0 -0
  131. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/ohlson_model.py +0 -0
  132. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/piotroski_model.py +0 -0
  133. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/springate_model.py +0 -0
  134. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/wacc_model.py +0 -0
  135. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/models/zmijewski_model.py +0 -0
  136. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/normalization/balance.csv +0 -0
  137. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/normalization/balance_yf.csv +0 -0
  138. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/normalization/cash.csv +0 -0
  139. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/normalization/cash_yf.csv +0 -0
  140. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/normalization/income.csv +0 -0
  141. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/normalization/income_yf.csv +0 -0
  142. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/normalization/statistics.csv +0 -0
  143. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/normalization/statistics_yf.csv +0 -0
  144. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/normalization_model.py +0 -0
  145. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/options/__init__.py +0 -0
  146. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/options/binomial_trees_model.py +0 -0
  147. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/options/black_scholes_model.py +0 -0
  148. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/options/exotics_model.py +0 -0
  149. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/options/greeks_model.py +0 -0
  150. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/options/helpers.py +0 -0
  151. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/options/options_model.py +0 -0
  152. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/options/risk_neutral_density_model.py +0 -0
  153. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/options/svi_model.py +0 -0
  154. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/performance/__init__.py +0 -0
  155. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/performance/helpers.py +0 -0
  156. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/performance/performance_model.py +0 -0
  157. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/portfolio/__init__.py +0 -0
  158. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/portfolio/config.yaml +0 -0
  159. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/portfolio/example_datasets/example_portfolio.csv +0 -0
  160. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/portfolio/example_datasets/example_portfolio.xlsx +0 -0
  161. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/portfolio/helpers.py +0 -0
  162. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/portfolio/overview_model.py +0 -0
  163. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/portfolio/portfolio_controller.py +0 -0
  164. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/portfolio/portfolio_model.py +0 -0
  165. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/py.typed +0 -0
  166. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/ratios/__init__.py +0 -0
  167. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/ratios/efficiency_model.py +0 -0
  168. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/ratios/helpers.py +0 -0
  169. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/ratios/liquidity_model.py +0 -0
  170. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/ratios/profitability_model.py +0 -0
  171. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/ratios/solvency_model.py +0 -0
  172. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/ratios/valuation_model.py +0 -0
  173. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/risk/__init__.py +0 -0
  174. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/risk/backtesting_model.py +0 -0
  175. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/risk/copula_model.py +0 -0
  176. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/risk/covar_model.py +0 -0
  177. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/risk/cvar_model.py +0 -0
  178. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/risk/evar_model.py +0 -0
  179. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/risk/garch_model.py +0 -0
  180. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/risk/helpers.py +0 -0
  181. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/risk/market_liquidity_model.py +0 -0
  182. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/risk/realized_volatility_model.py +0 -0
  183. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/risk/risk_model.py +0 -0
  184. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/risk/var_model.py +0 -0
  185. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/technicals/__init__.py +0 -0
  186. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/technicals/breadth_model.py +0 -0
  187. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/technicals/momentum_model.py +0 -0
  188. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/technicals/overlap_model.py +0 -0
  189. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/technicals/technicals_controller.py +0 -0
  190. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/technicals/volatility_model.py +0 -0
  191. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/utilities/error_model.py +0 -0
  192. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/utilities/excel_model.py +0 -0
  193. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/utilities/logger_model.py +0 -0
  194. {financetoolkit-2.2.2 → financetoolkit-2.2.3}/financetoolkit/utilities/requests_model.py +0 -0
  195. {financetoolkit-2.2.2 → financetoolkit-2.2.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.2.2
3
+ Version: 2.2.3
4
4
  Summary: Transparent and Efficient Financial Analysis
5
5
  Author: Jeroen Bouma
6
6
  License: MIT
@@ -251,6 +251,7 @@ POLICIES: dict[str, CachePolicy] = {
251
251
  f"{KEN_FRENCH}.factors_decimal": CachePolicy(ttl_seconds=7 * DAY),
252
252
  # Computed MCP tool responses layered on top of the source caches.
253
253
  f"{MCP}.tool": CachePolicy(ttl_seconds=DAY),
254
+ f"{MCP}.tool_messages": CachePolicy(ttl_seconds=DAY),
254
255
  }
255
256
 
256
257
 
@@ -242,7 +242,8 @@ def collect_per_ticker(
242
242
 
243
243
  logger.warning(
244
244
  "No %s data is available for %s.",
245
- dataset.replace("_", " "),
245
+ # "earnings_call_transcripts_selection" is a cache name; the data is the transcripts.
246
+ dataset.removesuffix("_selection").replace("_", " "),
246
247
  ", ".join(without_data),
247
248
  )
248
249
 
@@ -213,6 +213,60 @@ def is_currency_pair(ticker: str) -> bool:
213
213
  )
214
214
 
215
215
 
216
+ # The quote currencies of crypto pairs besides the fiat currencies, as in ETH-BTC.
217
+ CRYPTO_QUOTE_CURRENCIES = {"USDT", "USDC", "BTC", "ETH"}
218
+
219
+
220
+ def to_financial_modeling_prep_symbol(symbol: str) -> str:
221
+ """
222
+ Writes a Yahoo Finance currency or crypto symbol as FinancialModelingPrep writes it,
223
+ so either form can be passed: EURUSD=X becomes EURUSD and BTC-USD becomes BTCUSD.
224
+ Any other symbol, such as a share class (BRK-B), is returned unchanged.
225
+
226
+ Args:
227
+ symbol (str): The symbol, e.g. "EURUSD=X" or "BTC-USD".
228
+
229
+ Returns:
230
+ str: The symbol as FinancialModelingPrep writes it.
231
+ """
232
+ upper = symbol.strip().upper()
233
+
234
+ if upper.endswith("=X") and is_currency_pair(upper):
235
+ return upper.removesuffix("=X")
236
+
237
+ base, separator, quote = upper.partition("-")
238
+
239
+ if (
240
+ separator
241
+ and len(base) > 1
242
+ and base.isalnum()
243
+ and (quote in CURRENCY_CODES or quote in CRYPTO_QUOTE_CURRENCIES)
244
+ ):
245
+ return f"{base}{quote}"
246
+
247
+ return symbol
248
+
249
+
250
+ def to_yahoo_finance_symbol(symbol: str) -> str:
251
+ """
252
+ Writes a FinancialModelingPrep currency pair as Yahoo Finance writes it: EURUSD
253
+ becomes EURUSD=X. A crypto pair such as BTCUSD cannot be told apart from a share
254
+ ticker reliably, so it, and any other symbol, is returned unchanged.
255
+
256
+ Args:
257
+ symbol (str): The symbol, e.g. "EURUSD".
258
+
259
+ Returns:
260
+ str: The symbol as Yahoo Finance writes it.
261
+ """
262
+ upper = symbol.strip().upper()
263
+
264
+ if is_currency_pair(upper) and not upper.endswith("=X"):
265
+ return f"{upper}=X"
266
+
267
+ return symbol
268
+
269
+
216
270
  def get_fx_ticker(base_currency: str, quote_currency: str) -> str:
217
271
  """
218
272
  Returns the ticker to request historical exchange rate data for from a data
@@ -153,6 +153,10 @@ class Discovery:
153
153
  The search instruments function allows you to search for a company or financial instrument
154
154
  by name. It returns a dataframe with all the symbols that match the query.
155
155
 
156
+ An ISIN or CUSIP search returns every listing of the security, most traded first, so
157
+ the primary listing leads (e.g. AAPL before AAPL.MX). The Market Cap of each listing
158
+ is in the listing's own currency.
159
+
156
160
  Also known as: find companies, lookup stocks, ticker search, instrument search.
157
161
 
158
162
  Args:
@@ -225,6 +229,7 @@ class Discovery:
225
229
  exchange: str | None = None,
226
230
  is_etf: bool | None = None,
227
231
  limit: int = 1000,
232
+ primary_only: bool = False,
228
233
  ):
229
234
  """
230
235
  Screen stocks based on a set of criteria. This can be useful to find companies that match
@@ -263,6 +268,13 @@ class Discovery:
263
268
  exchange (str | None): The exchange code to restrict the screen to, e.g. "NASDAQ".
264
269
  is_etf (bool | None): Whether to restrict the screen to ETFs or to exclude them.
265
270
  limit (int): The maximum number of companies to return. Defaults to 1000.
271
+ primary_only (bool): Whether to keep only the home listing of each company (on an
272
+ exchange in its own country, the most traded one among several) rather than
273
+ every listing (e.g. ING in Amsterdam, New York, Toronto and Frankfurt).
274
+ Defaults to False.
275
+
276
+ Market caps are in each listing's own currency in "Market Cap" and in US dollars in
277
+ "Market Cap (USD)", which the market cap bounds and the ranking use.
266
278
 
267
279
  Returns:
268
280
  pd.DataFrame: A dataframe with all the symbols that match the query. An empty
@@ -342,6 +354,7 @@ class Discovery:
342
354
  is_etf=is_etf,
343
355
  limit=limit,
344
356
  user_subscription=self._fmp_plan,
357
+ primary_only=primary_only,
345
358
  )
346
359
 
347
360
  return stock_screener
@@ -443,12 +456,14 @@ class Discovery:
443
456
  date, so 1.25 means +1.25% and not +125%. One API call is made per sector because the
444
457
  combined endpoint this used to read was retired and now answers with an empty response.
445
458
 
446
- Without a date range the API hands back only the earliest days it holds, so pass
447
- `start_date` and `end_date` to look at a recent window.
459
+ Without a date range the API hands back only the earliest days it holds, so the
460
+ last year up to today is retrieved unless `start_date` and `end_date` say otherwise.
448
461
 
449
462
  Args:
450
463
  start_date (str | None): The start date to filter data with, e.g. "2024-01-01".
464
+ Defaults to a year ago.
451
465
  end_date (str | None): The end date to filter data with, e.g. "2024-12-31".
466
+ Defaults to today.
452
467
 
453
468
  Returns:
454
469
  pd.DataFrame: A dataframe with the sectors performance for each sector.
@@ -510,16 +525,16 @@ class Discovery:
510
525
 
511
526
  | Symbol | Price | Name | Change | Change % | Exchange |
512
527
  |:---------|--------:|:-------------------------------------|---------:|-----------:|:-----------|
513
- | AIFU | 12.85 | AIFU Inc. | 1.67 | 14.9374 | NASDAQ |
528
+ | CCAQU | 19.49 | Collective Acquisition Corp. | 8.81 | 82.4906 | NASDAQ |
529
+ | BIYA | 2.3 | Baiya International Group Inc. | 0.935 | 68.4982 | NASDAQ |
514
530
  | ALISU | 16.65 | Calisa Acquisition Corp Units | 5.84 | 54.0241 | NASDAQ |
515
- | ALPXR | 0.1911 | Alpex Acquisition Corp. Rt | 0.0311 | 19.4375 | NASDAQ |
516
- | AMBR | 2.28 | Amber International Holding Ltd | 0.29 | 14.5729 | NASDAQ |
517
531
  | AMPGZ | 0.18 | Amplitech Group, Inc. Series B Right | 0.055 | 44 | NASDAQ |
518
- | BIYA | 2.3 | Baiya International Group Inc. | 0.935 | 68.4982 | NASDAQ |
519
532
  | BSP | 41.07 | Bending Spoons S.p.A. | 8 | 24.1911 | NASDAQ |
533
+ | ALPXR | 0.1911 | Alpex Acquisition Corp. Rt | 0.0311 | 19.4375 | NASDAQ |
520
534
  | CANG | 3.58 | Cango Inc. | 0.56 | 18.5431 | NYSE |
521
- | CCAQU | 19.49 | Collective Acquisition Corp. | 8.81 | 82.4906 | NASDAQ |
522
535
  | CCG | 5.77 | Cheche Group Inc. | 0.8 | 16.0966 | NASDAQ |
536
+ | AIFU | 12.85 | AIFU Inc. | 1.67 | 14.9374 | NASDAQ |
537
+ | AMBR | 2.28 | Amber International Holding Ltd | 0.29 | 14.5729 | NASDAQ |
523
538
  """
524
539
  biggest_gainers = discovery_model.get_biggest_gainers(
525
540
  api_key=self._api_key, user_subscription=self._fmp_plan
@@ -551,15 +566,15 @@ class Discovery:
551
566
 
552
567
  | Symbol | Price | Name | Change | Change % | Exchange |
553
568
  |:---------|--------:|:----------------------------------------------------|----------:|-----------:|:-----------|
569
+ | BULG | 21.1116 | Leverage Shares 2x Long BULL Daily ETF | -12.9859 | -38.0846 | NASDAQ |
554
570
  | AIXI | 1.32 | Xiao-I Corporation | -0.53 | -28.6486 | NASDAQ |
555
- | ALMR | 27.77 | Alamar Biosciences, Inc. | -4.49 | -13.9182 | NASDAQ |
556
571
  | AVAT | 1.66 | Avalanche Treasury Corporation Class A Common Stock | -0.41 | -19.8068 | NASDAQ |
572
+ | BULL | 5.89 | Webull Corporation Class A Ordinary Shares | -1.39 | -19.0934 | NASDAQ |
557
573
  | BBUL | 12.8794 | GraniteShares 2x Long BB Daily ETF | -2.6906 | -17.2807 | NASDAQ |
558
- | BLIN | 0.7821 | Bridgeline Digital, Inc. | -0.11035 | -12.3648 | NASDAQ |
559
574
  | BRNX | 1.53 | BrenX Ltd. | -0.27 | -15 | NASDAQ |
560
- | BULG | 21.1116 | Leverage Shares 2x Long BULL Daily ETF | -12.9859 | -38.0846 | NASDAQ |
561
- | BULL | 5.89 | Webull Corporation Class A Ordinary Shares | -1.39 | -19.0934 | NASDAQ |
562
575
  | BURU | 1.03 | Nuburu, Inc. | -0.17 | -14.1667 | AMEX |
576
+ | ALMR | 27.77 | Alamar Biosciences, Inc. | -4.49 | -13.9182 | NASDAQ |
577
+ | BLIN | 0.7821 | Bridgeline Digital, Inc. | -0.11035 | -12.3648 | NASDAQ |
563
578
  | CDLX | 2.28 | Cardlytics, Inc. | -0.32 | -12.3077 | NASDAQ |
564
579
  """
565
580
 
@@ -1590,7 +1605,11 @@ class Discovery:
1590
1605
  return splits_calendar
1591
1606
 
1592
1607
  def get_sector_performance(
1593
- self, date: str | None = None, sector: str | None = None
1608
+ self,
1609
+ date: str | None = None,
1610
+ sector: str | None = None,
1611
+ start_date: str | None = None,
1612
+ end_date: str | None = None,
1594
1613
  ) -> pd.DataFrame:
1595
1614
  """
1596
1615
  Returns sector performance — the average price change per sector. Provide
@@ -1602,6 +1621,9 @@ class Discovery:
1602
1621
  Args:
1603
1622
  date (str, optional): The date to retrieve a snapshot for, e.g. "2024-02-01".
1604
1623
  sector (str, optional): The sector to retrieve the history for, e.g. "Energy".
1624
+ start_date (str, optional): The start of the history of one sector. Defaults to a year
1625
+ ago.
1626
+ end_date (str, optional): The end of the history of one sector. Defaults to today.
1605
1627
 
1606
1628
  Returns:
1607
1629
  pd.DataFrame: A dataframe with sector performance, indexed by Sector
@@ -1639,13 +1661,19 @@ class Discovery:
1639
1661
  api_key=self._api_key,
1640
1662
  date=date,
1641
1663
  sector=sector,
1664
+ start_date=start_date,
1665
+ end_date=end_date,
1642
1666
  user_subscription=self._fmp_plan,
1643
1667
  )
1644
1668
 
1645
1669
  return sector_performance
1646
1670
 
1647
1671
  def get_industry_performance(
1648
- self, date: str | None = None, industry: str | None = None
1672
+ self,
1673
+ date: str | None = None,
1674
+ industry: str | None = None,
1675
+ start_date: str | None = None,
1676
+ end_date: str | None = None,
1649
1677
  ) -> pd.DataFrame:
1650
1678
  """
1651
1679
  Returns industry performance — the average price change per industry. Provide
@@ -1657,6 +1685,9 @@ class Discovery:
1657
1685
  Args:
1658
1686
  date (str, optional): The date to retrieve a snapshot for, e.g. "2024-02-01".
1659
1687
  industry (str, optional): The industry to retrieve the history for, e.g. "Biotechnology".
1688
+ start_date (str, optional): The start of the history of one industry. Defaults to a year
1689
+ ago.
1690
+ end_date (str, optional): The end of the history of one industry. Defaults to today.
1660
1691
 
1661
1692
  Returns:
1662
1693
  pd.DataFrame: A dataframe with industry performance, indexed by Industry
@@ -1694,13 +1725,19 @@ class Discovery:
1694
1725
  api_key=self._api_key,
1695
1726
  date=date,
1696
1727
  industry=industry,
1728
+ start_date=start_date,
1729
+ end_date=end_date,
1697
1730
  user_subscription=self._fmp_plan,
1698
1731
  )
1699
1732
 
1700
1733
  return industry_performance
1701
1734
 
1702
1735
  def get_sector_pe(
1703
- self, date: str | None = None, sector: str | None = None
1736
+ self,
1737
+ date: str | None = None,
1738
+ sector: str | None = None,
1739
+ start_date: str | None = None,
1740
+ end_date: str | None = None,
1704
1741
  ) -> pd.DataFrame:
1705
1742
  """
1706
1743
  Returns sector price-to-earnings (P/E) ratios. Provide exactly one of `date`
@@ -1712,6 +1749,9 @@ class Discovery:
1712
1749
  Args:
1713
1750
  date (str, optional): The date to retrieve a snapshot for, e.g. "2024-02-01".
1714
1751
  sector (str, optional): The sector to retrieve the history for, e.g. "Energy".
1752
+ start_date (str, optional): The start of the history of one sector. Defaults to a year
1753
+ ago.
1754
+ end_date (str, optional): The end of the history of one sector. Defaults to today.
1715
1755
 
1716
1756
  Returns:
1717
1757
  pd.DataFrame: A dataframe with sector P/E ratios, indexed by Sector
@@ -1749,13 +1789,19 @@ class Discovery:
1749
1789
  api_key=self._api_key,
1750
1790
  date=date,
1751
1791
  sector=sector,
1792
+ start_date=start_date,
1793
+ end_date=end_date,
1752
1794
  user_subscription=self._fmp_plan,
1753
1795
  )
1754
1796
 
1755
1797
  return sector_pe
1756
1798
 
1757
1799
  def get_industry_pe(
1758
- self, date: str | None = None, industry: str | None = None
1800
+ self,
1801
+ date: str | None = None,
1802
+ industry: str | None = None,
1803
+ start_date: str | None = None,
1804
+ end_date: str | None = None,
1759
1805
  ) -> pd.DataFrame:
1760
1806
  """
1761
1807
  Returns industry price-to-earnings (P/E) ratios. Provide exactly one of
@@ -1767,6 +1813,9 @@ class Discovery:
1767
1813
  Args:
1768
1814
  date (str, optional): The date to retrieve a snapshot for, e.g. "2024-02-01".
1769
1815
  industry (str, optional): The industry to retrieve the history for, e.g. "Biotechnology".
1816
+ start_date (str, optional): The start of the history of one industry. Defaults to a year
1817
+ ago.
1818
+ end_date (str, optional): The end of the history of one industry. Defaults to today.
1770
1819
 
1771
1820
  Returns:
1772
1821
  pd.DataFrame: A dataframe with industry P/E ratios, indexed by Industry
@@ -1804,6 +1853,8 @@ class Discovery:
1804
1853
  api_key=self._api_key,
1805
1854
  date=date,
1806
1855
  industry=industry,
1856
+ start_date=start_date,
1857
+ end_date=end_date,
1807
1858
  user_subscription=self._fmp_plan,
1808
1859
  )
1809
1860
 
@@ -1928,8 +1979,8 @@ class Discovery:
1928
1979
  Also known as: current reports, material event filings, SEC filings.
1929
1980
 
1930
1981
  Args:
1931
- start_date (str, optional): The start date to filter data with.
1932
- end_date (str, optional): The end date to filter data with.
1982
+ start_date (str, optional): The start date to filter data with. Defaults to 30 days ago.
1983
+ end_date (str, optional): The end date to filter data with. Defaults to today.
1933
1984
  limit (int, optional): The number of results to return. Defaults to 100.
1934
1985
  page (int, optional): The page number to retrieve. Defaults to 0.
1935
1986