investing-algorithm-framework 8.2.0__tar.gz → 8.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/PKG-INFO +20 -11
  2. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/README.md +11 -8
  3. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/__init__.py +37 -5
  4. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/app.py +126 -14
  5. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/context.py +413 -87
  6. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/__init__.py +24 -0
  7. investing_algorithm_framework-8.3.0/investing_algorithm_framework/domain/blotter.py +752 -0
  8. investing_algorithm_framework-8.3.0/investing_algorithm_framework/domain/fx.py +137 -0
  9. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/data/data_source.py +177 -2
  10. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/__init__.py +14 -4
  11. investing_algorithm_framework-8.3.0/investing_algorithm_framework/infrastructure/data_providers/__init__.py +120 -0
  12. investing_algorithm_framework-8.3.0/investing_algorithm_framework/infrastructure/data_providers/alpha_vantage.py +170 -0
  13. investing_algorithm_framework-8.3.0/investing_algorithm_framework/infrastructure/data_providers/base_url.py +372 -0
  14. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/data_providers/csv.py +3 -2
  15. investing_algorithm_framework-8.3.0/investing_algorithm_framework/infrastructure/data_providers/csv_url.py +33 -0
  16. investing_algorithm_framework-8.3.0/investing_algorithm_framework/infrastructure/data_providers/json_url.py +53 -0
  17. investing_algorithm_framework-8.3.0/investing_algorithm_framework/infrastructure/data_providers/ohlcv_base.py +587 -0
  18. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/data_providers/pandas.py +7 -5
  19. investing_algorithm_framework-8.3.0/investing_algorithm_framework/infrastructure/data_providers/parquet_url.py +36 -0
  20. investing_algorithm_framework-8.3.0/investing_algorithm_framework/infrastructure/data_providers/polygon.py +137 -0
  21. investing_algorithm_framework-8.3.0/investing_algorithm_framework/infrastructure/data_providers/yahoo.py +134 -0
  22. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/order_executors/__init__.py +0 -2
  23. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/services/backtesting/backtest_service.py +5 -0
  24. investing_algorithm_framework-8.3.0/investing_algorithm_framework/services/metrics/risk_free_rate.py +49 -0
  25. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/order_service/order_backtest_service.py +0 -1
  26. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/trade_order_evaluator/backtest_trade_oder_evaluator.py +107 -56
  27. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/trade_order_evaluator/trade_order_evaluator.py +16 -3
  28. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/pyproject.toml +11 -3
  29. investing_algorithm_framework-8.2.0/investing_algorithm_framework/infrastructure/data_providers/__init__.py +0 -39
  30. investing_algorithm_framework-8.2.0/investing_algorithm_framework/infrastructure/order_executors/backtest_oder_executor.py +0 -28
  31. investing_algorithm_framework-8.2.0/investing_algorithm_framework/services/metrics/risk_free_rate.py +0 -28
  32. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/LICENSE +0 -0
  33. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/analysis/__init__.py +0 -0
  34. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/analysis/backtest_data_ranges.py +0 -0
  35. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/analysis/markdown.py +0 -0
  36. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/analysis/ranking.py +0 -0
  37. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/__init__.py +0 -0
  38. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/algorithm/__init__.py +0 -0
  39. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/algorithm/algorithm.py +0 -0
  40. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/algorithm/algorithm_factory.py +0 -0
  41. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/app_hook.py +0 -0
  42. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/eventloop.py +0 -0
  43. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/__init__.py +0 -0
  44. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/ascii.py +0 -0
  45. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/backtest_report.py +0 -0
  46. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/backtest_report_old.py +0 -0
  47. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/charts/__init__.py +0 -0
  48. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/charts/entry_exist_signals.py +0 -0
  49. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/charts/equity_curve.py +0 -0
  50. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/charts/equity_curve_drawdown.py +0 -0
  51. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/charts/line_chart.py +0 -0
  52. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/charts/monthly_returns_heatmap.py +0 -0
  53. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/charts/ohlcv_data_completeness.py +0 -0
  54. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/charts/rolling_sharp_ratio.py +0 -0
  55. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/charts/yearly_returns_barchart.py +0 -0
  56. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/generate.py +0 -0
  57. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/tables/__init__.py +0 -0
  58. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/tables/key_metrics_table.py +0 -0
  59. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/tables/stop_loss_table.py +0 -0
  60. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/tables/time_metrics_table.py +0 -0
  61. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/tables/trade_metrics_table.py +0 -0
  62. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/tables/trades_table.py +0 -0
  63. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/tables/utils.py +0 -0
  64. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/templates/dashboard.css +0 -0
  65. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/templates/dashboard.js +0 -0
  66. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/templates/dashboard_template.html.j2 +0 -0
  67. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/reporting/templates/report_template.html.j2 +0 -0
  68. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/stateless/__init__.py +0 -0
  69. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/stateless/action_handlers/__init__.py +0 -0
  70. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/stateless/action_handlers/action_handler_strategy.py +0 -0
  71. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/stateless/action_handlers/check_online_handler.py +0 -0
  72. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/stateless/action_handlers/run_strategy_handler.py +0 -0
  73. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/stateless/exception_handler.py +0 -0
  74. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/strategy.py +0 -0
  75. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/task.py +0 -0
  76. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/web/__init__.py +0 -0
  77. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/web/controllers/__init__.py +0 -0
  78. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/web/controllers/orders.py +0 -0
  79. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/web/controllers/portfolio.py +0 -0
  80. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/web/controllers/positions.py +0 -0
  81. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/web/create_app.py +0 -0
  82. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/web/error_handler.py +0 -0
  83. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/web/responses.py +0 -0
  84. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/web/run_strategies.py +0 -0
  85. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/web/schemas/__init__.py +0 -0
  86. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/web/schemas/order.py +0 -0
  87. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/web/schemas/portfolio.py +0 -0
  88. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/web/schemas/position.py +0 -0
  89. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/app/web/setup_cors.py +0 -0
  90. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/__init__.py +0 -0
  91. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/cli.py +0 -0
  92. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/deploy_to_aws_lambda.py +0 -0
  93. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/deploy_to_azure_function.py +0 -0
  94. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/initialize_app.py +0 -0
  95. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/mcp_server.py +0 -0
  96. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/.gitignore.template +0 -0
  97. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/app.py.template +0 -0
  98. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/app_aws_lambda_function.py.template +0 -0
  99. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/app_azure_function.py.template +0 -0
  100. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/app_web.py.template +0 -0
  101. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/aws_lambda_dockerfile.template +0 -0
  102. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/aws_lambda_dockerignore.template +0 -0
  103. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/aws_lambda_readme.md.template +0 -0
  104. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/aws_lambda_requirements.txt.template +0 -0
  105. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/azure_function_function_app.py.template +0 -0
  106. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/azure_function_host.json.template +0 -0
  107. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/azure_function_local.settings.json.template +0 -0
  108. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/azure_function_requirements.txt.template +0 -0
  109. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/data_providers.py.template +0 -0
  110. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/env.example.template +0 -0
  111. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/env_azure_function.example.template +0 -0
  112. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/market_data_providers.py.template +0 -0
  113. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/readme.md.template +0 -0
  114. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/requirements.txt.template +0 -0
  115. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/run_backtest.py.template +0 -0
  116. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/templates/strategy.py.template +0 -0
  117. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/cli/validate_backtest_checkpoints.py +0 -0
  118. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/create_app.py +0 -0
  119. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/dependency_container.py +0 -0
  120. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/algorithm_id.py +0 -0
  121. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/backtesting/__init__.py +0 -0
  122. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/backtesting/backtest.py +0 -0
  123. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/backtesting/backtest_date_range.py +0 -0
  124. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/backtesting/backtest_evaluation_focuss.py +0 -0
  125. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/backtesting/backtest_metrics.py +0 -0
  126. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/backtesting/backtest_permutation_test.py +0 -0
  127. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/backtesting/backtest_run.py +0 -0
  128. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/backtesting/backtest_summary_metrics.py +0 -0
  129. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/backtesting/backtest_utils.py +0 -0
  130. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/backtesting/combine_backtests.py +0 -0
  131. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/backtesting/templates/backtest.html +0 -0
  132. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/backtesting/templates/finterion-dark.png +0 -0
  133. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/backtesting/templates/finterion-light.png +0 -0
  134. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/config.py +0 -0
  135. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/constants.py +0 -0
  136. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/data_provider.py +0 -0
  137. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/data_structures.py +0 -0
  138. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/decimal_parsing.py +0 -0
  139. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/exceptions.py +0 -0
  140. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/__init__.py +0 -0
  141. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/app_mode.py +0 -0
  142. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/base_model.py +0 -0
  143. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/data/__init__.py +0 -0
  144. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/data/data_type.py +0 -0
  145. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/event.py +0 -0
  146. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/market/__init__.py +0 -0
  147. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/market/market_credential.py +0 -0
  148. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/order/__init__.py +0 -0
  149. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/order/order.py +0 -0
  150. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/order/order_side.py +0 -0
  151. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/order/order_status.py +0 -0
  152. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/order/order_type.py +0 -0
  153. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/portfolio/__init__.py +0 -0
  154. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/portfolio/portfolio.py +0 -0
  155. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/portfolio/portfolio_configuration.py +0 -0
  156. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/portfolio/portfolio_snapshot.py +0 -0
  157. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/position/__init__.py +0 -0
  158. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/position/position.py +0 -0
  159. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/position/position_size.py +0 -0
  160. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/position/position_snapshot.py +0 -0
  161. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/risk_rules/__init__.py +0 -0
  162. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/risk_rules/scaling_rule.py +0 -0
  163. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/risk_rules/stop_loss_rule.py +0 -0
  164. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/risk_rules/take_profit_rule.py +0 -0
  165. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/risk_rules/trading_cost.py +0 -0
  166. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/snapshot_interval.py +0 -0
  167. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/strategy_profile.py +0 -0
  168. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/time_frame.py +0 -0
  169. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/time_interval.py +0 -0
  170. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/time_unit.py +0 -0
  171. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/tracing/__init__.py +0 -0
  172. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/tracing/trace.py +0 -0
  173. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/trade/__init__.py +0 -0
  174. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/trade/trade.py +0 -0
  175. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/trade/trade_status.py +0 -0
  176. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/trade/trade_stop_loss.py +0 -0
  177. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/models/trade/trade_take_profit.py +0 -0
  178. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/order_executor.py +0 -0
  179. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/portfolio_provider.py +0 -0
  180. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/services/__init__.py +0 -0
  181. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/services/market_credential_service.py +0 -0
  182. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/services/portfolios/__init__.py +0 -0
  183. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/services/portfolios/portfolio_sync_service.py +0 -0
  184. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/services/rounding_service.py +0 -0
  185. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/services/state_handler.py +0 -0
  186. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/stateless_actions.py +0 -0
  187. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/strategy.py +0 -0
  188. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/utils/__init__.py +0 -0
  189. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/utils/csv.py +0 -0
  190. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/utils/custom_tqdm.py +0 -0
  191. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/utils/dates.py +0 -0
  192. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/utils/jupyter_notebook_detection.py +0 -0
  193. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/utils/polars.py +0 -0
  194. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/utils/random.py +0 -0
  195. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/utils/signatures.py +0 -0
  196. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/utils/stoppable_thread.py +0 -0
  197. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/domain/utils/synchronized.py +0 -0
  198. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/download_data.py +0 -0
  199. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/data_providers/ccxt.py +0 -0
  200. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/database/__init__.py +0 -0
  201. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/database/sql_alchemy.py +0 -0
  202. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/__init__.py +0 -0
  203. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/decimal_parser.py +0 -0
  204. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/model_extension.py +0 -0
  205. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/order/__init__.py +0 -0
  206. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/order/order.py +0 -0
  207. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/order/trade_allocation.py +0 -0
  208. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/order_trade_association.py +0 -0
  209. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/portfolio/__init__.py +0 -0
  210. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/portfolio/portfolio_snapshot.py +0 -0
  211. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/portfolio/sql_portfolio.py +0 -0
  212. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/position/__init__.py +0 -0
  213. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/position/position.py +0 -0
  214. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/position/position_snapshot.py +0 -0
  215. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/trades/__init__.py +0 -0
  216. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/trades/trade.py +0 -0
  217. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/trades/trade_stop_loss.py +0 -0
  218. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/models/trades/trade_take_profit.py +0 -0
  219. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/order_executors/ccxt_order_executor.py +0 -0
  220. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/portfolio_providers/__init__.py +0 -0
  221. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/portfolio_providers/ccxt_portfolio_provider.py +0 -0
  222. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/repositories/__init__.py +0 -0
  223. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/repositories/order_repository.py +0 -0
  224. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/repositories/portfolio_repository.py +0 -0
  225. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/repositories/portfolio_snapshot_repository.py +0 -0
  226. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/repositories/position_repository.py +0 -0
  227. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/repositories/position_snapshot_repository.py +0 -0
  228. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/repositories/repository.py +0 -0
  229. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/repositories/trade_allocation_repository.py +0 -0
  230. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/repositories/trade_repository.py +0 -0
  231. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/repositories/trade_stop_loss_repository.py +0 -0
  232. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/repositories/trade_take_profit_repository.py +0 -0
  233. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/services/__init__.py +0 -0
  234. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/services/aws/__init__.py +0 -0
  235. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/services/aws/state_handler.py +0 -0
  236. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/services/azure/__init__.py +0 -0
  237. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/services/azure/state_handler.py +0 -0
  238. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/services/backtesting/__init__.py +0 -0
  239. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/services/backtesting/event_backtest_service.py +0 -0
  240. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/infrastructure/services/backtesting/vector_backtest_service.py +0 -0
  241. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/__init__.py +0 -0
  242. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/configuration_service.py +0 -0
  243. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/data_providers/__init__.py +0 -0
  244. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/data_providers/data.py +0 -0
  245. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/data_providers/data_provider_service.py +0 -0
  246. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/market_credential_service.py +0 -0
  247. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/__init__.py +0 -0
  248. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/alpha.py +0 -0
  249. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/beta.py +0 -0
  250. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/cagr.py +0 -0
  251. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/calmar_ratio.py +0 -0
  252. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/drawdown.py +0 -0
  253. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/equity_curve.py +0 -0
  254. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/exposure.py +0 -0
  255. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/generate.py +0 -0
  256. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/mean_daily_return.py +0 -0
  257. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/price_efficiency.py +0 -0
  258. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/profit_factor.py +0 -0
  259. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/recovery.py +0 -0
  260. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/returns.py +0 -0
  261. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/sharpe_ratio.py +0 -0
  262. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/sortino_ratio.py +0 -0
  263. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/standard_deviation.py +0 -0
  264. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/trades.py +0 -0
  265. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/treynor_ratio.py +0 -0
  266. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/ulcer.py +0 -0
  267. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/value_at_risk.py +0 -0
  268. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/volatility.py +0 -0
  269. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/metrics/win_rate.py +0 -0
  270. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/order_service/__init__.py +0 -0
  271. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/order_service/order_executor_lookup.py +0 -0
  272. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/order_service/order_service.py +0 -0
  273. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/portfolios/__init__.py +0 -0
  274. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/portfolios/backtest_portfolio_service.py +0 -0
  275. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/portfolios/portfolio_configuration_service.py +0 -0
  276. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/portfolios/portfolio_provider_lookup.py +0 -0
  277. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/portfolios/portfolio_service.py +0 -0
  278. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/portfolios/portfolio_snapshot_service.py +0 -0
  279. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/portfolios/portfolio_sync_service.py +0 -0
  280. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/positions/__init__.py +0 -0
  281. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/positions/position_service.py +0 -0
  282. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/positions/position_snapshot_service.py +0 -0
  283. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/repository_service.py +0 -0
  284. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/trade_order_evaluator/__init__.py +0 -0
  285. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/trade_order_evaluator/default_trade_order_evaluator.py +0 -0
  286. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/trade_service/__init__.py +0 -0
  287. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/trade_service/trade_service.py +0 -0
  288. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/trade_service/trade_stop_loss_service.py +0 -0
  289. {investing_algorithm_framework-8.2.0 → investing_algorithm_framework-8.3.0}/investing_algorithm_framework/services/trade_service/trade_take_profit_service.py +0 -0
