investing-algorithm-framework 7.22.3__tar.gz → 7.22.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/PKG-INFO +1 -1
  2. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/context.py +4 -5
  3. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/strategy.py +7 -2
  4. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/backtesting/backtest_metrics.py +11 -0
  5. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/backtesting/backtest_run.py +77 -21
  6. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/backtesting/backtest_utils.py +39 -9
  7. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/trade/trade.py +6 -5
  8. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/pyproject.toml +1 -1
  9. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/LICENSE +0 -0
  10. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/README.md +0 -0
  11. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/__init__.py +0 -0
  12. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/__init__.py +0 -0
  13. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/algorithm/__init__.py +0 -0
  14. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/algorithm/algorithm.py +0 -0
  15. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/algorithm/algorithm_factory.py +0 -0
  16. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/analysis/__init__.py +0 -0
  17. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/analysis/backtest_data_ranges.py +0 -0
  18. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/analysis/permutation.py +0 -0
  19. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/analysis/ranking.py +0 -0
  20. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/analysis/strategy_id.py +0 -0
  21. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/app.py +0 -0
  22. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/app_hook.py +0 -0
  23. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/eventloop.py +0 -0
  24. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/__init__.py +0 -0
  25. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/ascii.py +0 -0
  26. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/backtest_report.py +0 -0
  27. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/charts/__init__.py +0 -0
  28. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/charts/entry_exist_signals.py +0 -0
  29. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/charts/equity_curve.py +0 -0
  30. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/charts/equity_curve_drawdown.py +0 -0
  31. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/charts/line_chart.py +0 -0
  32. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/charts/monthly_returns_heatmap.py +0 -0
  33. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/charts/ohlcv_data_completeness.py +0 -0
  34. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/charts/rolling_sharp_ratio.py +0 -0
  35. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/charts/yearly_returns_barchart.py +0 -0
  36. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/generate.py +0 -0
  37. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/tables/__init__.py +0 -0
  38. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/tables/key_metrics_table.py +0 -0
  39. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/tables/stop_loss_table.py +0 -0
  40. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/tables/time_metrics_table.py +0 -0
  41. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/tables/trade_metrics_table.py +0 -0
  42. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/tables/trades_table.py +0 -0
  43. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/tables/utils.py +0 -0
  44. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/reporting/templates/report_template.html.j2 +0 -0
  45. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/stateless/__init__.py +0 -0
  46. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/stateless/action_handlers/__init__.py +0 -0
  47. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/stateless/action_handlers/action_handler_strategy.py +0 -0
  48. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/stateless/action_handlers/check_online_handler.py +0 -0
  49. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/stateless/action_handlers/run_strategy_handler.py +0 -0
  50. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/stateless/exception_handler.py +0 -0
  51. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/task.py +0 -0
  52. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/web/__init__.py +0 -0
  53. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/web/controllers/__init__.py +0 -0
  54. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/web/controllers/orders.py +0 -0
  55. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/web/controllers/portfolio.py +0 -0
  56. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/web/controllers/positions.py +0 -0
  57. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/web/create_app.py +0 -0
  58. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/web/error_handler.py +0 -0
  59. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/web/responses.py +0 -0
  60. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/web/run_strategies.py +0 -0
  61. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/web/schemas/__init__.py +0 -0
  62. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/web/schemas/order.py +0 -0
  63. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/web/schemas/portfolio.py +0 -0
  64. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/web/schemas/position.py +0 -0
  65. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/app/web/setup_cors.py +0 -0
  66. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/__init__.py +0 -0
  67. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/cli.py +0 -0
  68. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/deploy_to_aws_lambda.py +0 -0
  69. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/deploy_to_azure_function.py +0 -0
  70. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/initialize_app.py +0 -0
  71. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/.gitignore.template +0 -0
  72. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/app.py.template +0 -0
  73. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/app_aws_lambda_function.py.template +0 -0
  74. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/app_azure_function.py.template +0 -0
  75. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/app_web.py.template +0 -0
  76. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/aws_lambda_dockerfile.template +0 -0
  77. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/aws_lambda_dockerignore.template +0 -0
  78. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/aws_lambda_readme.md.template +0 -0
  79. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/aws_lambda_requirements.txt.template +0 -0
  80. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/azure_function_function_app.py.template +0 -0
  81. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/azure_function_host.json.template +0 -0
  82. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/azure_function_local.settings.json.template +0 -0
  83. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/azure_function_requirements.txt.template +0 -0
  84. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/data_providers.py.template +0 -0
  85. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/env.example.template +0 -0
  86. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/env_azure_function.example.template +0 -0
  87. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/market_data_providers.py.template +0 -0
  88. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/readme.md.template +0 -0
  89. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/requirements.txt.template +0 -0
  90. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/run_backtest.py.template +0 -0
  91. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/cli/templates/strategy.py.template +0 -0
  92. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/create_app.py +0 -0
  93. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/dependency_container.py +0 -0
  94. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/__init__.py +0 -0
  95. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/backtesting/__init__.py +0 -0
  96. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/backtesting/backtest.py +0 -0
  97. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/backtesting/backtest_date_range.py +0 -0
  98. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/backtesting/backtest_evaluation_focuss.py +0 -0
  99. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/backtesting/backtest_permutation_test.py +0 -0
  100. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/backtesting/backtest_summary_metrics.py +0 -0
  101. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/backtesting/combine_backtests.py +0 -0
  102. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/config.py +0 -0
  103. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/constants.py +0 -0
  104. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/data_provider.py +0 -0
  105. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/data_structures.py +0 -0
  106. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/decimal_parsing.py +0 -0
  107. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/exceptions.py +0 -0
  108. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/__init__.py +0 -0
  109. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/app_mode.py +0 -0
  110. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/base_model.py +0 -0
  111. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/data/__init__.py +0 -0
  112. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/data/data_source.py +0 -0
  113. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/data/data_type.py +0 -0
  114. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/event.py +0 -0
  115. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/market/__init__.py +0 -0
  116. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/market/market_credential.py +0 -0
  117. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/order/__init__.py +0 -0
  118. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/order/order.py +0 -0
  119. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/order/order_side.py +0 -0
  120. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/order/order_status.py +0 -0
  121. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/order/order_type.py +0 -0
  122. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/portfolio/__init__.py +0 -0
  123. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/portfolio/portfolio.py +0 -0
  124. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/portfolio/portfolio_configuration.py +0 -0
  125. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/portfolio/portfolio_snapshot.py +0 -0
  126. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/position/__init__.py +0 -0
  127. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/position/position.py +0 -0
  128. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/position/position_size.py +0 -0
  129. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/position/position_snapshot.py +0 -0
  130. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/risk_rules/__init__.py +0 -0
  131. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/risk_rules/stop_loss_rule.py +0 -0
  132. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/risk_rules/take_profit_rule.py +0 -0
  133. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/snapshot_interval.py +0 -0
  134. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/strategy_profile.py +0 -0
  135. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/time_frame.py +0 -0
  136. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/time_interval.py +0 -0
  137. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/time_unit.py +0 -0
  138. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/tracing/__init__.py +0 -0
  139. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/tracing/trace.py +0 -0
  140. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/trade/__init__.py +0 -0
  141. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/trade/trade_status.py +0 -0
  142. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/trade/trade_stop_loss.py +0 -0
  143. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/models/trade/trade_take_profit.py +0 -0
  144. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/order_executor.py +0 -0
  145. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/portfolio_provider.py +0 -0
  146. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/services/__init__.py +0 -0
  147. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/services/market_credential_service.py +0 -0
  148. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/services/portfolios/__init__.py +0 -0
  149. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/services/portfolios/portfolio_sync_service.py +0 -0
  150. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/services/rounding_service.py +0 -0
  151. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/services/state_handler.py +0 -0
  152. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/stateless_actions.py +0 -0
  153. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/strategy.py +0 -0
  154. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/utils/__init__.py +0 -0
  155. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/utils/csv.py +0 -0
  156. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/utils/custom_tqdm.py +0 -0
  157. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/utils/dates.py +0 -0
  158. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/utils/jupyter_notebook_detection.py +0 -0
  159. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/utils/polars.py +0 -0
  160. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/utils/random.py +0 -0
  161. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/utils/signatures.py +0 -0
  162. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/utils/stoppable_thread.py +0 -0
  163. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/domain/utils/synchronized.py +0 -0
  164. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/download_data.py +0 -0
  165. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/__init__.py +0 -0
  166. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/data_providers/__init__.py +0 -0
  167. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/data_providers/ccxt.py +0 -0
  168. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/data_providers/csv.py +0 -0
  169. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/data_providers/pandas.py +0 -0
  170. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/database/__init__.py +0 -0
  171. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/database/sql_alchemy.py +0 -0
  172. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/__init__.py +0 -0
  173. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/decimal_parser.py +0 -0
  174. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/model_extension.py +0 -0
  175. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/order/__init__.py +0 -0
  176. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/order/order.py +0 -0
  177. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/order/order_metadata.py +0 -0
  178. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/order_trade_association.py +0 -0
  179. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/portfolio/__init__.py +0 -0
  180. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/portfolio/portfolio_snapshot.py +0 -0
  181. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/portfolio/sql_portfolio.py +0 -0
  182. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/position/__init__.py +0 -0
  183. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/position/position.py +0 -0
  184. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/position/position_snapshot.py +0 -0
  185. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/trades/__init__.py +0 -0
  186. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/trades/trade.py +0 -0
  187. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/trades/trade_stop_loss.py +0 -0
  188. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/models/trades/trade_take_profit.py +0 -0
  189. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/order_executors/__init__.py +0 -0
  190. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/order_executors/backtest_oder_executor.py +0 -0
  191. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/order_executors/ccxt_order_executor.py +0 -0
  192. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/portfolio_providers/__init__.py +0 -0
  193. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/portfolio_providers/ccxt_portfolio_provider.py +0 -0
  194. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/repositories/__init__.py +0 -0
  195. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/repositories/order_metadata_repository.py +0 -0
  196. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/repositories/order_repository.py +0 -0
  197. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/repositories/portfolio_repository.py +0 -0
  198. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/repositories/portfolio_snapshot_repository.py +0 -0
  199. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/repositories/position_repository.py +0 -0
  200. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/repositories/position_snapshot_repository.py +0 -0
  201. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/repositories/repository.py +0 -0
  202. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/repositories/trade_repository.py +0 -0
  203. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/repositories/trade_stop_loss_repository.py +0 -0
  204. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/repositories/trade_take_profit_repository.py +0 -0
  205. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/services/__init__.py +0 -0
  206. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/services/aws/__init__.py +0 -0
  207. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/services/aws/state_handler.py +0 -0
  208. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/services/azure/__init__.py +0 -0
  209. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/services/azure/state_handler.py +0 -0
  210. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/services/backtesting/__init__.py +0 -0
  211. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/infrastructure/services/backtesting/backtest_service.py +0 -0
  212. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/__init__.py +0 -0
  213. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/configuration_service.py +0 -0
  214. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/data_providers/__init__.py +0 -0
  215. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/data_providers/data_provider_service.py +0 -0
  216. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/market_credential_service.py +0 -0
  217. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/__init__.py +0 -0
  218. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/alpha.py +0 -0
  219. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/beta.py +0 -0
  220. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/cagr.py +0 -0
  221. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/calmar_ratio.py +0 -0
  222. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/drawdown.py +0 -0
  223. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/equity_curve.py +0 -0
  224. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/exposure.py +0 -0
  225. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/generate.py +0 -0
  226. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/mean_daily_return.py +0 -0
  227. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/price_efficiency.py +0 -0
  228. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/profit_factor.py +0 -0
  229. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/recovery.py +0 -0
  230. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/returns.py +0 -0
  231. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/risk_free_rate.py +0 -0
  232. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/sharpe_ratio.py +0 -0
  233. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/sortino_ratio.py +0 -0
  234. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/standard_deviation.py +0 -0
  235. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/trades.py +0 -0
  236. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/treynor_ratio.py +0 -0
  237. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/ulcer.py +0 -0
  238. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/value_at_risk.py +0 -0
  239. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/volatility.py +0 -0
  240. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/metrics/win_rate.py +0 -0
  241. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/order_service/__init__.py +0 -0
  242. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/order_service/order_backtest_service.py +0 -0
  243. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/order_service/order_executor_lookup.py +0 -0
  244. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/order_service/order_service.py +0 -0
  245. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/portfolios/__init__.py +0 -0
  246. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/portfolios/backtest_portfolio_service.py +0 -0
  247. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/portfolios/portfolio_configuration_service.py +0 -0
  248. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/portfolios/portfolio_provider_lookup.py +0 -0
  249. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/portfolios/portfolio_service.py +0 -0
  250. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/portfolios/portfolio_snapshot_service.py +0 -0
  251. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/portfolios/portfolio_sync_service.py +0 -0
  252. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/positions/__init__.py +0 -0
  253. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/positions/position_service.py +0 -0
  254. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/positions/position_snapshot_service.py +0 -0
  255. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/repository_service.py +0 -0
  256. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/trade_order_evaluator/__init__.py +0 -0
  257. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/trade_order_evaluator/backtest_trade_oder_evaluator.py +0 -0
  258. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/trade_order_evaluator/default_trade_order_evaluator.py +0 -0
  259. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/trade_order_evaluator/trade_order_evaluator.py +0 -0
  260. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/trade_service/__init__.py +0 -0
  261. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/trade_service/trade_service.py +0 -0
  262. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/trade_service/trade_stop_loss_service.py +0 -0
  263. {investing_algorithm_framework-7.22.3 → investing_algorithm_framework-7.22.4}/investing_algorithm_framework/services/trade_service/trade_take_profit_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: investing-algorithm-framework
