investing-algorithm-framework 7.12.0__tar.gz → 7.13.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 (259) hide show
  1. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/PKG-INFO +1 -1
  2. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/__init__.py +13 -12
  3. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/analysis/ranking.py +24 -7
  4. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/tables/trade_metrics_table.py +2 -2
  5. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/backtesting/backtest_metrics.py +60 -38
  6. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/backtesting/backtest_run.py +7 -7
  7. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/backtesting/backtest_summary_metrics.py +129 -40
  8. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/order/order.py +5 -1
  9. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/__init__.py +17 -11
  10. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/__init__.py +20 -12
  11. investing_algorithm_framework-7.13.0/investing_algorithm_framework/services/metrics/generate.py +245 -0
  12. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/recovery.py +2 -2
  13. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/returns.py +54 -202
  14. investing_algorithm_framework-7.13.0/investing_algorithm_framework/services/metrics/trades.py +343 -0
  15. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/pyproject.toml +1 -1
  16. investing_algorithm_framework-7.12.0/investing_algorithm_framework/services/metrics/generate.py +0 -395
  17. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/LICENSE +0 -0
  18. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/README.md +0 -0
  19. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/__init__.py +0 -0
  20. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/algorithm/__init__.py +0 -0
  21. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/algorithm/algorithm.py +0 -0
  22. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/algorithm/algorithm_factory.py +0 -0
  23. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/analysis/__init__.py +0 -0
  24. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/analysis/backtest_data_ranges.py +0 -0
  25. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/analysis/permutation.py +0 -0
  26. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/app.py +0 -0
  27. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/app_hook.py +0 -0
  28. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/context.py +0 -0
  29. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/eventloop.py +0 -0
  30. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/__init__.py +0 -0
  31. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/ascii.py +0 -0
  32. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/backtest_report.py +0 -0
  33. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/charts/__init__.py +0 -0
  34. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/charts/entry_exist_signals.py +0 -0
  35. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/charts/equity_curve_drawdown.py +0 -0
  36. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/charts/line_chart.py +0 -0
  37. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/charts/monthly_returns_heatmap.py +0 -0
  38. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/charts/ohlcv_data_completeness.py +0 -0
  39. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/charts/rolling_sharp_ratio.py +0 -0
  40. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/charts/yearly_returns_barchart.py +0 -0
  41. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/generate.py +0 -0
  42. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/tables/__init__.py +0 -0
  43. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/tables/key_metrics_table.py +0 -0
  44. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/tables/stop_loss_table.py +0 -0
  45. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/tables/time_metrics_table.py +0 -0
  46. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/tables/trades_table.py +0 -0
  47. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/tables/utils.py +0 -0
  48. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/reporting/templates/report_template.html.j2 +0 -0
  49. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/stateless/__init__.py +0 -0
  50. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/stateless/action_handlers/__init__.py +0 -0
  51. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/stateless/action_handlers/action_handler_strategy.py +0 -0
  52. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/stateless/action_handlers/check_online_handler.py +0 -0
  53. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/stateless/action_handlers/run_strategy_handler.py +0 -0
  54. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/stateless/exception_handler.py +0 -0
  55. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/strategy.py +0 -0
  56. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/task.py +0 -0
  57. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/web/__init__.py +0 -0
  58. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/web/controllers/__init__.py +0 -0
  59. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/web/controllers/orders.py +0 -0
  60. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/web/controllers/portfolio.py +0 -0
  61. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/web/controllers/positions.py +0 -0
  62. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/web/create_app.py +0 -0
  63. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/web/error_handler.py +0 -0
  64. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/web/responses.py +0 -0
  65. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/web/run_strategies.py +0 -0
  66. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/web/schemas/__init__.py +0 -0
  67. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/web/schemas/order.py +0 -0
  68. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/web/schemas/portfolio.py +0 -0
  69. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/web/schemas/position.py +0 -0
  70. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/app/web/setup_cors.py +0 -0
  71. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/__init__.py +0 -0
  72. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/cli.py +0 -0
  73. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/deploy_to_aws_lambda.py +0 -0
  74. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/deploy_to_azure_function.py +0 -0
  75. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/initialize_app.py +0 -0
  76. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/.gitignore.template +0 -0
  77. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/app.py.template +0 -0
  78. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/app_aws_lambda_function.py.template +0 -0
  79. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/app_azure_function.py.template +0 -0
  80. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/app_web.py.template +0 -0
  81. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/aws_lambda_dockerfile.template +0 -0
  82. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/aws_lambda_dockerignore.template +0 -0
  83. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/aws_lambda_readme.md.template +0 -0
  84. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/aws_lambda_requirements.txt.template +0 -0
  85. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/azure_function_function_app.py.template +0 -0
  86. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/azure_function_host.json.template +0 -0
  87. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/azure_function_local.settings.json.template +0 -0
  88. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/azure_function_requirements.txt.template +0 -0
  89. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/data_providers.py.template +0 -0
  90. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/env.example.template +0 -0
  91. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/env_azure_function.example.template +0 -0
  92. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/market_data_providers.py.template +0 -0
  93. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/readme.md.template +0 -0
  94. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/requirements.txt.template +0 -0
  95. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/run_backtest.py.template +0 -0
  96. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/cli/templates/strategy.py.template +0 -0
  97. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/create_app.py +0 -0
  98. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/dependency_container.py +0 -0
  99. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/__init__.py +0 -0
  100. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/backtesting/BacktestInitializer.py +0 -0
  101. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/backtesting/__init__.py +0 -0
  102. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/backtesting/backtest.py +0 -0
  103. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/backtesting/backtest_date_range.py +0 -0
  104. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/backtesting/backtest_evaluation_focuss.py +0 -0
  105. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/backtesting/backtest_permutation_test.py +0 -0
  106. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/backtesting/combine_backtests.py +0 -0
  107. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/config.py +0 -0
  108. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/constants.py +0 -0
  109. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/data_provider.py +0 -0
  110. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/data_structures.py +0 -0
  111. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/decimal_parsing.py +0 -0
  112. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/exceptions.py +0 -0
  113. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/__init__.py +0 -0
  114. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/app_mode.py +0 -0
  115. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/base_model.py +0 -0
  116. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/data/__init__.py +0 -0
  117. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/data/data_source.py +0 -0
  118. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/data/data_type.py +0 -0
  119. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/event.py +0 -0
  120. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/market/__init__.py +0 -0
  121. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/market/market_credential.py +0 -0
  122. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/order/__init__.py +0 -0
  123. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/order/order_side.py +0 -0
  124. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/order/order_status.py +0 -0
  125. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/order/order_type.py +0 -0
  126. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/portfolio/__init__.py +0 -0
  127. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/portfolio/portfolio.py +0 -0
  128. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/portfolio/portfolio_configuration.py +0 -0
  129. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/portfolio/portfolio_snapshot.py +0 -0
  130. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/position/__init__.py +0 -0
  131. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/position/position.py +0 -0
  132. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/position/position_snapshot.py +0 -0
  133. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/snapshot_interval.py +0 -0
  134. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/strategy_profile.py +0 -0
  135. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/time_frame.py +0 -0
  136. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/time_interval.py +0 -0
  137. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/time_unit.py +0 -0
  138. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/tracing/__init__.py +0 -0
  139. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/tracing/trace.py +0 -0
  140. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/trade/__init__.py +0 -0
  141. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/trade/trade.py +0 -0
  142. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/trade/trade_risk_type.py +0 -0
  143. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/trade/trade_status.py +0 -0
  144. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/trade/trade_stop_loss.py +0 -0
  145. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/models/trade/trade_take_profit.py +0 -0
  146. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/order_executor.py +0 -0
  147. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/portfolio_provider.py +0 -0
  148. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/positions/__init__.py +0 -0
  149. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/positions/position_size.py +0 -0
  150. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/services/__init__.py +0 -0
  151. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/services/market_credential_service.py +0 -0
  152. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/services/portfolios/__init__.py +0 -0
  153. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/services/portfolios/portfolio_sync_service.py +0 -0
  154. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/services/rounding_service.py +0 -0
  155. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/services/state_handler.py +0 -0
  156. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/stateless_actions.py +0 -0
  157. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/strategy.py +0 -0
  158. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/utils/__init__.py +0 -0
  159. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/utils/csv.py +0 -0
  160. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/utils/custom_tqdm.py +0 -0
  161. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/utils/dates.py +0 -0
  162. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/utils/jupyter_notebook_detection.py +0 -0
  163. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/utils/polars.py +0 -0
  164. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/utils/random.py +0 -0
  165. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/utils/signatures.py +0 -0
  166. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/utils/stoppable_thread.py +0 -0
  167. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/domain/utils/synchronized.py +0 -0
  168. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/download_data.py +0 -0
  169. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/__init__.py +0 -0
  170. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/data_providers/__init__.py +0 -0
  171. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/data_providers/ccxt.py +0 -0
  172. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/data_providers/csv.py +0 -0
  173. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/data_providers/pandas.py +0 -0
  174. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/database/__init__.py +0 -0
  175. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/database/sql_alchemy.py +0 -0
  176. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/__init__.py +0 -0
  177. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/decimal_parser.py +0 -0
  178. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/model_extension.py +0 -0
  179. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/order/__init__.py +0 -0
  180. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/order/order.py +0 -0
  181. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/order/order_metadata.py +0 -0
  182. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/order_trade_association.py +0 -0
  183. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/portfolio/__init__.py +0 -0
  184. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/portfolio/portfolio_snapshot.py +0 -0
  185. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/portfolio/sql_portfolio.py +0 -0
  186. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/position/__init__.py +0 -0
  187. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/position/position.py +0 -0
  188. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/position/position_snapshot.py +0 -0
  189. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/trades/__init__.py +0 -0
  190. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/trades/trade.py +0 -0
  191. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/trades/trade_stop_loss.py +0 -0
  192. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/models/trades/trade_take_profit.py +0 -0
  193. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/order_executors/__init__.py +0 -0
  194. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/order_executors/backtest_oder_executor.py +0 -0
  195. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/order_executors/ccxt_order_executor.py +0 -0
  196. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/portfolio_providers/__init__.py +0 -0
  197. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/portfolio_providers/ccxt_portfolio_provider.py +0 -0
  198. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/repositories/__init__.py +0 -0
  199. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/repositories/order_metadata_repository.py +0 -0
  200. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/repositories/order_repository.py +0 -0
  201. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/repositories/portfolio_repository.py +0 -0
  202. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/repositories/portfolio_snapshot_repository.py +0 -0
  203. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/repositories/position_repository.py +0 -0
  204. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/repositories/position_snapshot_repository.py +0 -0
  205. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/repositories/repository.py +0 -0
  206. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/repositories/trade_repository.py +0 -0
  207. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/repositories/trade_stop_loss_repository.py +0 -0
  208. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/repositories/trade_take_profit_repository.py +0 -0
  209. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/services/__init__.py +0 -0
  210. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/services/aws/__init__.py +0 -0
  211. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/services/aws/state_handler.py +0 -0
  212. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/services/azure/__init__.py +0 -0
  213. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/infrastructure/services/azure/state_handler.py +0 -0
  214. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/backtesting/__init__.py +0 -0
  215. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/backtesting/backtest_service.py +0 -0
  216. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/configuration_service.py +0 -0
  217. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/data_providers/__init__.py +0 -0
  218. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/data_providers/data_provider_service.py +0 -0
  219. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/market_credential_service.py +0 -0
  220. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/alpha.py +0 -0
  221. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/beta.py +0 -0
  222. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/cagr.py +0 -0
  223. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/calmar_ratio.py +0 -0
  224. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/drawdown.py +0 -0
  225. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/equity_curve.py +0 -0
  226. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/exposure.py +0 -0
  227. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/mean_daily_return.py +0 -0
  228. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/price_efficiency.py +0 -0
  229. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/profit_factor.py +0 -0
  230. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/risk_free_rate.py +0 -0
  231. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/sharpe_ratio.py +0 -0
  232. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/sortino_ratio.py +0 -0
  233. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/standard_deviation.py +0 -0
  234. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/treynor_ratio.py +0 -0
  235. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/ulcer.py +0 -0
  236. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/value_at_risk.py +0 -0
  237. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/volatility.py +0 -0
  238. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/metrics/win_rate.py +0 -0
  239. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/order_service/__init__.py +0 -0
  240. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/order_service/order_backtest_service.py +0 -0
  241. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/order_service/order_executor_lookup.py +0 -0
  242. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/order_service/order_service.py +0 -0
  243. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/portfolios/__init__.py +0 -0
  244. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/portfolios/backtest_portfolio_service.py +0 -0
  245. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/portfolios/portfolio_configuration_service.py +0 -0
  246. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/portfolios/portfolio_provider_lookup.py +0 -0
  247. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/portfolios/portfolio_service.py +0 -0
  248. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/portfolios/portfolio_snapshot_service.py +0 -0
  249. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/portfolios/portfolio_sync_service.py +0 -0
  250. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/positions/__init__.py +0 -0
  251. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/positions/position_service.py +0 -0
  252. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/positions/position_snapshot_service.py +0 -0
  253. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/repository_service.py +0 -0
  254. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/trade_order_evaluator/__init__.py +0 -0
  255. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/trade_order_evaluator/backtest_trade_oder_evaluator.py +0 -0
  256. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/trade_order_evaluator/default_trade_order_evaluator.py +0 -0
  257. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/trade_order_evaluator/trade_order_evaluator.py +0 -0
  258. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/trade_service/__init__.py +0 -0
  259. {investing_algorithm_framework-7.12.0 → investing_algorithm_framework-7.13.0}/investing_algorithm_framework/services/trade_service/trade_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: investing-algorithm-framework