@@ -1,17 +1,22 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: investing-algorithm-framework
3
- Version: 8.2.0
3
+ Version: 8.3.0
4
4
  Summary: A framework for creating trading bots
5
5
  Author: MDUYN
6
- Requires-Python: >=3.10
6
+ Requires-Python: >=3.10,<4.0
7
7
  Classifier: Programming Language :: Python :: 3
8
8
  Classifier: Programming Language :: Python :: 3.10
9
9
  Classifier: Programming Language :: Python :: 3.11
10
10
  Classifier: Programming Language :: Python :: 3.12
11
+ Provides-Extra: all
12
+ Provides-Extra: alpha-vantage
13
+ Provides-Extra: polygon
14
+ Provides-Extra: yahoo
11
15
  Requires-Dist: Flask (>=3.1.0)
12
16
  Requires-Dist: Flask-Cors (>=3.0.9,<5.0.0)
13
17
  Requires-Dist: Flask-Migrate (>=2.6.0)
14
18
  Requires-Dist: SQLAlchemy (>=2.0.18)
19
+ Requires-Dist: alpha_vantage (>=3.0.0,<4.0.0) ; extra == "alpha-vantage" or extra == "all"
15
20
  Requires-Dist: azure-identity (>=1.19.0,<2.0.0)
16
21
  Requires-Dist: azure-mgmt-resource (>=23.2.0,<24.0.0)