3
- Version: 7.22.3
3
+ Version: 7.22.4
4
4
  Summary: A framework for creating trading bots
5
5
  Author: MDUYN
6
6
  Requires-Python: >=3.10
@@ -1196,11 +1196,10 @@ class Context:
1196
1196
  portfolio=None,
1197
1197
  status=None,
1198
1198
  order_id=None
1199
- ) -> List[Trade]:
1199
+ ) -> Trade:
1200
1200
  """
1201
- Function to get all trades. This function will return all trades
1202
- that match the specified query parameters. If the market parameter
1203
- is specified, the trades with the specified market will be returned.
1201
+ Function to retrieve a trade. This function will return the first
1202
+ trade that matches the specified query parameters.
1204
1203
 
1205
1204
  Args:
1206
1205
  market: The market of the asset
@@ -1211,7 +1210,7 @@ class Context:
1211
1210
  trading_symbol: The trading symbol of the asset
1212
1211
 
1213
1212
  Returns:
1214
- List[Trade]: A list of trades that match the query parameters
1213
+ Trade: A instance of a trade that matches the query parameters
1215
1214
  """
1216
1215
  query_params = {}
1217
1216
 
@@ -16,7 +16,12 @@ class TradingStrategy:
16
16
  strategy is a set of rules that defines when to buy or sell an asset.