3
- Version: 7.12.0
3
+ Version: 7.13.0
4
4
  Summary: A framework for creating trading bots
5
5
  Author: MDUYN
6
6
  Requires-Python: >=3.10
@@ -35,14 +35,15 @@ from .services import get_annual_volatility, get_sortino_ratio, \
35
35
  get_calmar_ratio, get_trade_frequency, get_yearly_returns, \
36
36
  get_monthly_returns, get_best_year, get_best_month, get_worst_year, \
37
37
  get_worst_month, get_best_trade, get_worst_trade, \
38
- get_average_yearly_return, get_average_gain, get_average_loss, \
39
- get_average_monthly_return, get_percentage_winning_months, \
40
- get_max_drawdown_duration, get_max_daily_drawdown, get_trades_per_day, \
38
+ get_average_yearly_return, get_average_trade_gain, \
39
+ get_average_trade_loss, get_average_monthly_return, \
40
+ get_percentage_winning_months, get_max_drawdown_duration, \
41
+ get_max_daily_drawdown, get_trades_per_day, \
41
42
  get_trades_per_year, get_average_monthly_return_losing_months, \
42
43
  get_average_monthly_return_winning_months, get_percentage_winning_years, \
43
- get_rolling_sharpe_ratio, create_backtest_metrics, get_growth, \
44
- get_growth_percentage, get_cumulative_exposure, get_median_return, \
45
- get_average_return, get_risk_free_rate_us, get_cumulative_return, \
44
+ get_rolling_sharpe_ratio, create_backtest_metrics, get_total_growth, \
45
+ get_total_loss, get_cumulative_exposure, get_median_trade_return, \
46
+ get_average_trade_return, get_risk_free_rate_us, get_cumulative_return, \
46
47
  get_cumulative_return_series