17
22
  Requires-Dist: azure-mgmt-storage (>=21.2.1,<22.0.0)
@@ -24,13 +29,14 @@ Requires-Dist: jupyter (>=1.0.0)
24
29
  Requires-Dist: marshmallow (>=3.5.0)
25
30
  Requires-Dist: plotly (>=6.1.2,<7.0.0)
26
31
  Requires-Dist: polars[numpy,pandas] (>=0.20.10)
32
+ Requires-Dist: polygon-api-client (>=1.14.0,<2.0.0) ; extra == "polygon" or extra == "all"
27
33
  Requires-Dist: python-dateutil (>=2.8.2)
28
34
  Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
29
35
  Requires-Dist: schedule (>=1.1.0)
30
36
  Requires-Dist: tabulate (>=0.9.0)
31
37
  Requires-Dist: tqdm (>=4.66.1)
32
38
  Requires-Dist: wrapt (>=1.16.0)
33
- Requires-Dist: yfinance (>=0.2.61,<0.3.0)
39
+ Requires-Dist: yfinance (>=0.2.61,<0.3.0) ; extra == "yahoo" or extra == "all"
34
40
  Description-Content-Type: text/markdown
35
41
 
36
42
  <h1 align="center">
@@ -111,6 +117,7 @@ This framework is built around the full loop: **create strategies → backtest t
111
117
  - 🎯 **Return Scenario Projections** — Good, average, bad & very bad year projections from backtest data