17
17
 
18
18
  Attributes:
19
- id (string): the unique id for your combined strategy instances
19
+ algorithm_id (string): the unique id for your
20
+ combined strategy instances. An algorithm consists out of one or
21
+ more strategy instances that run together. The algorithm_id
22
+ is used to uniquely indentify the combined strategy instances.
23
+ This is id is used in various places in the framework, e.g. for
24
+ backtesting results, logging, monitoring etc.
20
25
  time_unit (TimeUnit): the time unit of the strategy that defines
21
26
  when the strategy should run e.g. HOUR, DAY, WEEK, MONTH
22
27
  interval (int): the interval of the strategy that defines how often
@@ -34,7 +39,7 @@ class TradingStrategy:
34
39
  store additional information about the strategy, such as its
35
40
  author, version, description, params etc.
36
41
  """
37
- id: str
42
+ algorithm_id: str
38
43
  time_unit: TimeUnit = None
39
44
  interval: int = None
40
45
  worker_id: str = None
@@ -21,8 +21,13 @@ class BacktestMetrics:
21
21
  and maximum drawdown.
22
22
 
23
23
  Attributes:
24
+ backtest_date_range_name (str): The name of the date range
25
+ used for the backtest.
24
26
  backtest_start_date (datetime): The start date of the backtest.
25
27
  backtest_end_date (datetime): The end date of the backtest.
28
+ trading_symbol (str): The trading symbol used in the backtest.
29
+ initial_unallocated (float): The initial unallocated cash
30
+ at the start of the backtest.
26
31
  final_value (float): The final value of the portfolio at the end
27
32
  of the backtest.
28
33
  equity_curve (List[Tuple[datetime, float]]): A list of
@@ -137,6 +142,9 @@ class BacktestMetrics:
137
142
  """