47
48
 
48
49
 
@@ -135,8 +136,8 @@ __all__ = [
135
136
  "get_best_trade",
136
137
  "get_worst_trade",
137
138
  "get_average_yearly_return",
138
- "get_average_gain",
139
- "get_average_loss",
139
+ "get_average_trade_gain",
140
+ "get_average_trade_loss",
140
141
  "get_average_monthly_return",
141
142
  "get_percentage_winning_months",
142
143
  "get_average_trade_duration",
@@ -163,14 +164,14 @@ __all__ = [
163
164
  "rank_results",
164
165
  "create_weights",
165
166
  "get_entry_and_exit_signals",
166
- "get_growth",
167
- "get_growth_percentage",
168
167
  "BacktestEvaluationFocus",
169
168
  "combine_backtests",
170
169
  "PositionSize",
171
- "get_median_return",
172
- "get_average_return",
170
+ "get_median_trade_return",
171
+ "get_average_trade_return",
173
172
  "get_risk_free_rate_us",
174
173
  "get_cumulative_return",
175
174
  "get_cumulative_return_series",
175
+ "get_total_loss",
176
+ "get_total_growth"
176
177
  ]
@@ -195,9 +195,9 @@ def combine_backtest_metrics(
195
195
  backtest_start_date=start_date,
196
196
  backtest_end_date=end_date,
197
197
  equity_curve=[], # leave empty to avoid misleading curves
198
- growth=safe_mean([m.growth for m in backtest_metrics]),
199
- growth_percentage=safe_mean(
200
- [m.growth_percentage for m in backtest_metrics]),
198
+ total_growth=safe_mean([m.total_growth for m in backtest_metrics]),
199
+ total_growth_percentage=safe_mean(
200
+ [m.total_growth_percentage for m in backtest_metrics]),
201
201
  total_net_gain=safe_mean([m.total_net_gain for m in backtest_metrics]),
202
202
  total_net_gain_percentage=safe_mean(
203
203
  [m.total_net_gain_percentage for m in backtest_metrics]),
@@ -228,10 +228,27 @@ def combine_backtest_metrics(
228
228
  exposure_ratio=safe_mean(
229
229
  [m.exposure_ratio for m in backtest_metrics]
230
230
  ),
231
- trades_average_gain=safe_mean(
232
- [m.trades_average_gain for m in backtest_metrics]),
233
- trades_average_loss=safe_mean(
234
- [m.trades_average_loss for m in backtest_metrics]),
231
+ average_trade_gain=safe_mean(
232
+ [m.average_trade_gain for m in backtest_metrics]),
233
+ average_trade_gain_percentage=(
234
+ safe_mean(
235
+ [m.average_trade_gain_percentage for m in backtest_metrics]
236
+ )
237
+ ),
238
+ average_trade_loss=safe_mean(
239
+ [m.average_trade_loss for m in backtest_metrics]),
240
+ average_trade_loss_percentage=(
241
+ safe_mean(
242
+ [m.average_trade_loss_percentage for m in backtest_metrics]
243
+ )
244
+ ),
245
+ median_trade_return=safe_mean(
246
+ [m.median_trade_return for m in backtest_metrics]),
247
+ median_trade_return_percentage=(
248
+ safe_mean(
249
+ [m.median_trade_return_percentage for m in backtest_metrics]
250
+ )
251
+ ),
235
252
  best_trade=max((
236
253
  m.best_trade for m in backtest_metrics if m.best_trade),
237
254
  key=lambda t: t.net_gain if t else float('-inf'),
@@ -88,8 +88,8 @@ def create_html_trade_metrics_table(results, report):
88
88
  copy_results['Worst Trade'] = f"{worst_trade['net_gain']:.2f} {report.trading_symbol}"
89
89
  copy_results['Worst Trade Date'] = safe_format_date(worst_trade['opened_at'], format_str=DEFAULT_DATETIME_FORMAT)
90
90
 
91
- copy_results['Trades Average Gain'] = f"{safe_format(copy_results['trades_average_gain'], string_format)} {report.trading_symbol} {copy_results['trades_average_gain_percentage']:.2f}%"
92
- copy_results['Trades Average Loss'] = f"{safe_format(copy_results['trades_average_loss'], string_format)} {report.trading_symbol} {copy_results['trades_average_loss_percentage']:.2f}%"
91
+ copy_results['Trades Average Gain'] = f"{safe_format(copy_results['average_trade_gain'], string_format)} {report.trading_symbol} {copy_results['trades_average_gain_percentage']:.2f}%"
92
+ copy_results['Trades Average Loss'] = f"{safe_format(copy_results['average_trade_loss'], string_format)} {report.trading_symbol} {copy_results['trades_average_loss_percentage']:.2f}%"
93
93
  copy_results['Average Trade Duration'] = f"{copy_results['average_trade_duration']:.2f} hours"
94
94
  copy_results['Number of Trades'] = f"{copy_results['number_of_trades']}"
95
95
  copy_results['Win Rate'] = f"{copy_results['win_rate']:.2f}%"
@@ -23,17 +23,19 @@ class BacktestMetrics:
23
23
  Attributes:
24
24
  backtest_start_date (datetime): The start date of the backtest.
25
25
  backtest_end_date (datetime): The end date of the backtest.
26
+ final_value (float): The final value of the portfolio at the end
27
+ of the backtest.
26
28
  equity_curve (List[Tuple[datetime, float]]): A list of
27
29
  tuples representing the equity curve, where each tuple
28
30
  contains a date and the corresponding portfolio value.
29
- growth (float): The growth of the portfolio over the backtest period.
30
- growth_percentage (float): The percentage growth of the portfolio
31
+ total_growth (float): The growth of the portfolio over the
32
+ backtest period.
33
+ total_growth_percentage (float): The percentage growth of the portfolio
31
34
  over the backtest period.
32
- final_value (float): The final value of the portfolio at the end
33
- of the backtest.
34
35
  total_net_gain (float): The total return of the backtest.
35
36
  total_net_gain_percentage (float): The total return percentage
36
37
  total_loss (float): The total loss of the backtest.
38
+ total_loss_percentage (float): The total loss percentage
37
39
  cagr (float): The compound annual growth rate of the backtest.
38
40
  sharpe_ratio (float): The Sharpe ratio of the backtest, indicating
39
41
  risk-adjusted return.
@@ -68,15 +70,24 @@ class BacktestMetrics:
68
70
  average exposure of the portfolio.
69
71
  cumulative_exposure (float): The cumulative exposure, indicating the
70
72
  total exposure of the portfolio over the backtest period.
71
- trades_average_gain (float): The average gain from winning trades.
72
- trades_average_gain_percentage (float): The average gain percentage
73
- from winning trades.
74
- trades_average_loss (float): The average loss from losing trades.
75
- trades_average_loss_percentage (float): The average loss percentage
73
+ average_trade_size (float): The average size of trades executed
74
+ during the backtest.
75
+ average_trade_loss (float): The average loss from losing trades.
76
+ average_trade_loss_percentage (float): The average loss percentage
76
77
  from losing trades.
77
- trades_average_return (float): The average return from all trades.
78
- trades_average_return_percentage (float): The average return
79
- percentage from all trades.
78
+ average_trade_gain (float): The average gain from winning trades.
79
+ average_trade_gain_percentage (float): The average gain percentage
80
+ from winning trades.
81
+ average_trade_return (float): The average return from all trades.
82
+ average_trade_return_percentage (float): The average return percentage
83
+ from all trades.
84
+ median_trade_return (float): The median return from all trades.
85
+ median_trade_return_percentage (float): The median return percentage
86
+ from all trades.
87
+ number_of_positive_trades (int): The total number of profitable trades
88
+ executed during the backtest.
89
+ number_of_negative_trades (int): The total number of unprofitable
90
+ trades executed during the backtest.
80
91
  best_trade (float): A string representation of the best trade,
81
92
  including net gain and percentage.
82
93
  worst_trade (float): A string representation of the worst trade,
@@ -123,10 +134,12 @@ class BacktestMetrics:
123
134
  backtest_start_date: datetime
124
135
  backtest_end_date: datetime
125
136
  equity_curve: List[Tuple[float, datetime]] = field(default_factory=list)
126
- growth: float = 0.0
127
- growth_percentage: float = 0.0
137
+ total_growth: float = 0.0
138
+ total_growth_percentage: float = 0.0
128
139
  total_net_gain: float = 0.0
129
140
  total_net_gain_percentage: float = 0.0
141
+ total_loss: float = 0.0
142
+ total_loss_percentage: float = 0.0
130
143
  final_value: float = 0.0
131
144
  cumulative_return: float = 0.0
132
145
  cumulative_return_series: List[Tuple[float, datetime]] = \
@@ -152,24 +165,28 @@ class BacktestMetrics:
152
165
  trade_per_day: float = 0.0
153
166
  exposure_ratio: float = 0.0
154
167
  cumulative_exposure: float = 0.0
155
- trades_average_gain: float = 0.0
156
- trades_average_gain_percentage: float = 0.0
157
- trades_average_loss: float = 0.0
158
- trades_average_loss_percentage: float = 0.0
159
- trades_average_return: float = 0.0
160
- trades_average_return_percentage: float = 0.0
161
168
  best_trade: Trade = None
162
169
  worst_trade: Trade = None
170
+ number_of_positive_trades: int = 0
171
+ percentage_positive_trades: float = 0.0
172
+ number_of_negative_trades: int = 0
173
+ percentage_negative_trades: float = 0.0
163
174
  average_trade_duration: float = 0.0
164
175
  average_trade_size: float = 0.0
176
+ average_trade_loss: float = 0.0
177
+ average_trade_loss_percentage: float = 0.0
178
+ average_trade_gain: float = 0.0
179
+ average_trade_gain_percentage: float = 0.0
180
+ average_trade_return: float = 0.0
181
+ average_trade_return_percentage: float = 0.0
182
+ median_trade_return: float = 0.0
183
+ median_trade_return_percentage: float = 0.0
165
184
  number_of_trades: int = 0
166
185
  number_of_trades_closed: int = 0
167
186
  number_of_trades_opened: int = 0
168
187
  number_of_trades_open_at_end: int = 0
169
188
  win_rate: float = 0.0
170
189
  win_loss_ratio: float = 0.0
171
- percentage_positive_trades: float = 0.0
172
- percentage_negative_trades: float = 0.0
173
190
  percentage_winning_months: float = 0.0
174
191
  percentage_winning_years: float = 0.0
175
192
  average_monthly_return: float = 0.0
@@ -198,11 +215,13 @@ class BacktestMetrics:
198
215
  "backtest_end_date": self.backtest_end_date.isoformat(),
199
216
  "equity_curve": [(value, date.isoformat())
200
217
  for value, date in self.equity_curve],
218
+ "final_value": self.final_value,
201
219
  "total_net_gain": self.total_net_gain,
202
220
  "total_net_gain_percentage": self.total_net_gain_percentage,
203
- "final_value": self.final_value,
204
- "growth": self.growth,
205
- "growth_percentage": self.growth_percentage,
221
+ "total_growth": self.total_growth,
222
+ "total_growth_percentage": self.total_growth_percentage,
223
+ "total_loss": self.total_loss,
224
+ "total_loss_percentage": self.total_loss_percentage,
206
225
  "cumulative_return": self.cumulative_return,
207
226
  "cumulative_return_series": [(value, date.isoformat())
208
227
  for value, date in
@@ -216,8 +235,6 @@ class BacktestMetrics:
216
235
  "sortino_ratio": self.sortino_ratio,
217
236
  "calmar_ratio": self.calmar_ratio,
218
237
  "profit_factor": self.profit_factor,
219
- "gross_profit": self.gross_profit,
220
- "gross_loss": self.gross_loss,
221
238
  "annual_volatility": self.annual_volatility,
222
239
  "monthly_returns": [(value, date.isoformat())
223
240
  for value, date in self.monthly_returns],
@@ -233,15 +250,22 @@ class BacktestMetrics:
233
250
  "trade_per_day": self.trade_per_day,
234
251
  "exposure_ratio": self.exposure_ratio,
235
252
  "cumulative_exposure": self.cumulative_exposure,
236
- "trades_average_gain": self.trades_average_gain,
237
- "trades_average_gain_percentage":
238
- self.trades_average_gain_percentage,
239
- "trades_average_loss": self.trades_average_loss,
240
- "trades_average_loss_percentage":
241
- self.trades_average_loss_percentage,
242
- "trades_average_return": self.trades_average_return,
243
- "trades_average_return_percentage":
244
- self.trades_average_return_percentage,
253
+ "average_trade_gain": self.average_trade_gain,
254
+ "average_trade_gain_percentage":
255
+ self.average_trade_gain_percentage,
256
+ "average_trade_loss": self.average_trade_loss,
257
+ "average_trade_loss_percentage":
258
+ self.average_trade_loss_percentage,
259
+ "average_trade_return": self.average_trade_return,
260
+ "average_trade_return_percentage":
261
+ self.average_trade_return_percentage,
262
+ "median_trade_return": self.median_trade_return,
263
+ "median_trade_return_percentage":
264
+ self.median_trade_return_percentage,
265
+ "number_of_positive_trades": self.number_of_positive_trades,
266
+ "percentage_positive_trades": self.percentage_positive_trades,
267
+ "number_of_negative_trades": self.number_of_negative_trades,
268
+ "percentage_negative_trades": self.percentage_negative_trades,
245
269
  "best_trade": self.best_trade.to_dict()
246
270
  if self.best_trade else None,
247
271
  "worst_trade": self.worst_trade.to_dict()
@@ -253,8 +277,6 @@ class BacktestMetrics:
253
277
  "win_loss_ratio": self.win_loss_ratio,
254
278
  "percentage_winning_months": self.percentage_winning_months,
255
279
  "percentage_winning_years": self.percentage_winning_years,
256
- "percentage_positive_trades": self.percentage_positive_trades,
257
- "percentage_negative_trades": self.percentage_negative_trades,
258
280
  "average_monthly_return": self.average_monthly_return,
259
281
  "average_monthly_return_losing_months":
260
282
  self.average_monthly_return_losing_months,
@@ -66,13 +66,13 @@ class BacktestRun:
66
66
  backtest_start_date: datetime
67
67
  backtest_end_date: datetime
68
68
  trading_symbol: str
69
- initial_unallocated: float
70
- number_of_runs: int
71
- portfolio_snapshots: List[PortfolioSnapshot]
72
- trades: List[Trade]
73
- orders: List[Order]
74
- positions: List[Position]
75
- created_at: datetime
69
+ initial_unallocated: float = 0.0
70
+ number_of_runs: int = 0
71
+ portfolio_snapshots: List[PortfolioSnapshot] = field(default_factory=list)
72
+ trades: List[Trade] = field(default_factory=list)
73
+ orders: List[Order] = field(default_factory=list)
74
+ positions: List[Position] = field(default_factory=list)
75
+ created_at: datetime = None,
76
76
  symbols: List[str] = field(default_factory=list)
77
77
  number_of_days: int = 0
78
78
  number_of_trades: int = 0
@@ -20,19 +20,24 @@ class BacktestSummaryMetrics:
20
20
  total_net_gain (float): Total net gain from the backtest.
21
21
  total_net_gain_percentage (float): Total net gain percentage
22
22
  from the backtest.
23
- average_total_net_gain (float): Average total net gain across
24
- multiple backtests.
25
- average_total_net_gain_percentage (float): Average total net gain
26
- percentage across multiple backtests.
27
- gross_loss (float): Total gross loss from all trades.
28
- average_gross_loss (float): Average gross loss across
23
+ total_loss (float): Total gross loss from all trades.
24
+ total_loss_percentage (float): Total gross loss percentage.
25
+ total_growth (float): Total growth from the backtest.
26
+ total_growth_percentage (float): Total growth percentage
27
+ from the backtest.
28
+ average_net_gain (float): Average returns across multiple backtests.
29
+ average_net_gain_percentage (float): Average return percentage across
29
30
  multiple backtests.
30
- growth (float): Total growth from the backtest.
31
- growth_percentage (float): Total growth percentage from the backtest.
32
31
  average_growth (float): Average growth across multiple backtests.
33
32
  average_growth_percentage (float): Average growth percentage across
34
33
  multiple backtests.
35
- trades_average_return (float): Average return per trade.
34
+ average_trade_return (float): Average return per trade.
35
+ average_trade_return_percentage (float): Average return percentage
36
+ per trade.
37
+ average_trade_loss (float): Total gross loss from all trades.
38
+ average_trade_loss_percentage (float): Average trade loss percentage.
39
+ average_trade_gain (float): Average gain from winning trades.
40
+ average_trade_gain_percentage (float): Average gain percentage
36
41
  cagr (float): Compound annual growth rate of the backtest.
37
42
  sharpe_ratio (float): Sharpe ratio, risk-adjusted return.
38
43
  sortino_ratio (float): Sortino ratio, downside-risk adjusted return.
@@ -50,14 +55,20 @@ class BacktestSummaryMetrics:
50
55
  """
51
56
  total_net_gain: float = None
52
57
  total_net_gain_percentage: float = None
53
- average_total_net_gain: float = None
54
- average_total_net_gain_percentage: float = None
55
- gross_loss: float = None
56
- average_gross_loss: float = None
57
- growth: float = None
58
- growth_percentage: float = None
58
+ total_growth: float = None
59
+ total_growth_percentage: float = None
60
+ total_loss: float = None
61
+ total_loss_percentage: float = None
62
+ average_net_gain: float = None
63
+ average_net_gain_percentage: float = None
59
64
  average_growth: float = None
60
65
  average_growth_percentage: float = None
66
+ average_trade_return: float = None
67
+ average_trade_return_percentage: float = None
68
+ average_trade_loss: float = None
69
+ average_trade_loss_percentage: float = None
70
+ average_trade_gain: float = None
71
+ average_trade_gain_percentage: float = None
61
72
  trades_average_return: float = None
62
73
  cagr: float = None
63
74
  sharpe_ratio: float = None
@@ -81,16 +92,23 @@ class BacktestSummaryMetrics:
81
92
  return {
82
93
  "total_net_gain": self.total_net_gain,
83
94
  "total_net_gain_percentage": self.total_net_gain_percentage,
84
- "average_total_net_gain": self.average_total_net_gain,
85
- "average_total_net_gain_percentage":
86
- self.average_total_net_gain_percentage,
87
- "gross_loss": self.gross_loss,
88
- "average_gross_loss": self.average_gross_loss,
89
- "growth": self.growth,
90
- "growth_percentage": self.growth_percentage,
95
+ "total_growth": self.total_growth,
96
+ "total_growth_percentage": self.total_growth_percentage,
97
+ "total_loss": self.total_loss,
98
+ "total_loss_percentage": self.total_loss_percentage,
99
+ "average_net_gain": self.average_net_gain,
100
+ "average_net_gain_percentage": self.average_net_gain_percentage,
91
101
  "average_growth": self.average_growth,
92
102
  "average_growth_percentage": self.average_growth_percentage,
93
- "trades_average_return": self.trades_average_return,
103
+ "average_trade_return": self.average_trade_return,
104
+ "average_trade_return_percentage":
105
+ self.average_trade_return_percentage,
106
+ "average_trade_loss": self.average_trade_loss,
107
+ "average_trade_loss_percentage":
108
+ self.average_trade_loss_percentage,
109
+ "average_trade_gain": self.average_trade_gain,
110
+ "average_trade_gain_percentage":
111
+ self.average_trade_gain_percentage,
94
112
  "cagr": self.cagr,
95
113
  "sharpe_ratio": self.sharpe_ratio,
96
114
  "sortino_ratio": self.sortino_ratio,
@@ -154,9 +172,7 @@ class BacktestSummaryMetrics:
154
172
  if self.total_net_gain is None:
155
173
  self.total_net_gain = other.total_net_gain
156
174
  else:
157
- self.total_net_gain = safe_mean(
158
- self.total_net_gain, other.total_net_gain
159
- )
175
+ self.total_net_gain += other.total_net_gain
160
176
 
161
177
  if self.total_net_gain_percentage is None:
162
178
  self.total_net_gain_percentage = other.total_net_gain_percentage
@@ -165,28 +181,71 @@ class BacktestSummaryMetrics:
165
181
  self.total_net_gain_percentage, other.total_net_gain_percentage
166
182
  )
167
183
 
168
- if self.gross_loss is None:
169
- self.gross_loss = other.gross_loss
184
+ if self.total_loss is None:
185
+ self.total_loss = other.total_loss
186
+ else:
187
+ self.total_loss = safe_mean(self.total_loss, other.total_loss)
188
+
189
+ if self.total_growth is None:
190
+ self.total_growth = other.total_growth
191
+ else:
192
+ self.total_growth = safe_mean(
193
+ self.total_growth, other.total_growth
194
+ )
195
+
196
+ if self.total_growth_percentage is None:
197
+ self.total_growth_percentage = other.total_growth_percentage
170
198
  else:
171
- self.gross_loss = safe_mean(self.gross_loss, other.gross_loss)
199
+ self.total_growth_percentage = safe_mean(
200
+ self.total_growth_percentage, other.total_growth_percentage
201
+ )
202
+
203
+ if self.average_trade_return is None:
204
+ self.average_trade_return = other.average_trade_return
205
+ else:
206
+ self.average_trade_return = safe_mean(
207
+ self.average_trade_return, other.average_trade_return
208
+ )
172
209
 
173
- if self.growth is None:
174
- self.growth = other.growth
210
+ if self.average_trade_return_percentage is None:
211
+ self.average_trade_return_percentage = \
212
+ other.average_trade_return_percentage
175
213
  else:
176
- self.growth = safe_mean(self.growth, other.growth)
214
+ self.average_trade_return_percentage = safe_mean(
215
+ self.average_trade_return_percentage,
216
+ other.average_trade_return_percentage
217
+ )
218
+
219
+ if self.average_trade_loss is None:
220
+ self.average_trade_loss = other.average_trade_loss
221
+ else:
222
+ self.average_trade_loss = safe_mean(
223
+ self.average_trade_loss, other.average_trade_loss
224
+ )
177
225
 
178
- if self.growth_percentage is None:
179
- self.growth_percentage = other.growth_percentage
226
+ if self.average_trade_loss_percentage is None:
227
+ self.average_trade_loss_percentage = \
228
+ other.average_trade_loss_percentage
180
229
  else:
181
- self.growth_percentage = safe_mean(
182
- self.growth_percentage, other.growth_percentage
230
+ self.average_trade_loss_percentage = safe_mean(
231
+ self.average_trade_loss_percentage,
232
+ other.average_trade_loss_percentage
183
233
  )
184
234
 
185
- if self.trades_average_return is None:
186
- self.trades_average_return = other.trades_average_return
235
+ if self.average_trade_gain is None:
236
+ self.average_trade_gain = other.average_trade_gain
187
237
  else:
188
- self.trades_average_return = safe_mean(
189
- self.trades_average_return, other.trades_average_return
238
+ self.average_trade_gain = safe_mean(
239
+ self.average_trade_gain, other.average_trade_gain
240
+ )
241
+
242
+ if self.average_trade_gain_percentage is None:
243
+ self.average_trade_gain_percentage = \
244
+ other.average_trade_gain_percentage
245
+ else:
246
+ self.average_trade_gain_percentage = safe_mean(
247
+ self.average_trade_gain_percentage,
248
+ other.average_trade_gain_percentage
190
249
  )
191
250
 
192
251
  if self.cagr is None:
@@ -265,6 +324,36 @@ class BacktestSummaryMetrics:
265
324
  else:
266
325
  self.number_of_trades += other.number_of_trades
267
326
 
327
+ if self.average_net_gain is None:
328
+ self.average_net_gain = other.total_net_gain
329
+ else:
330
+ self.average_net_gain = safe_mean(
331
+ self.average_net_gain, other.total_net_gain
332
+ )
333
+
334
+ if self.average_net_gain_percentage is None:
335
+ self.average_net_gain_percentage = other.total_net_gain_percentage
336
+ else:
337
+ self.average_net_gain_percentage = safe_mean(
338
+ self.average_net_gain_percentage,
339
+ other.total_net_gain_percentage
340
+ )
341
+
342
+ if self.average_growth is None:
343
+ self.average_growth = other.total_growth
344
+ else:
345
+ self.average_growth = safe_mean(
346
+ self.average_growth, other.total_growth
347
+ )
348
+
349
+ if self.average_growth_percentage is None:
350
+ self.average_growth_percentage = other.total_growth_percentage
351
+ else:
352
+ self.average_growth_percentage = safe_mean(
353
+ self.average_growth_percentage,
354
+ other.total_growth_percentage
355
+ )
356
+
268
357
  def __repr__(self):
269
358
  return json.dumps(
270
359
  self.to_dict(), indent=4, sort_keys=True, default=str
@@ -40,7 +40,8 @@ class Order(BaseModel):
40
40
  order_fee=None,
41
41
  order_fee_currency=None,
42
42
  order_fee_rate=None,
43
- id=None
43
+ id=None,
44
+ metadata=None,
44
45
  ):
45
46
  if target_symbol is None:
46
47
  raise OperationalException("Target symbol is not specified")
@@ -85,6 +86,7 @@ class Order(BaseModel):
85
86
  self.order_fee_rate = order_fee_rate
86
87
  self.id = id
87
88
  self.cost = cost
89
+ self.metadata = metadata if metadata is not None else {}
88
90
 
89
91
  def get_id(self):
90
92
  return self.id
@@ -254,6 +256,7 @@ class Order(BaseModel):
254
256
  "order_fee_currency": self.order_fee_currency,
255
257
  "order_fee_rate": self.order_fee_rate,
256
258
  "order_fee": self.order_fee,
259
+ "metadata": self.metadata if self.metadata else {},
257
260
  }
258
261
 
259
262
  @staticmethod
@@ -294,6 +297,7 @@ class Order(BaseModel):
294
297
  order_fee=data.get("order_fee", None),
295
298
  order_fee_currency=data.get("order_fee_currency", None),
296
299
  order_fee_rate=data.get("order_fee_rate", None),
300
+ metadata=data.get("metadata", {}),
297
301
  )
298
302
  return order
299
303
 
@@ -22,17 +22,19 @@ from .metrics import get_annual_volatility, \
22
22
  get_total_return, get_cumulative_exposure, get_exposure_ratio, \
23
23
  get_yearly_returns, get_monthly_returns, get_best_year, \
24
24
  get_best_month, get_worst_year, get_worst_month, get_best_trade, \
25
- get_worst_trade, get_average_yearly_return, get_average_gain, \
26
- get_average_loss, get_average_monthly_return, \
25
+ get_worst_trade, get_average_yearly_return, get_average_trade_gain, \
26
+ get_average_trade_loss, get_average_monthly_return, \
27
27
  get_percentage_winning_months, get_average_trade_duration, \
28
28
  get_trade_frequency, get_win_rate, get_win_loss_ratio, \
29
29
  get_calmar_ratio, get_max_drawdown_absolute, \
30
30
  get_max_drawdown_duration, get_max_daily_drawdown, get_trades_per_day, \
31
31
  get_trades_per_year, get_average_monthly_return_losing_months, \
32
32
  get_average_monthly_return_winning_months, get_percentage_winning_years, \
33
- get_rolling_sharpe_ratio, create_backtest_metrics, get_growth, \
34
- get_growth_percentage, get_risk_free_rate_us, get_median_return, \
35
- get_average_return, get_cumulative_return, get_cumulative_return_series
33
+ get_rolling_sharpe_ratio, create_backtest_metrics, get_total_growth, \
34
+ get_total_loss, get_risk_free_rate_us, get_median_trade_return, \
35
+ get_average_trade_return, get_cumulative_return, \
36
+ get_cumulative_return_series, get_average_trade_size, \
37
+ get_positive_trades, get_negative_trades, get_number_of_trades
36
38
 
37
39
  __all__ = [
38
40
  "OrderService",
@@ -88,8 +90,7 @@ __all__ = [
88
90
  "get_best_trade",
89
91
  "get_worst_trade",
90
92
  "get_average_yearly_return",
91
- "get_average_gain",
92
- "get_average_loss",
93
+ "get_average_trade_loss",
93
94
  "get_average_monthly_return",
94
95
  "get_percentage_winning_months",
95
96
  "get_average_trade_duration",
@@ -105,11 +106,16 @@ __all__ = [
105
106
  "get_average_monthly_return_winning_months",
106
107
  "get_percentage_winning_years",
107
108
  "get_rolling_sharpe_ratio",
108
- "get_growth_percentage",
109
+ "get_total_growth",
109
110
  "create_backtest_metrics",
110
- "get_growth",
111
- "get_median_return",
112
- "get_average_return",
111
+ "get_total_loss",
112
+ "get_median_trade_return",
113
+ "get_average_trade_gain",
114
+ "get_average_trade_size",
115
+ "get_average_trade_return",
116
+ "get_positive_trades",
117
+ "get_negative_trades",
118
+ "get_number_of_trades",
113
119
  "get_cumulative_return",
114
120
  "get_cumulative_return_series",
115
121
  ]