investing-algorithm-framework 7.0.3__tar.gz → 7.1.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.
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/PKG-INFO +1 -1
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/app.py +105 -7
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/strategy.py +9 -1
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/pyproject.toml +1 -1
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/LICENSE +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/README.md +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/algorithm/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/algorithm/algorithm.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/algorithm/algorithm_factory.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/analysis/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/analysis/backtest_data_ranges.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/analysis/ranking.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/app_hook.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/context.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/eventloop.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/ascii.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/backtest_report.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/charts/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/charts/entry_exist_signals.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/charts/equity_curve_drawdown.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/charts/monthly_returns_heatmap.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/charts/ohlcv_data_completeness.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/charts/rolling_sharp_ratio.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/charts/yearly_returns_barchart.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/generate.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/tables/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/tables/key_metrics_table.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/tables/stop_loss_table.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/tables/time_metrics_table.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/tables/trade_metrics_table.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/tables/trades_table.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/tables/utils.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/reporting/templates/report_template.html.j2 +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/stateless/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/stateless/action_handlers/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/stateless/action_handlers/action_handler_strategy.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/stateless/action_handlers/check_online_handler.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/stateless/action_handlers/run_strategy_handler.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/stateless/exception_handler.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/task.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/web/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/web/controllers/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/web/controllers/orders.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/web/controllers/portfolio.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/web/controllers/positions.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/web/create_app.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/web/error_handler.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/web/responses.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/web/run_strategies.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/web/schemas/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/web/schemas/order.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/web/schemas/portfolio.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/web/schemas/position.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/app/web/setup_cors.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/cli.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/deploy_to_aws_lambda.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/deploy_to_azure_function.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/initialize_app.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/.gitignore.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/app.py.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/app_aws_lambda_function.py.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/app_azure_function.py.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/app_web.py.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/aws_lambda_dockerfile.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/aws_lambda_dockerignore.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/aws_lambda_readme.md.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/aws_lambda_requirements.txt.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/azure_function_function_app.py.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/azure_function_host.json.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/azure_function_local.settings.json.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/azure_function_requirements.txt.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/data_providers.py.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/env.example.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/env_azure_function.example.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/market_data_providers.py.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/readme.md.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/requirements.txt.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/run_backtest.py.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/cli/templates/strategy.py.template +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/create_app.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/dependency_container.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/backtesting/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/backtesting/backtest.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/backtesting/backtest_date_range.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/backtesting/backtest_metrics.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/backtesting/backtest_position.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/backtesting/backtest_results.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/config.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/constants.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/data_provider.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/data_structures.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/decimal_parsing.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/exceptions.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/app_mode.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/base_model.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/data/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/data/data_source.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/data/data_type.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/event.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/market/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/market/market_credential.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/order/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/order/order.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/order/order_side.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/order/order_status.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/order/order_type.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/portfolio/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/portfolio/portfolio.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/portfolio/portfolio_configuration.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/portfolio/portfolio_snapshot.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/position/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/position/position.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/position/position_snapshot.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/snapshot_interval.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/strategy_profile.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/time_frame.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/time_interval.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/time_unit.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/tracing/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/tracing/trace.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/trade/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/trade/trade.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/trade/trade_risk_type.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/trade/trade_status.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/trade/trade_stop_loss.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/models/trade/trade_take_profit.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/order_executor.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/portfolio_provider.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/services/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/services/market_credential_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/services/observable.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/services/observer.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/services/portfolios/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/services/portfolios/portfolio_sync_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/services/rounding_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/services/state_handler.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/stateless_actions.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/strategy.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/utils/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/utils/csv.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/utils/custom_tqdm.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/utils/dates.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/utils/jupyter_notebook_detection.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/utils/polars.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/utils/random.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/utils/signatures.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/utils/stoppable_thread.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/domain/utils/synchronized.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/download_data.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/data_providers/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/data_providers/ccxt.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/data_providers/csv.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/data_providers/pandas.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/database/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/database/sql_alchemy.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/decimal_parser.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/model_extension.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/order/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/order/order.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/order/order_metadata.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/order_trade_association.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/portfolio/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/portfolio/portfolio_snapshot.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/portfolio/sql_portfolio.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/position/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/position/position.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/position/position_snapshot.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/trades/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/trades/trade.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/trades/trade_stop_loss.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/models/trades/trade_take_profit.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/order_executors/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/order_executors/backtest_oder_executor.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/order_executors/ccxt_order_executor.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/portfolio_providers/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/portfolio_providers/ccxt_portfolio_provider.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/repositories/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/repositories/order_metadata_repository.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/repositories/order_repository.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/repositories/portfolio_repository.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/repositories/portfolio_snapshot_repository.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/repositories/position_repository.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/repositories/position_snapshot_repository.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/repositories/repository.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/repositories/trade_repository.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/repositories/trade_stop_loss_repository.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/repositories/trade_take_profit_repository.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/services/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/services/aws/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/services/aws/state_handler.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/services/azure/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/services/azure/state_handler.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/services/performance_service/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/services/performance_service/backtest_performance_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/services/performance_service/performance_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/unit_of_work/in_memory.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/infrastructure/unit_of_work/sqlalchemy.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/backtesting/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/backtesting/backtest_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/configuration_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/data_providers/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/data_providers/data_provider_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/market_credential_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/alpha.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/beta.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/cagr.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/calmar_ratio.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/drawdown.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/equity_curve.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/exposure.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/generate.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/mean_daily_return.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/price_efficiency.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/profit_factor.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/recovery.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/returns.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/risk_free_rate.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/sharpe_ratio.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/sortino_ratio.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/standard_deviation.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/treynor_ratio.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/ulcer.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/value_at_risk.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/volatility.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/metrics/win_rate.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/order_service/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/order_service/order_backtest_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/order_service/order_executor_lookup.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/order_service/order_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/portfolios/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/portfolios/backtest_portfolio_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/portfolios/portfolio_configuration_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/portfolios/portfolio_provider_lookup.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/portfolios/portfolio_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/portfolios/portfolio_snapshot_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/portfolios/portfolio_sync_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/positions/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/positions/position_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/positions/position_snapshot_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/repository_service.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/trade_order_evaluator/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/trade_order_evaluator/backtest_trade_oder_evaluator.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/trade_order_evaluator/default_trade_order_evaluator.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/trade_order_evaluator/trade_order_evaluator.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/trade_service/__init__.py +0 -0
- {investing_algorithm_framework-7.0.3 → investing_algorithm_framework-7.1.0}/investing_algorithm_framework/services/trade_service/trade_service.py +0 -0
|
@@ -381,6 +381,10 @@ class App:
|
|
|
381
381
|
None
|
|
382
382
|
"""
|
|
383
383
|
logger.info("Initializing data sources")
|
|
384
|
+
|
|
385
|
+
if data_sources is None or len(data_sources) == 0:
|
|
386
|
+
return
|
|
387
|
+
|
|
384
388
|
data_provider_service = self.container.data_provider_service()
|
|
385
389
|
data_provider_service.reset()
|
|
386
390
|
|
|
@@ -415,6 +419,10 @@ class App:
|
|
|
415
419
|
None
|
|
416
420
|
"""
|
|
417
421
|
logger.info("Initializing data sources for backtest")
|
|
422
|
+
|
|
423
|
+
if data_sources is None or len(data_sources) == 0:
|
|
424
|
+
return
|
|
425
|
+
|
|
418
426
|
data_provider_service = self.container.data_provider_service()
|
|
419
427
|
data_provider_service.reset()
|
|
420
428
|
|
|
@@ -900,18 +908,90 @@ class App:
|
|
|
900
908
|
|
|
901
909
|
return backtest
|
|
902
910
|
|
|
911
|
+
def run_vector_backtests(
|
|
912
|
+
self,
|
|
913
|
+
backtest_date_range: BacktestDateRange,
|
|
914
|
+
initial_amount,
|
|
915
|
+
strategies: List[TradingStrategy],
|
|
916
|
+
snapshot_interval: SnapshotInterval = SnapshotInterval.DAILY,
|
|
917
|
+
risk_free_rate: Optional[float] = None,
|
|
918
|
+
skip_data_sources_initialization: bool = False
|
|
919
|
+
):
|
|
920
|
+
"""
|
|
921
|
+
Run vectorized backtests for a set of strategies. The provided
|
|
922
|
+
set of strategies need to have their 'buy_signal_vectorized' and
|
|
923
|
+
'sell_signal_vectorized' methods implemented to support vectorized
|
|
924
|
+
backtesting.
|
|
925
|
+
|
|
926
|
+
Args:
|
|
927
|
+
backtest_date_range: The date range to run the backtest for
|
|
928
|
+
(instance of BacktestDateRange)
|
|
929
|
+
initial_amount: The initial amount to start the backtest with.
|
|
930
|
+
This will be the amount of trading currency that the backtest
|
|
931
|
+
portfolio will start with.
|
|
932
|
+
strategies (List[TradingStrategy]): List of strategy objects
|
|
933
|
+
that need to be backtested. Each strategy should implement
|
|
934
|
+
the 'buy_signal_vectorized' and 'sell_signal_vectorized'
|
|
935
|
+
methods to support vectorized backtesting.
|
|
936
|
+
snapshot_interval (SnapshotInterval): The snapshot
|
|
937
|
+
interval to use for the backtest. This is used to determine
|
|
938
|
+
how often the portfolio snapshot should be taken during the
|
|
939
|
+
backtest. The default is TRADE_CLOSE, which means that the
|
|
940
|
+
portfolio snapshot will be taken at the end of each trade.
|
|
941
|
+
risk_free_rate (Optional[float]): The risk-free rate to use for
|
|
942
|
+
the backtest. This is used to calculate the Sharpe ratio
|
|
943
|
+
and other performance metrics. If not provided, the default
|
|
944
|
+
risk-free rate will be tried to be fetched from the
|
|
945
|
+
US Treasury website.
|
|
946
|
+
skip_data_sources_initialization (bool): Whether to skip the
|
|
947
|
+
initialization of data sources. This is useful when the data
|
|
948
|
+
sources are already initialized, and you want to skip the
|
|
949
|
+
initialization step. This will speed up the backtesting
|
|
950
|
+
process, but make sure that the data sources are already
|
|
951
|
+
initialized before calling this method.
|
|
952
|
+
|
|
953
|
+
Returns:
|
|
954
|
+
List[Backtest]: List of Backtest instances for each strategy
|
|
955
|
+
that was backtested.
|
|
956
|
+
"""
|
|
957
|
+
backtests = []
|
|
958
|
+
data_sources = []
|
|
959
|
+
|
|
960
|
+
for strategy in strategies:
|
|
961
|
+
data_sources.extend(strategy.data_sources)
|
|
962
|
+
|
|
963
|
+
if not skip_data_sources_initialization:
|
|
964
|
+
self.initialize_data_sources_backtest(
|
|
965
|
+
data_sources, backtest_date_range
|
|
966
|
+
)
|
|
967
|
+
|
|
968
|
+
for strategy in tqdm(strategies):
|
|
969
|
+
backtests.append(
|
|
970
|
+
self.run_vector_backtest(
|
|
971
|
+
backtest_date_range=backtest_date_range,
|
|
972
|
+
initial_amount=initial_amount,
|
|
973
|
+
strategy=strategy,
|
|
974
|
+
snapshot_interval=snapshot_interval,
|
|
975
|
+
risk_free_rate=risk_free_rate,
|
|
976
|
+
skip_data_sources_initialization=True
|
|
977
|
+
)
|
|
978
|
+
)
|
|
979
|
+
|
|
980
|
+
return backtests
|
|
981
|
+
|
|
903
982
|
def run_vector_backtest(
|
|
904
983
|
self,
|
|
905
984
|
backtest_date_range: BacktestDateRange,
|
|
906
985
|
initial_amount,
|
|
907
|
-
strategy,
|
|
986
|
+
strategy: TradingStrategy,
|
|
908
987
|
snapshot_interval: SnapshotInterval = SnapshotInterval.DAILY,
|
|
909
988
|
metadata: Optional[Dict[str, str]] = None,
|
|
910
989
|
risk_free_rate: Optional[float] = None,
|
|
990
|
+
skip_data_sources_initialization: bool = False
|
|
911
991
|
) -> Backtest:
|
|
912
992
|
"""
|
|
913
|
-
Run
|
|
914
|
-
|
|
993
|
+
Run vectorized backtests for a strategy. The provided
|
|
994
|
+
strategy needs to have its 'buy_signal_vectorized' and
|
|
915
995
|
'sell_signal_vectorized' methods implemented to support vectorized
|
|
916
996
|
backtesting.
|
|
917
997
|
|
|
@@ -937,6 +1017,12 @@ class App:
|
|
|
937
1017
|
backtest report. This can be used to store additional
|
|
938
1018
|
information about the backtest, such as the author, version,
|
|
939
1019
|
parameters or any other relevant information.
|
|
1020
|
+
skip_data_sources_initialization (bool): Whether to skip the
|
|
1021
|
+
initialization of data sources. This is useful when the data
|
|
1022
|
+
sources are already initialized, and you want to skip the
|
|
1023
|
+
initialization step. This will speed up the backtesting
|
|
1024
|
+
process, but make sure that the data sources are already
|
|
1025
|
+
initialized before calling this method.
|
|
940
1026
|
|
|
941
1027
|
Returns:
|
|
942
1028
|
Backtest: Instance of Backtest
|
|
@@ -947,9 +1033,11 @@ class App:
|
|
|
947
1033
|
snapshot_interval=snapshot_interval,
|
|
948
1034
|
initial_amount=initial_amount
|
|
949
1035
|
)
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
1036
|
+
|
|
1037
|
+
if not skip_data_sources_initialization:
|
|
1038
|
+
self.initialize_data_sources_backtest(
|
|
1039
|
+
strategy.data_sources, backtest_date_range
|
|
1040
|
+
)
|
|
953
1041
|
|
|
954
1042
|
if risk_free_rate is None:
|
|
955
1043
|
logger.info("No risk free rate provided, retrieving it...")
|
|
@@ -971,7 +1059,17 @@ class App:
|
|
|
971
1059
|
initial_amount=initial_amount,
|
|
972
1060
|
risk_free_rate=risk_free_rate
|
|
973
1061
|
)
|
|
974
|
-
|
|
1062
|
+
|
|
1063
|
+
# Add the metadata to the backtest
|
|
1064
|
+
if metadata is None:
|
|
1065
|
+
|
|
1066
|
+
if strategy.metadata is not None:
|
|
1067
|
+
backtest.metadata = {}
|
|
1068
|
+
else:
|
|
1069
|
+
backtest.metadata = strategy.metadata
|
|
1070
|
+
else:
|
|
1071
|
+
backtest.metadata = metadata
|
|
1072
|
+
|
|
975
1073
|
return backtest
|
|
976
1074
|
|
|
977
1075
|
def run_backtests(
|
|
@@ -27,8 +27,12 @@ class TradingStrategy:
|
|
|
27
27
|
sources to use for the strategy. The data sources will be used
|
|
28
28
|
to indentify data providers that will be called to gather data
|
|
29
29
|
and pass to the strategy before its run.
|
|
30
|
+
metadata (optional): Dict[str, Any] - a dictionary
|
|
31
|
+
containing metadata about the strategy. This can be used to
|
|
32
|
+
store additional information about the strategy, such as its
|
|
33
|
+
author, version, description, params etc.
|
|
30
34
|
"""
|
|
31
|
-
time_unit:
|
|
35
|
+
time_unit: TimeUnit = None
|
|
32
36
|
interval: int = None
|
|
33
37
|
worker_id: str = None
|
|
34
38
|
strategy_id: str = None
|
|
@@ -36,6 +40,7 @@ class TradingStrategy:
|
|
|
36
40
|
data_sources: List[DataSource] = None
|
|
37
41
|
traces = None
|
|
38
42
|
context: Context = None
|
|
43
|
+
metadata: Dict[str, Any] = None
|
|
39
44
|
|
|
40
45
|
def __init__(
|
|
41
46
|
self,
|
|
@@ -43,6 +48,7 @@ class TradingStrategy:
|
|
|
43
48
|
time_unit=None,
|
|
44
49
|
interval=None,
|
|
45
50
|
data_sources=None,
|
|
51
|
+
metadata=None,
|
|
46
52
|
worker_id=None,
|
|
47
53
|
decorated=None
|
|
48
54
|
):
|
|
@@ -65,6 +71,8 @@ class TradingStrategy:
|
|
|
65
71
|
if data_sources is not None:
|
|
66
72
|
self.data_sources = data_sources
|
|
67
73
|
|
|
74
|
+
self.metadata = metadata if metadata is not None else {}
|
|
75
|
+
|
|
68
76
|
if decorated is not None:
|
|
69
77
|
self.decorated = decorated
|
|
70
78
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|