138
143
  backtest_start_date: datetime
139
144
  backtest_end_date: datetime
145
+ backtest_date_range_name: str = ""
146
+ trading_symbol: str = ""
147
+ initial_unallocated: float = 0.0
140
148
  equity_curve: List[Tuple[float, datetime]] = field(default_factory=list)
141
149
  total_growth: float = 0.0
142
150
  total_growth_percentage: float = 0.0
@@ -233,6 +241,9 @@ class BacktestMetrics:
233
241
  return {
234
242
  "backtest_start_date": ensure_iso(self.backtest_start_date),
235
243
  "backtest_end_date": ensure_iso(self.backtest_end_date),
244
+ "backtest_date_range_name": self.backtest_date_range_name,
245
+ "trading_symbol": self.trading_symbol,
246
+ "initial_unallocated": self.initial_unallocated,
236
247
  "equity_curve": [(value, ensure_iso(date))
237
248
  for value, date in self.equity_curve],
238
249
  "final_value": self.final_value,
@@ -169,6 +169,23 @@ class BacktestRun:
169
169
  f"The run file {run_file} does not exist."
170
170
  )
171
171
 
172
+ # Validate and set defaults for required fields
173
+ required_fields = {
174
+ "backtest_start_date": "2020-01-01 00:00:00",
175
+ "backtest_end_date": "2020-01-02 00:00:00",
176
+ "created_at": "2020-01-01 00:00:00",
177
+ "trading_symbol": "USD",
178
+ "initial_unallocated": 1000.0,
179
+ "number_of_runs": 1
180
+ }
181
+
182
+ for field_name, default_value in required_fields.items():
183
+ if field_name not in data:
184
+ logger.warning(f"Missing required field '{field_name}' in "
185
+ f"backtest data, using "
186
+ f"default: {default_value}")
187
+ data[field_name] = default_value
188
+
172
189
  # Parse datetime fields