112
118
  - 📉 **Benchmark Comparison** — Beat-rate analysis vs Buy & Hold, DCA, risk-free & custom benchmarks
113
119
  - 📄 **One-Click HTML Report** — Self-contained file, no server, dark & light theme, shareable
120
+ - 🌐 **Load External Data** — Fetch CSV, JSON, or Parquet from any URL with caching and auto-refresh
114
121
  - 🚀 **Build → Backtest → Deploy** — Local dev, cloud deploy (AWS / Azure), or monetize on Finterion
115
122
 
116
123
  </details>
@@ -297,15 +304,17 @@ report.save("my_report.html")
297
304
 
298
305
  | | |
299
306
  |---|---|
300
- | **Backtest Report Dashboard** | Self-contained HTML report with ranking tables, equity curves, metric charts, heatmaps, and strategy comparison |
301
- | **Event-Driven Backtesting** | Realistic, order-by-order simulation |
302
- | **Vectorized Backtesting** | Fast signal research and prototyping |
307
+ | **[Backtest Report Dashboard](https://coding-kitties.github.io/investing-algorithm-framework/Getting%20Started/backtest-reports)** | Self-contained HTML report with ranking tables, equity curves, metric charts, heatmaps, and strategy comparison |
308
+ | **[Event-Driven Backtesting](https://coding-kitties.github.io/investing-algorithm-framework/Getting%20Started/backtesting)** | Realistic, order-by-order simulation |
309
+ | **[Vectorized Backtesting](https://coding-kitties.github.io/investing-algorithm-framework/Advanced%20Concepts/vector-backtesting)** | Fast signal research and prototyping |
303
310
  | **50+ Metrics** | CAGR, Sharpe, Sortino, max drawdown, win rate, profit factor, recovery factor, volatility, and more |
304
- | **Live Trading** | Connect to exchanges via CCXT for real-time execution |
305
- | **Portfolio Management** | Position tracking, trade management, persistence |
306
- | **Cloud Deployment** | Deploy to AWS Lambda, Azure Functions, or run as a web service |
307
- | **Market Data** | OHLCV, tickers, custom dataPolars and Pandas native |
308
- | **Extensible** | Custom data providers, order executors, and strategy classes |
311
+ | **[Live Trading](https://coding-kitties.github.io/investing-algorithm-framework/Getting%20Started/application-setup)** | Connect to exchanges via CCXT for real-time execution |
312
+ | **[Portfolio Management](https://coding-kitties.github.io/investing-algorithm-framework/Getting%20Started/portfolio-configuration)** | Position tracking, trade management, persistence |
313
+ | **[Cloud Deployment](https://coding-kitties.github.io/investing-algorithm-framework/Getting%20Started/deployment)** | Deploy to AWS Lambda, Azure Functions, or run as a web service |
314
+ | **[Market Data Providers](https://coding-kitties.github.io/investing-algorithm-framework/Advanced%20Concepts/custom-data-providers)** | Built-in providers for CCXT, Yahoo Finance, Alpha Vantage, and Polygon or build your own |
315
+ | **[Load External Data](https://coding-kitties.github.io/investing-algorithm-framework/Data/external-data)** | Fetch CSV, JSON, or Parquet from any URL with caching, date parsing, and pre/post-processing |
316
+ | **[Strategies](https://coding-kitties.github.io/investing-algorithm-framework/Getting%20Started/strategies)** | OHLCV, tickers, custom data — Polars and Pandas native |
317
+ | **[Extensible](https://coding-kitties.github.io/investing-algorithm-framework/Advanced%20Concepts/custom-data-providers)** | Custom data providers, order executors, and strategy classes |
309
318
 
310
319
  </details>
311
320
 
@@ -76,6 +76,7 @@ This framework is built around the full loop: **create strategies → backtest t
76
76
  - 🎯 **Return Scenario Projections** — Good, average, bad & very bad year projections from backtest data
77
77
  - 📉 **Benchmark Comparison** — Beat-rate analysis vs Buy & Hold, DCA, risk-free & custom benchmarks
78
78
  - 📄 **One-Click HTML Report** — Self-contained file, no server, dark & light theme, shareable
79
+ - 🌐 **Load External Data** — Fetch CSV, JSON, or Parquet from any URL with caching and auto-refresh
79
80
  - 🚀 **Build → Backtest → Deploy** — Local dev, cloud deploy (AWS / Azure), or monetize on Finterion
80
81
 
81
82
  </details>
@@ -262,15 +263,17 @@ report.save("my_report.html")
262
263
 
263
264
  | | |
264
265
  |---|---|
265
- | **Backtest Report Dashboard** | Self-contained HTML report with ranking tables, equity curves, metric charts, heatmaps, and strategy comparison |
266
- | **Event-Driven Backtesting** | Realistic, order-by-order simulation |
267
- | **Vectorized Backtesting** | Fast signal research and prototyping |
266
+ | **[Backtest Report Dashboard](https://coding-kitties.github.io/investing-algorithm-framework/Getting%20Started/backtest-reports)** | Self-contained HTML report with ranking tables, equity curves, metric charts, heatmaps, and strategy comparison |
267
+ | **[Event-Driven Backtesting](https://coding-kitties.github.io/investing-algorithm-framework/Getting%20Started/backtesting)** | Realistic, order-by-order simulation |
268
+ | **[Vectorized Backtesting](https://coding-kitties.github.io/investing-algorithm-framework/Advanced%20Concepts/vector-backtesting)** | Fast signal research and prototyping |
268
269
  | **50+ Metrics** | CAGR, Sharpe, Sortino, max drawdown, win rate, profit factor, recovery factor, volatility, and more |
269
- | **Live Trading** | Connect to exchanges via CCXT for real-time execution |
270
- | **Portfolio Management** | Position tracking, trade management, persistence |
271
- | **Cloud Deployment** | Deploy to AWS Lambda, Azure Functions, or run as a web service |
272
- | **Market Data** | OHLCV, tickers, custom dataPolars and Pandas native |
273
- | **Extensible** | Custom data providers, order executors, and strategy classes |
270
+ | **[Live Trading](https://coding-kitties.github.io/investing-algorithm-framework/Getting%20Started/application-setup)** | Connect to exchanges via CCXT for real-time execution |
271
+ | **[Portfolio Management](https://coding-kitties.github.io/investing-algorithm-framework/Getting%20Started/portfolio-configuration)** | Position tracking, trade management, persistence |
272
+ | **[Cloud Deployment](https://coding-kitties.github.io/investing-algorithm-framework/Getting%20Started/deployment)** | Deploy to AWS Lambda, Azure Functions, or run as a web service |
273
+ | **[Market Data Providers](https://coding-kitties.github.io/investing-algorithm-framework/Advanced%20Concepts/custom-data-providers)** | Built-in providers for CCXT, Yahoo Finance, Alpha Vantage, and Polygon or build your own |
274
+ | **[Load External Data](https://coding-kitties.github.io/investing-algorithm-framework/Data/external-data)** | Fetch CSV, JSON, or Parquet from any URL with caching, date parsing, and pre/post-processing |
275
+ | **[Strategies](https://coding-kitties.github.io/investing-algorithm-framework/Getting%20Started/strategies)** | OHLCV, tickers, custom data — Polars and Pandas native |
276
+ | **[Extensible](https://coding-kitties.github.io/investing-algorithm-framework/Advanced%20Concepts/custom-data-providers)** | Custom data providers, order executors, and strategy classes |
274
277
 
275
278
  </details>
276
279
 
@@ -24,11 +24,20 @@ from .domain import ApiException, combine_backtests, PositionSize, \
24
24
  APPLICATION_DIRECTORY, DataSource, OrderExecutor, PortfolioProvider, \
25
25
  SnapshotInterval, AWS_S3_STATE_BUCKET_NAME, BacktestEvaluationFocus, \
26
26
  save_backtests_to_directory, BacktestMetrics, DATA_DIRECTORY, \
27
- retag_backtests
27
+ retag_backtests, \
28
+ Blotter, DefaultBlotter, SimulationBlotter, Transaction, \
29
+ SlippageModel, NoSlippage, PercentageSlippage, FixedSlippage, \
30
+ VolumeImpactSlippage, \
31
+ CommissionModel, NoCommission, PercentageCommission, FixedCommission, \
32
+ FillModel, FullFill, VolumeBasedFill, \
33
+ FXRateProvider, StaticFXRateProvider
28
34
  from .infrastructure import AzureBlobStorageStateHandler, \
29
- CSVOHLCVDataProvider, CSVTickerDataProvider, \
35
+ CSVOHLCVDataProvider, CSVTickerDataProvider, CSVURLDataProvider, \
36
+ JSONURLDataProvider, ParquetURLDataProvider, \
30
37
  CCXTOHLCVDataProvider, CCXTTickerDataProvider, \
31
- PandasOHLCVDataProvider, \
38
+ PandasOHLCVDataProvider, OHLCVDataProviderBase, \
39
+ YahooOHLCVDataProvider, \
40
+ AlphaVantageOHLCVDataProvider, PolygonOHLCVDataProvider, \
32
41
  AWSS3StorageStateHandler
33
42
  from .create_app import create_app
34
43
  from .download_data import download, download_v2, DownloadResult, \
@@ -114,8 +123,13 @@ __all__ = [
114
123
  'DataType',
115
124
  'CSVOHLCVDataProvider',
116
125
  'CSVTickerDataProvider',
117
- "CCXTOHLCVDataProvider",
126
+ 'CSVURLDataProvider', 'JSONURLDataProvider',
127
+ 'ParquetURLDataProvider', "CCXTOHLCVDataProvider",
118
128
  "CCXTTickerDataProvider",
129
+ "OHLCVDataProviderBase",
130
+ "YahooOHLCVDataProvider",
131
+ "AlphaVantageOHLCVDataProvider",
132
+ "PolygonOHLCVDataProvider",
119
133
  "DataProvider",
120
134
  "get_annual_volatility",
121
135
  "get_sortino_ratio",
@@ -221,5 +235,23 @@ __all__ = [
221
235
  "download_v2",
222
236
  "DownloadResult",
223
237
  "create_data_storage_path",
224
- "DATA_DIRECTORY"
238
+ "DATA_DIRECTORY",
239
+ "Blotter",
240
+ "DefaultBlotter",
241
+ "SimulationBlotter",
242
+ "Transaction",
243
+ "SlippageModel",
244
+ "NoSlippage",
245
+ "PercentageSlippage",
246
+ "FixedSlippage",
247
+ "VolumeImpactSlippage",
248
+ "CommissionModel",
249
+ "NoCommission",
250
+ "PercentageCommission",
251
+ "FixedCommission",
252
+ "FillModel",
253
+ "FullFill",
254
+ "VolumeBasedFill",
255
+ "FXRateProvider",
256
+ "StaticFXRateProvider",
225
257
  ]
@@ -24,7 +24,7 @@ from investing_algorithm_framework.domain import DATABASE_NAME, TimeUnit, \
24
24
  LAST_SNAPSHOT_DATETIME, BACKTESTING_FLAG, DATA_DIRECTORY
25
25
  from investing_algorithm_framework.infrastructure import setup_sqlalchemy, \
26
26
  create_all_tables, CCXTOrderExecutor, CCXTPortfolioProvider, \
27
- BacktestOrderExecutor, CCXTOHLCVDataProvider, clear_db, \
27
+ CCXTOHLCVDataProvider, clear_db, \
28
28
  PandasOHLCVDataProvider
29
29
  from investing_algorithm_framework.services import OrderBacktestService, \
30
30
  BacktestPortfolioService, DefaultTradeOrderEvaluator
@@ -71,10 +71,22 @@ class App:
71
71
  self._state_handler = state_handler
72
72
  self._run_history = None
73
73
  self._name = name
74
+ self._blotter = None
75
+ self._fx_rate_provider = None
76
+ self._base_currency = None
74
77
 
75
78
  @property
76
79
  def context(self):
77
- return self.container.context()
80
+ from investing_algorithm_framework.domain.blotter import \
81
+ DefaultBlotter
82
+
83
+ ctx = self.container.context()
84
+ ctx._blotter = self._blotter \
85
+ if self._blotter is not None else DefaultBlotter()
86
+ ctx._fx_rate_provider = self._fx_rate_provider
87
+ ctx._base_currency = self._base_currency
88
+
89
+ return ctx
78
90
 
79
91
  @property
80
92
  def resource_directory_path(self):
@@ -651,7 +663,9 @@ class App:
651
663
  .trade_stop_loss_service(),
652
664
  trade_take_profit_service=self.container
653
665
  .trade_take_profit_service(),
654
- configuration_service=self.container.configuration_service()
666
+ configuration_service=self.container.configuration_service(),
667
+ blotter=self._blotter,
668
+ context=self.context
655
669
  )
656
670
  event_loop_service = EventLoopService(
657
671
  configuration_service=self.container.configuration_service(),
@@ -1499,6 +1513,7 @@ class App:
1499
1513
  checkpoint_batch_size=checkpoint_batch_size,
1500
1514
  fill_missing_data=fill_missing_data,
1501
1515
  iterative_summary_update=iterative_summary_update,
1516
+ blotter=self._blotter,
1502
1517
  )
1503
1518
 
1504
1519
  # Cleanup resources
@@ -1737,6 +1752,7 @@ class App:
1737
1752
  trading_symbol=trading_symbol,
1738
1753
  fill_missing_data=fill_missing_data,
1739
1754
  skip_data_sources_initialization=True,
1755
+ blotter=self._blotter,
1740
1756
  )
1741
1757
 
1742
1758
  # Store run history
@@ -2207,6 +2223,98 @@ class App:
2207
2223
  )
2208
2224
  self.add_market_credential(market_credential)
2209
2225
 
2226
+ def set_blotter(self, blotter):
2227
+ """
2228
+ Set a blotter for order book management. The blotter sits
2229
+ between the strategy and the order execution layer, enabling
2230
+ batch ordering, transaction tracking, and custom order routing.
2231
+
2232
+ Args:
2233
+ blotter: Instance of Blotter
2234
+
2235
+ Returns:
2236
+ None
2237
+ """
2238
+ from investing_algorithm_framework.domain.blotter import Blotter
2239
+
2240
+ if inspect.isclass(blotter):
2241
+ blotter = blotter()
2242
+
2243
+ if not isinstance(blotter, Blotter):
2244
+ raise OperationalException(
2245
+ "Blotter should be an instance of Blotter"
2246
+ )
2247
+
2248
+ self._blotter = blotter
2249
+
2250
+ def get_blotter(self):
2251
+ """
2252
+ Get the configured blotter.
2253
+
2254
+ Returns:
2255
+ Blotter or None: The configured blotter instance.
2256
+ """
2257
+ return self._blotter
2258
+
2259
+ def set_base_currency(self, currency: str) -> None:
2260
+ """
2261
+ Set the base currency for multi-currency portfolio reporting.
2262
+
2263
+ When a base currency is set and an FX rate provider is registered,
2264
+ the framework will automatically convert position values from
2265
+ their local currency to the base currency when computing
2266
+ portfolio totals.
2267
+
2268
+ Args:
2269
+ currency: Currency code (e.g. "EUR", "USD", "GBP").
2270
+
2271
+ Returns:
2272
+ None
2273
+ """
2274
+ self._base_currency = currency.upper()
2275
+
2276
+ def get_base_currency(self) -> str:
2277
+ """
2278
+ Get the configured base currency.
2279
+
2280
+ Returns:
2281
+ str or None: The base currency code, or None if not set.
2282
+ """
2283
+ return self._base_currency
2284
+
2285
+ def add_fx_rate_provider(self, fx_rate_provider) -> None:
2286
+ """
2287
+ Register an FX rate provider for multi-currency portfolio
2288
+ support. The provider supplies exchange rates between
2289
+ currency pairs.
2290
+
2291
+ Args:
2292
+ fx_rate_provider: Instance of FXRateProvider.
2293
+
2294
+ Returns:
2295
+ None
2296
+ """
2297
+ from investing_algorithm_framework.domain.fx import FXRateProvider
2298
+
2299
+ if inspect.isclass(fx_rate_provider):
2300
+ fx_rate_provider = fx_rate_provider()
2301
+
2302
+ if not isinstance(fx_rate_provider, FXRateProvider):
2303
+ raise OperationalException(
2304
+ "FX rate provider should be an instance of FXRateProvider"
2305
+ )
2306
+
2307
+ self._fx_rate_provider = fx_rate_provider
2308
+
2309
+ def get_fx_rate_provider(self):
2310
+ """
2311
+ Get the configured FX rate provider.
2312
+
2313
+ Returns:
2314
+ FXRateProvider or None: The FX rate provider instance.
2315
+ """
2316
+ return self._fx_rate_provider
2317
+
2210
2318
  def add_order_executor(self, order_executor):
2211
2319
  """
2212
2320
  Function to add an order executor to the app. The order executor
@@ -2284,24 +2392,30 @@ class App:
2284
2392
  """
2285
2393
  Function to initialize the order executors. This function will
2286
2394
  first check if the app is running in backtest mode or not. If it is
2287
- running in backtest mode, all order executors will be removed and
2288
- a single BacktestOrderExecutor will be added to the order executors.
2395
+ running in backtest mode, all order executors will be removed
2396
+ (OrderBacktestService handles execution directly) and the
2397
+ SimulationBlotter will be set as the default blotter if no custom
2398
+ blotter has been configured.
2289
2399
 
2290
2400
  If it is not running in backtest mode, it will add the default
2291
2401
  CCXTOrderExecutor with a priority 3.
2292
2402
  """
2403
+ from investing_algorithm_framework.domain.blotter import \
2404
+ SimulationBlotter
2405
+
2293
2406
  logger.info("Adding order executors")
2294
2407
  order_executor_lookup = self.container.order_executor_lookup()
2295
2408
  environment = self.config[ENVIRONMENT]
2296
2409
 
2297
2410
  if Environment.BACKTEST.equals(environment):
2298
- # If the app is running in backtest mode,
2299
- # remove all order executors
2300
- # and add a single BacktestOrderExecutor
2411
+ # In backtest mode, OrderBacktestService handles execution
2412
+ # directly no order executor needed
2301
2413
  order_executor_lookup.reset()
2302
- order_executor_lookup.add_order_executor(
2303
- BacktestOrderExecutor(priority=1)
2304
- )
2414
+
2415
+ # Auto-set SimulationBlotter for backtesting if no
2416
+ # custom blotter has been configured
2417
+ if self._blotter is None:
2418
+ self._blotter = SimulationBlotter()
2305
2419
  else:
2306
2420
  order_executor_lookup.add_order_executor(
2307
2421
  CCXTOrderExecutor(priority=3)
@@ -2498,9 +2612,7 @@ class App:
2498
2612
  environment = self.config[ENVIRONMENT]
2499
2613
 
2500
2614
  if Environment.BACKTEST.equals(environment):
2501
- # If the app is running in backtest mode,
2502
- # remove all order executors
2503
- # and add a single BacktestOrderExecutor
2615
+ # In backtest mode, remove all portfolio providers
2504
2616
  portfolio_provider_lookup.reset()
2505
2617
  else:
2506
2618
  portfolio_provider_lookup.add_portfolio_provider(