173
190
  data["backtest_start_date"] = datetime.strptime(
174
191
  data["backtest_start_date"], "%Y-%m-%d %H:%M:%S"
@@ -186,27 +203,66 @@ class BacktestRun:
186
203
  "backtest_end_date"].replace(tzinfo=timezone.utc)
187
204
  data["created_at"] = data["created_at"].replace(tzinfo=timezone.utc)
188
205
 
189
- # Parse orders
190
- data["orders"] = [
191
- Order.from_dict(order) for order in data.get("orders", [])
192
- ]
193
-
194
- # Parse positions
195
- data["positions"] = [
196
- Position.from_dict(position)
197
- for position in data.get("positions", [])
198
- ]
199
-
200
- # Parse trades
201
- data["trades"] = [
202
- Trade.from_dict(trade) for trade in data.get("trades", [])
203
- ]
204
-
205
- # Parse portfolio snapshots
206
- data["portfolio_snapshots"] = [
207
- PortfolioSnapshot.from_dict(ps)
208
- for ps in data.get("portfolio_snapshots", [])
209
- ]
206
+ # Parse orders with error handling
207
+ orders = []
208
+ for order_data in data.get("orders", []):
209
+ try:
210
+ order = Order.from_dict(order_data)
211
+ orders.append(order)
212
+ except KeyError as e:
213
+ logger.error(f"Failed to parse order "
214
+ f"data, missing field {e}: {order_data}")
215
+ continue
216
+ except Exception as e:
217
+ logger.error(f"Failed to parse order data: {e}")
218
+ continue
219
+ data["orders"] = orders
220
+
221
+ # Parse positions with error handling
222
+ positions = []
223
+ for position_data in data.get("positions", []):
224
+ try:
225
+ position = Position.from_dict(position_data)
226
+ positions.append(position)
227
+ except KeyError as e:
228
+ logger.error(f"Failed to parse position data, "
229
+ f"missing field {e}: {position_data}")
230
+ continue
231
+ except Exception as e:
232
+ logger.error(f"Failed to parse position data: {e}")
233
+ continue
234
+ data["positions"] = positions
235
+
236
+ # Parse trades with error handling
237
+ trades = []
238
+ for trade_data in data.get("trades", []):
239
+ try:
240
+ trade = Trade.from_dict(trade_data)
241
+ trades.append(trade)
242
+ except KeyError as e:
243
+ logger.error(f"Failed to parse trade data, "
244
+ f"missing field {e}: {trade_data}")
245
+ # Skip this trade and continue with the next one
246
+ continue
247
+ except Exception as e:
248
+ logger.error(f"Failed to parse trade data: {e}")
249
+ continue
250
+ data["trades"] = trades
251
+
252
+ # Parse portfolio snapshots with error handling
253
+ portfolio_snapshots = []
254
+ for ps_data in data.get("portfolio_snapshots", []):
255
+ try:
256
+ ps = PortfolioSnapshot.from_dict(ps_data)
257
+ portfolio_snapshots.append(ps)
258
+ except KeyError as e:
259
+ logger.error(f"Failed to parse portfolio snapshot data, "
260
+ f"missing field {e}: {ps_data}")
261
+ continue
262
+ except Exception as e:
263
+ logger.error(f"Failed to parse portfolio snapshot data: {e}")
264
+ continue
265
+ data["portfolio_snapshots"] = portfolio_snapshots
210
266
 
211
267
  return BacktestRun(
212
268
  backtest_metrics=backtest_metrics,
@@ -1,13 +1,12 @@
1
1
  import os
2
- from pathlib import Path
3
- from typing import List, Union, Callable
4
2
  from logging import getLogger
3
+ from pathlib import Path
5
4
  from random import Random
5
+ from typing import List, Union, Callable
6
6
 
7
- from .backtest import Backtest
8
7
  from investing_algorithm_framework.domain.exceptions import \
9
8
  OperationalException
10
-
9
+ from .backtest import Backtest
11
10
 
12
11
  logger = getLogger("investing_algorithm_framework")
13
12
 
@@ -29,7 +28,7 @@ def save_backtests_to_directory(
29
28
  dir_name_generation_function (Callable[[Backtest], str], optional):
30
29
  A function that takes a Backtest object as input and returns
31
30
  a string to be used as the directory name for that backtest.
32
- If not provided, the backtest's metadata 'id' will be used.
31
+ If not provided, the backtest's algorithm_id will be used.
33
32
  Defaults to None.
34
33
  number_of_backtests_to_save (int, optional): Maximum number of
35
34
  backtests to save. If None, all backtests will be saved.
@@ -74,7 +73,7 @@ def save_backtests_to_directory(
74
73
 
75
74
  if dir_name is None:
76
75
  logger.warning(
77
- "Backtest metadata does not contain an 'id' field. "
76
+ "Backtest algorithm_id is None. "
78
77
  "Generating a random directory name."
79
78
  )
80
79
  dir_name = str(Random().randint(100000, 999999))
@@ -123,16 +122,47 @@ def load_backtests_from_directory(
123
122
  file_path = os.path.join(directory_path, file_name)
124
123
 
125
124
  try:
126
- backtest = Backtest.open(file_path)
125
+
126
+ # Add step-by-step debugging
127
+ try:
128
+ backtest = Backtest.open(file_path)
129
+ except KeyError as ke:
130
+ logger.error(
131
+ f"KeyError during Backtest.open for {file_path}: {ke}"
132
+ )
133
+ import traceback
134
+ logger.error(
135
+ f"Backtest.open KeyError "
136
+ f"traceback: {traceback.format_exc()}"
137
+ )
138
+ continue # Skip this backtest and continue with the next one
139
+ except Exception as be:
140
+ logger.error(
141
+ f"Other error during Backtest.open for {file_path}: {be}"
142
+ )
143
+ import traceback
144
+ logger.error(
145
+ f"Backtest.open error traceback: {traceback.format_exc()}"
146
+ )
147
+ continue # Skip this backtest and continue with the next one
127
148
 
128
149
  if filter_function is not None:
129
- if not filter_function(backtest):
150
+ try:
151
+ if not filter_function(backtest):
152
+ continue
153
+ except Exception as fe:
154
+ logger.error(
155
+ f"Error in filter_function for {file_path}: {fe}"
156
+ )
130
157
  continue
131
158
 
132
159
  backtests.append(backtest)
160
+
133
161
  except Exception as e:
134
162
  logger.error(
135
- f"Failed to load backtest from {file_path}: {e}"
163
+ f"Unexpected top-level error loading "
164
+ f"backtest from {file_path}: {e}"
136
165
  )
166
+ import traceback
137
167
 
138
168
  return backtests
@@ -341,13 +341,14 @@ class Trade(BaseModel):
341
341
  Order.from_dict(order)
342
342
  for order in data["orders"]
343
343
  ]
344
+
344
345
  return Trade(
345
346
  id=data.get("id", None),
346
347
  orders=orders,
347
- target_symbol=data["target_symbol"],
348
- trading_symbol=data["trading_symbol"],
349
- amount=data["amount"],
350
- open_price=data["open_price"],
348
+ target_symbol=data.get("target_symbol", ""),
349
+ trading_symbol=data.get("trading_symbol", ""),
350
+ amount=data.get("amount", 0),
351
+ open_price=data.get("open_price", 0),
351
352
  opened_at=opened_at,
352
353
  closed_at=closed_at,
353
354
  filled_amount=data.get("filled_amount", 0),
@@ -355,7 +356,7 @@ class Trade(BaseModel):
355
356
  remaining=data.get("remaining", 0),
356
357
  net_gain=data.get("net_gain", 0),
357
358
  last_reported_price=data.get("last_reported_price"),
358
- status=TradeStatus.from_value(data["status"]).value,
359
+ status=TradeStatus.from_value(data.get("status", "OPEN")).value,
359
360
  cost=data.get("cost", 0),
360
361
  updated_at=updated_at,
361
362
  stop_losses=stop_losses,
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "investing-algorithm-framework"
3
- version = "v7.22.03"
3
+ version = "v7.22.04"
4
4
  description = "A framework for creating trading bots"
5
5
  authors = ["MDUYN"]
6
6
  readme = "README.md"