investing-algorithm-framework 6.0.1__tar.gz → 6.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-6.0.1 → investing_algorithm_framework-6.1.0}/PKG-INFO +68 -69
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/README.md +67 -68
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/context.py +7 -7
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/strategy.py +51 -12
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/trade/trade.py +37 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/trade/trade_stop_loss.py +9 -2
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/trade/trade_take_profit.py +20 -2
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/utils/backtesting.py +133 -45
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/market_data_sources/ccxt.py +6 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/trades/trade.py +11 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/trades/trade_stop_loss.py +2 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/trades/trade_take_profit.py +2 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/order_service/order_backtest_service.py +14 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/trade_service/trade_service.py +44 -19
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/pyproject.toml +1 -1
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/LICENSE +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/algorithm.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/app.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/stateless/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/stateless/action_handlers/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/stateless/action_handlers/action_handler_strategy.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/stateless/action_handlers/check_online_handler.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/stateless/action_handlers/run_strategy_handler.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/stateless/exception_handler.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/task.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/web/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/web/controllers/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/web/controllers/orders.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/web/controllers/portfolio.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/web/controllers/positions.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/web/create_app.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/web/error_handler.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/web/responses.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/web/run_strategies.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/web/schemas/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/web/schemas/order.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/web/schemas/portfolio.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/web/schemas/position.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/app/web/setup_cors.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/cli/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/cli/create_azure_function_app_skeleton.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/cli/deploy_to_azure_function.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/cli/templates/azure_function_framework_app.py.template +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/cli/templates/azure_function_function_app.py.template +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/cli/templates/azure_function_host.json.template +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/cli/templates/azure_function_local.settings.json.template +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/cli/templates/azure_function_requirements.txt.template +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/create_app.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/dependency_container.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/config.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/constants.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/data_structures.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/decimal_parsing.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/exceptions.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/metrics/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/metrics/price_efficiency.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/app_mode.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/backtesting/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/backtesting/backtest_date_range.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/backtesting/backtest_position.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/backtesting/backtest_report.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/backtesting/backtest_reports_evaluation.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/base_model.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/date_range.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/market/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/market/market_credential.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/market_data_type.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/order/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/order/order.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/order/order_side.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/order/order_status.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/order/order_type.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/portfolio/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/portfolio/portfolio.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/portfolio/portfolio_configuration.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/portfolio/portfolio_snapshot.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/position/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/position/position.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/position/position_snapshot.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/strategy_profile.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/time_frame.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/time_interval.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/time_unit.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/tracing/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/tracing/trace.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/trade/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/trade/trade_risk_type.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/trade/trade_status.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/trading_data_types.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/models/trading_time_frame.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/services/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/services/market_credential_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/services/market_data_sources.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/services/market_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/services/portfolios/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/services/portfolios/portfolio_sync_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/services/rounding_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/singleton.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/stateless_actions.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/strategy.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/utils/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/utils/csv.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/utils/polars.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/utils/random.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/utils/signatures.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/utils/stoppable_thread.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/domain/utils/synchronized.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/indicators/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/indicators/advanced.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/indicators/momentum.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/indicators/trend.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/indicators/utils.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/database/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/database/sql_alchemy.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/decimal_parser.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/market_data_sources/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/market_data_sources/csv.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/market_data_sources/pandas.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/market_data_sources/us_treasury_yield.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/model_extension.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/order/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/order/order.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/order/order_metadata.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/order_trade_association.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/portfolio/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/portfolio/portfolio_snapshot.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/portfolio/sql_portfolio.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/position/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/position/position.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/position/position_snapshot.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/models/trades/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/repositories/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/repositories/order_metadata_repository.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/repositories/order_repository.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/repositories/portfolio_repository.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/repositories/portfolio_snapshot_repository.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/repositories/position_repository.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/repositories/position_snapshot_repository.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/repositories/repository.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/repositories/trade_repository.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/repositories/trade_stop_loss_repository.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/repositories/trade_take_profit_repository.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/services/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/services/azure/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/services/azure/state_handler.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/services/market_service/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/services/market_service/ccxt_market_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/services/performance_service/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/services/performance_service/backtest_performance_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/infrastructure/services/performance_service/performance_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/backtesting/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/backtesting/backtest_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/configuration_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/market_credential_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/market_data_source_service/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/market_data_source_service/backtest_market_data_source_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/market_data_source_service/market_data_source_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/order_service/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/order_service/order_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/portfolios/__init__.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/portfolios/backtest_portfolio_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/portfolios/portfolio_configuration_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/portfolios/portfolio_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/portfolios/portfolio_snapshot_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/portfolios/portfolio_sync_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/position_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/position_snapshot_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/repository_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/strategy_orchestrator_service.py +0 -0
- {investing_algorithm_framework-6.0.1 → investing_algorithm_framework-6.1.0}/investing_algorithm_framework/services/trade_service/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: investing-algorithm-framework
|
|
3
|
-
Version: 6.0
|
|
3
|
+
Version: 6.1.0
|
|
4
4
|
Summary: A framework for creating trading bots
|
|
5
5
|
Author: MDUYN
|
|
6
6
|
Requires-Python: >=3.9
|
|
@@ -169,98 +169,97 @@ For example if you run the [moving average example trading bot](./examples/backt
|
|
|
169
169
|
you will get the following backtesting report:
|
|
170
170
|
|
|
171
171
|
```bash
|
|
172
|
-
|
|
173
172
|
:%%%#+- .=*#%%% Backtest report
|
|
174
173
|
*%%%%%%%+------=*%%%%%%%- ---------------------------
|
|
175
174
|
*%%%%%%%%%%%%%%%%%%%%%%%- Start date: 2023-08-24 00:00:00
|
|
176
175
|
.%%%%%%%%%%%%%%%%%%%%%%# End date: 2023-12-02 00:00:00
|
|
177
176
|
#%%%####%%%%%%%%**#%%%+ Number of days: 100
|
|
178
177
|
.:-+*%%%%- -+..#%%%+.+- +%%%#*=-: Number of runs: 1201
|
|
179
|
-
.:-=*%%%%. += .%%# -+.-%%%%=-:.. Number of orders:
|
|
178
|
+
.:-=*%%%%. += .%%# -+.-%%%%=-:.. Number of orders: 15
|
|
180
179
|
.:=+#%%%%%*###%%%%#*+#%%%%%%*+-: Initial balance: 400.0
|
|
181
|
-
+%%%%%%%%%%%%%%%%%%%= Final balance:
|
|
182
|
-
:++ .=#%%%%%%%%%%%%%*- Total net gain:
|
|
183
|
-
:++: :+%%%%%%#-. Growth:
|
|
180
|
+
+%%%%%%%%%%%%%%%%%%%= Final balance: 453.07
|
|
181
|
+
:++ .=#%%%%%%%%%%%%%*- Total net gain: 18.85 4.7%
|
|
182
|
+
:++: :+%%%%%%#-. Growth: 53.07 13.27%
|
|
184
183
|
:++: .%%%%%#= Number of trades closed: 2
|
|
185
184
|
:++: .#%%%%%#*= Number of trades open(end of backtest): 2
|
|
186
185
|
:++- :%%%%%%%%%+= Percentage positive trades: 75.0%
|
|
187
186
|
.++- -%%%%%%%%%%%+= Percentage negative trades: 25.0%
|
|
188
|
-
.++- .%%%%%%%%%%%%%+= Average trade size: 98.
|
|
189
|
-
.++- *%%%%%%%%%%%%%*+: Average trade duration:
|
|
187
|
+
.++- .%%%%%%%%%%%%%+= Average trade size: 98.79 EUR
|
|
188
|
+
.++- *%%%%%%%%%%%%%*+: Average trade duration: 189.0 hours
|
|
190
189
|
.++- %%%%%%%%%%%%%%#+=
|
|
191
190
|
=++........:::%%%%%%%%%%%%%%*+-
|
|
192
191
|
.=++++++++++**#%%%%%%%%%%%%%++.
|
|
193
192
|
|
|
194
193
|
Positions overview
|
|
195
194
|
╭────────────┬──────────┬──────────────────────┬───────────────────────┬──────────────┬───────────────┬───────────────────────────┬────────────────┬───────────────╮
|
|
196
|
-
│ Position │ Amount │ Pending buy amount │ Pending sell amount │ Cost (EUR) │
|
|
195
|
+
│ Position │ Amount │ Pending buy amount │ Pending sell amount │ Cost (EUR) │ Value (EUR) │ Percentage of portfolio │ Growth (EUR) │ Growth_rate │
|
|
197
196
|
├────────────┼──────────┼──────────────────────┼───────────────────────┼──────────────┼───────────────┼───────────────────────────┼────────────────┼───────────────┤
|
|
198
|
-
│ EUR │
|
|
197
|
+
│ EUR │ 253.09 │ 0 │ 0 │ 253.09 │ 253.09 EUR │ 55.86% │ 0.00 EUR │ 0.00% │
|
|
199
198
|
├────────────┼──────────┼──────────────────────┼───────────────────────┼──────────────┼───────────────┼───────────────────────────┼────────────────┼───────────────┤
|
|
200
|
-
│ BTC │ 0.0028 │ 0 │ 0 │
|
|
199
|
+
│ BTC │ 0.0028 │ 0 │ 0 │ 97.34 │ 99.80 EUR │ 22.03% │ 2.46 EUR │ 2.52% │
|
|
201
200
|
├────────────┼──────────┼──────────────────────┼───────────────────────┼──────────────┼───────────────┼───────────────────────────┼────────────────┼───────────────┤
|
|
202
|
-
│ DOT │ 19.
|
|
201
|
+
│ DOT │ 19.9521 │ 0 │ 0 │ 100 │ 100.18 EUR │ 22.11% │ 0.18 EUR │ 0.18% │
|
|
203
202
|
╰────────────┴──────────┴──────────────────────┴───────────────────────┴──────────────┴───────────────┴───────────────────────────┴────────────────┴───────────────╯
|
|
204
203
|
Trades overview
|
|
205
|
-
|
|
206
|
-
│ Pair (Trade id) │ Status
|
|
207
|
-
|
|
208
|
-
│ BTC/EUR (1) │ CLOSED
|
|
209
|
-
|
|
210
|
-
│ DOT/EUR (2) │ CLOSED, TP │
|
|
211
|
-
|
|
212
|
-
│ BTC/EUR (3) │ CLOSED
|
|
213
|
-
|
|
214
|
-
│ BTC/EUR (4) │ CLOSED, TP │ 3.
|
|
215
|
-
|
|
216
|
-
│ BTC/EUR (5) │ OPEN
|
|
217
|
-
|
|
218
|
-
│ DOT/EUR (6) │ OPEN
|
|
219
|
-
|
|
204
|
+
╭───────────────────┬────────────────┬───────────────────────┬───────────────────────────┬──────────────────┬──────────────────┬─────────────┬────────────────────┬──────────────────────────────┬─────────────────────────────────╮
|
|
205
|
+
│ Pair (Trade id) │ Status │ Amount (remaining) │ Net gain (EUR) │ Open date │ Close date │ Duration │ Open price (EUR) │ Close price's (EUR) │ High water mark │
|
|
206
|
+
├───────────────────┼────────────────┼───────────────────────┼───────────────────────────┼──────────────────┼──────────────────┼─────────────┼────────────────────┼──────────────────────────────┼─────────────────────────────────┤
|
|
207
|
+
│ BTC/EUR (1) │ CLOSED │ 0.0040 (0.0000) BTC │ 1.98 (2.02%) │ 2023-09-13 14:00 │ 2023-09-22 12:00 │ 214.0 hours │ 24490.4 │ 24984.93 │ 25703.77 EUR (2023-09-19 14:00) │
|
|
208
|
+
├───────────────────┼────────────────┼───────────────────────┼───────────────────────────┼──────────────────┼──────────────────┼─────────────┼────────────────────┼──────────────────────────────┼─────────────────────────────────┤
|
|
209
|
+
│ DOT/EUR (2) │ CLOSED, SL, TP │ 24.7463 (0.0000) DOT │ 13.53 (13.53%) │ 2023-10-30 04:00 │ 2023-11-15 02:00 │ 382.0 hours │ 4.04 │ 4.23, 4.38, 4.24, 4.25, 4.79 │ 5.45 EUR (2023-11-12 10:00) │
|
|
210
|
+
├───────────────────┼────────────────┼───────────────────────┼───────────────────────────┼──────────────────┼──────────────────┼─────────────┼────────────────────┼──────────────────────────────┼─────────────────────────────────┤
|
|
211
|
+
│ BTC/EUR (3) │ CLOSED │ 0.0030 (0.0000) BTC │ -0.20 (-0.20%) │ 2023-11-06 14:00 │ 2023-11-06 16:00 │ 2.0 hours │ 32691.5 │ 32625.87 │ 32625.87 EUR (2023-11-06 16:00) │
|
|
212
|
+
├───────────────────┼────────────────┼───────────────────────┼───────────────────────────┼──────────────────┼──────────────────┼─────────────┼────────────────────┼──────────────────────────────┼─────────────────────────────────┤
|
|
213
|
+
│ BTC/EUR (4) │ CLOSED, TP │ 0.0030 (0.0000) BTC │ 3.54 (3.56%) │ 2023-11-07 22:00 │ 2023-11-14 12:00 │ 158.0 hours │ 33126.6 │ 34746.64, 33865.42 │ 34967.12 EUR (2023-11-10 22:00) │
|
|
214
|
+
├───────────────────┼────────────────┼───────────────────────┼───────────────────────────┼──────────────────┼──────────────────┼─────────────┼────────────────────┼──────────────────────────────┼─────────────────────────────────┤
|
|
215
|
+
│ BTC/EUR (5) │ OPEN │ 0.0028 (0.0028) BTC │ 2.46 (2.52%) (unrealized) │ 2023-11-29 12:00 │ │ 60.0 hours │ 34765.9 │ │ 35679.63 EUR (2023-12-01 16:00) │
|
|
216
|
+
├───────────────────┼────────────────┼───────────────────────┼───────────────────────────┼──────────────────┼──────────────────┼─────────────┼────────────────────┼──────────────────────────────┼─────────────────────────────────┤
|
|
217
|
+
│ DOT/EUR (6) │ OPEN │ 19.9521 (19.9521) DOT │ 0.18 (0.18%) (unrealized) │ 2023-11-30 18:00 │ │ 30.0 hours │ 5.01 │ │ 5.05 EUR (2023-11-30 20:00) │
|
|
218
|
+
╰───────────────────┴────────────────┴───────────────────────┴───────────────────────────┴──────────────────┴──────────────────┴─────────────┴────────────────────┴──────────────────────────────┴─────────────────────────────────╯
|
|
220
219
|
Stop losses overview
|
|
221
|
-
|
|
222
|
-
│ Trade (Trade id) │ Status │ Active │ Type
|
|
223
|
-
|
|
224
|
-
│ BTC/EUR (1) │ NOT TRIGGERED │
|
|
225
|
-
|
|
226
|
-
│ DOT/EUR (2) │
|
|
227
|
-
|
|
228
|
-
│ BTC/EUR (3) │ NOT TRIGGERED │
|
|
229
|
-
|
|
230
|
-
│ BTC/EUR (4) │ NOT TRIGGERED │
|
|
231
|
-
|
|
232
|
-
│ BTC/EUR (5) │ NOT TRIGGERED │ True │
|
|
233
|
-
|
|
234
|
-
│ DOT/EUR (6) │ NOT TRIGGERED │ True │
|
|
235
|
-
|
|
220
|
+
╭────────────────────┬───────────────┬──────────┬──────────┬─────────────────────────────────┬──────────────┬────────────────┬───────────────────────────────┬──────────────┬───────────┬───────────────╮
|
|
221
|
+
│ Trade (Trade id) │ Status │ Active │ Type │ Stop Loss (Initial Stop Loss) │ Open price │ Sell price's │ High water mark │ Percentage │ Size │ Sold amount │
|
|
222
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────┼──────────────┼────────────────┼───────────────────────────────┼──────────────┼───────────┼───────────────┤
|
|
223
|
+
│ BTC/EUR (1) │ NOT TRIGGERED │ False │ TRAILING │ 24418.58 (23265.85) (5.0)% EUR │ 24490.37 EUR │ None │ 25703.77 EUR 2023-09-19 14:00 │ 50.0% │ 0.00 BTC │ │
|
|
224
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────┼──────────────┼────────────────┼───────────────────────────────┼──────────────┼───────────┼───────────────┤
|
|
225
|
+
│ DOT/EUR (2) │ TRIGGERED │ False │ TRAILING │ 4.28 (3.84) (5.0)% EUR │ 4.04 EUR │ 4.239,4.254 │ 4.51 EUR 2023-11-01 20:00 │ 50.0% │ 12.37 DOT │ 12.3732 DOT │
|
|
226
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────┼──────────────┼────────────────┼───────────────────────────────┼──────────────┼───────────┼───────────────┤
|
|
227
|
+
│ BTC/EUR (3) │ NOT TRIGGERED │ False │ TRAILING │ 31056.93 (31056.93) (5.0)% EUR │ 32691.51 EUR │ None │ 32691.51 EUR │ 50.0% │ 0.00 BTC │ │
|
|
228
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────┼──────────────┼────────────────┼───────────────────────────────┼──────────────┼───────────┼───────────────┤
|
|
229
|
+
│ BTC/EUR (4) │ NOT TRIGGERED │ False │ TRAILING │ 33218.76 (31470.27) (5.0)% EUR │ 33126.60 EUR │ None │ 34967.12 EUR 2023-11-10 22:00 │ 50.0% │ 0.00 BTC │ │
|
|
230
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────┼──────────────┼────────────────┼───────────────────────────────┼──────────────┼───────────┼───────────────┤
|
|
231
|
+
│ BTC/EUR (5) │ NOT TRIGGERED │ True │ TRAILING │ 33895.65 (33027.62) (5.0)% EUR │ 34765.92 EUR │ None │ 35679.63 EUR 2023-12-01 16:00 │ 50.0% │ 0.00 BTC │ │
|
|
232
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────┼──────────────┼────────────────┼───────────────────────────────┼──────────────┼───────────┼───────────────┤
|
|
233
|
+
│ DOT/EUR (6) │ NOT TRIGGERED │ True │ TRAILING │ 4.80 (4.76) (5.0)% EUR │ 5.01 EUR │ None │ 5.05 EUR 2023-11-30 20:00 │ 50.0% │ 9.98 DOT │ │
|
|
234
|
+
╰────────────────────┴───────────────┴──────────┴──────────┴─────────────────────────────────┴──────────────┴────────────────┴───────────────────────────────┴──────────────┴───────────┴───────────────╯
|
|
236
235
|
Take profits overview
|
|
237
|
-
|
|
238
|
-
│ Trade (Trade id) │ Status │ Active │ Type │ Take profit
|
|
239
|
-
|
|
240
|
-
│ BTC/EUR (1) │ TRIGGERED
|
|
241
|
-
|
|
242
|
-
│ BTC/EUR (1) │ NOT TRIGGERED │
|
|
243
|
-
|
|
244
|
-
│ DOT/EUR (2) │ TRIGGERED │ False │ TRAILING │
|
|
245
|
-
|
|
246
|
-
│ DOT/EUR (2) │ TRIGGERED │ False │ TRAILING │ 4.
|
|
247
|
-
|
|
248
|
-
│ BTC/EUR (3) │ NOT TRIGGERED │
|
|
249
|
-
|
|
250
|
-
│ BTC/EUR (3) │ NOT TRIGGERED │
|
|
251
|
-
|
|
252
|
-
│ BTC/EUR (4) │ TRIGGERED │ False │ TRAILING │
|
|
253
|
-
|
|
254
|
-
│ BTC/EUR (4) │ NOT TRIGGERED │
|
|
255
|
-
|
|
256
|
-
│ BTC/EUR (5) │ NOT TRIGGERED │ True │ TRAILING │
|
|
257
|
-
|
|
258
|
-
│ BTC/EUR (5) │ NOT TRIGGERED │ True │ TRAILING │
|
|
259
|
-
|
|
260
|
-
│ DOT/EUR (6) │ NOT TRIGGERED │ True │ TRAILING │ 5.
|
|
261
|
-
|
|
262
|
-
│ DOT/EUR (6) │ NOT TRIGGERED │ True │ TRAILING │ 5.
|
|
263
|
-
|
|
236
|
+
╭────────────────────┬───────────────┬──────────┬──────────┬─────────────────────────────────────┬──────────────┬────────────────┬─────────────────────────────────┬──────────────┬─────────────┬───────────────╮
|
|
237
|
+
│ Trade (Trade id) │ Status │ Active │ Type │ Take profit (Initial Take Profit) │ Open price │ Sell price's │ High water mark │ Percentage │ Size │ Sold amount │
|
|
238
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
239
|
+
│ BTC/EUR (1) │ NOT TRIGGERED │ False │ TRAILING │ 25714.89 (25714.89) (5.0)% EUR │ 24490.37 EUR │ None │ │ 50.0% │ 0.0020 BTC │ │
|
|
240
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
241
|
+
│ BTC/EUR (1) │ NOT TRIGGERED │ False │ TRAILING │ 26939.41 (26939.41) (10.0)% EUR │ 24490.37 EUR │ None │ │ 20.0% │ 0.0008 BTC │ │
|
|
242
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
243
|
+
│ DOT/EUR (2) │ TRIGGERED │ False │ TRAILING │ 4.24 (4.24) (5.0)% EUR │ 4.04 EUR │ 4.233 │ 4.30 EUR (2023-10-31 00:00) │ 50.0% │ 12.3732 DOT │ 12.3732 DOT │
|
|
244
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
245
|
+
│ DOT/EUR (2) │ TRIGGERED │ False │ TRAILING │ 4.45 (4.45) (10.0)% EUR │ 4.04 EUR │ 4.377 │ 4.51 EUR (2023-11-01 20:00) │ 20.0% │ 4.9493 DOT │ 4.9493 DOT │
|
|
246
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
247
|
+
│ BTC/EUR (3) │ NOT TRIGGERED │ False │ TRAILING │ 34326.09 (34326.09) (5.0)% EUR │ 32691.51 EUR │ None │ │ 50.0% │ 0.0015 BTC │ │
|
|
248
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
249
|
+
│ BTC/EUR (3) │ NOT TRIGGERED │ False │ TRAILING │ 35960.66 (35960.66) (10.0)% EUR │ 32691.51 EUR │ None │ │ 20.0% │ 0.0006 BTC │ │
|
|
250
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
251
|
+
│ BTC/EUR (4) │ TRIGGERED │ False │ TRAILING │ 34782.93 (34782.93) (5.0)% EUR │ 33126.60 EUR │ 34746.64 │ 34967.12 EUR (2023-11-10 22:00) │ 50.0% │ 0.0015 BTC │ 0.0015 BTC │
|
|
252
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
253
|
+
│ BTC/EUR (4) │ NOT TRIGGERED │ False │ TRAILING │ 36439.26 (36439.26) (10.0)% EUR │ 33126.60 EUR │ None │ │ 20.0% │ 0.0006 BTC │ │
|
|
254
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
255
|
+
│ BTC/EUR (5) │ NOT TRIGGERED │ True │ TRAILING │ 36504.22 (36504.22) (5.0)% EUR │ 34765.92 EUR │ None │ │ 50.0% │ 0.0014 BTC │ │
|
|
256
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
257
|
+
│ BTC/EUR (5) │ NOT TRIGGERED │ True │ TRAILING │ 38242.51 (38242.51) (10.0)% EUR │ 34765.92 EUR │ None │ │ 20.0% │ 0.0006 BTC │ │
|
|
258
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
259
|
+
│ DOT/EUR (6) │ NOT TRIGGERED │ True │ TRAILING │ 5.26 (5.26) (5.0)% EUR │ 5.01 EUR │ None │ │ 50.0% │ 9.9761 DOT │ │
|
|
260
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
261
|
+
│ DOT/EUR (6) │ NOT TRIGGERED │ True │ TRAILING │ 5.51 (5.51) (10.0)% EUR │ 5.01 EUR │ None │ │ 20.0% │ 3.9904 DOT │ │
|
|
262
|
+
╰────────────────────┴───────────────┴──────────┴──────────┴─────────────────────────────────────┴──────────────┴────────────────┴─────────────────────────────────┴──────────────┴─────────────┴───────────────╯
|
|
264
263
|
```
|
|
265
264
|
|
|
266
265
|
### Backtest experiments
|
|
@@ -131,98 +131,97 @@ For example if you run the [moving average example trading bot](./examples/backt
|
|
|
131
131
|
you will get the following backtesting report:
|
|
132
132
|
|
|
133
133
|
```bash
|
|
134
|
-
|
|
135
134
|
:%%%#+- .=*#%%% Backtest report
|
|
136
135
|
*%%%%%%%+------=*%%%%%%%- ---------------------------
|
|
137
136
|
*%%%%%%%%%%%%%%%%%%%%%%%- Start date: 2023-08-24 00:00:00
|
|
138
137
|
.%%%%%%%%%%%%%%%%%%%%%%# End date: 2023-12-02 00:00:00
|
|
139
138
|
#%%%####%%%%%%%%**#%%%+ Number of days: 100
|
|
140
139
|
.:-+*%%%%- -+..#%%%+.+- +%%%#*=-: Number of runs: 1201
|
|
141
|
-
.:-=*%%%%. += .%%# -+.-%%%%=-:.. Number of orders:
|
|
140
|
+
.:-=*%%%%. += .%%# -+.-%%%%=-:.. Number of orders: 15
|
|
142
141
|
.:=+#%%%%%*###%%%%#*+#%%%%%%*+-: Initial balance: 400.0
|
|
143
|
-
+%%%%%%%%%%%%%%%%%%%= Final balance:
|
|
144
|
-
:++ .=#%%%%%%%%%%%%%*- Total net gain:
|
|
145
|
-
:++: :+%%%%%%#-. Growth:
|
|
142
|
+
+%%%%%%%%%%%%%%%%%%%= Final balance: 453.07
|
|
143
|
+
:++ .=#%%%%%%%%%%%%%*- Total net gain: 18.85 4.7%
|
|
144
|
+
:++: :+%%%%%%#-. Growth: 53.07 13.27%
|
|
146
145
|
:++: .%%%%%#= Number of trades closed: 2
|
|
147
146
|
:++: .#%%%%%#*= Number of trades open(end of backtest): 2
|
|
148
147
|
:++- :%%%%%%%%%+= Percentage positive trades: 75.0%
|
|
149
148
|
.++- -%%%%%%%%%%%+= Percentage negative trades: 25.0%
|
|
150
|
-
.++- .%%%%%%%%%%%%%+= Average trade size: 98.
|
|
151
|
-
.++- *%%%%%%%%%%%%%*+: Average trade duration:
|
|
149
|
+
.++- .%%%%%%%%%%%%%+= Average trade size: 98.79 EUR
|
|
150
|
+
.++- *%%%%%%%%%%%%%*+: Average trade duration: 189.0 hours
|
|
152
151
|
.++- %%%%%%%%%%%%%%#+=
|
|
153
152
|
=++........:::%%%%%%%%%%%%%%*+-
|
|
154
153
|
.=++++++++++**#%%%%%%%%%%%%%++.
|
|
155
154
|
|
|
156
155
|
Positions overview
|
|
157
156
|
╭────────────┬──────────┬──────────────────────┬───────────────────────┬──────────────┬───────────────┬───────────────────────────┬────────────────┬───────────────╮
|
|
158
|
-
│ Position │ Amount │ Pending buy amount │ Pending sell amount │ Cost (EUR) │
|
|
157
|
+
│ Position │ Amount │ Pending buy amount │ Pending sell amount │ Cost (EUR) │ Value (EUR) │ Percentage of portfolio │ Growth (EUR) │ Growth_rate │
|
|
159
158
|
├────────────┼──────────┼──────────────────────┼───────────────────────┼──────────────┼───────────────┼───────────────────────────┼────────────────┼───────────────┤
|
|
160
|
-
│ EUR │
|
|
159
|
+
│ EUR │ 253.09 │ 0 │ 0 │ 253.09 │ 253.09 EUR │ 55.86% │ 0.00 EUR │ 0.00% │
|
|
161
160
|
├────────────┼──────────┼──────────────────────┼───────────────────────┼──────────────┼───────────────┼───────────────────────────┼────────────────┼───────────────┤
|
|
162
|
-
│ BTC │ 0.0028 │ 0 │ 0 │
|
|
161
|
+
│ BTC │ 0.0028 │ 0 │ 0 │ 97.34 │ 99.80 EUR │ 22.03% │ 2.46 EUR │ 2.52% │
|
|
163
162
|
├────────────┼──────────┼──────────────────────┼───────────────────────┼──────────────┼───────────────┼───────────────────────────┼────────────────┼───────────────┤
|
|
164
|
-
│ DOT │ 19.
|
|
163
|
+
│ DOT │ 19.9521 │ 0 │ 0 │ 100 │ 100.18 EUR │ 22.11% │ 0.18 EUR │ 0.18% │
|
|
165
164
|
╰────────────┴──────────┴──────────────────────┴───────────────────────┴──────────────┴───────────────┴───────────────────────────┴────────────────┴───────────────╯
|
|
166
165
|
Trades overview
|
|
167
|
-
|
|
168
|
-
│ Pair (Trade id) │ Status
|
|
169
|
-
|
|
170
|
-
│ BTC/EUR (1) │ CLOSED
|
|
171
|
-
|
|
172
|
-
│ DOT/EUR (2) │ CLOSED, TP │
|
|
173
|
-
|
|
174
|
-
│ BTC/EUR (3) │ CLOSED
|
|
175
|
-
|
|
176
|
-
│ BTC/EUR (4) │ CLOSED, TP │ 3.
|
|
177
|
-
|
|
178
|
-
│ BTC/EUR (5) │ OPEN
|
|
179
|
-
|
|
180
|
-
│ DOT/EUR (6) │ OPEN
|
|
181
|
-
|
|
166
|
+
╭───────────────────┬────────────────┬───────────────────────┬───────────────────────────┬──────────────────┬──────────────────┬─────────────┬────────────────────┬──────────────────────────────┬─────────────────────────────────╮
|
|
167
|
+
│ Pair (Trade id) │ Status │ Amount (remaining) │ Net gain (EUR) │ Open date │ Close date │ Duration │ Open price (EUR) │ Close price's (EUR) │ High water mark │
|
|
168
|
+
├───────────────────┼────────────────┼───────────────────────┼───────────────────────────┼──────────────────┼──────────────────┼─────────────┼────────────────────┼──────────────────────────────┼─────────────────────────────────┤
|
|
169
|
+
│ BTC/EUR (1) │ CLOSED │ 0.0040 (0.0000) BTC │ 1.98 (2.02%) │ 2023-09-13 14:00 │ 2023-09-22 12:00 │ 214.0 hours │ 24490.4 │ 24984.93 │ 25703.77 EUR (2023-09-19 14:00) │
|
|
170
|
+
├───────────────────┼────────────────┼───────────────────────┼───────────────────────────┼──────────────────┼──────────────────┼─────────────┼────────────────────┼──────────────────────────────┼─────────────────────────────────┤
|
|
171
|
+
│ DOT/EUR (2) │ CLOSED, SL, TP │ 24.7463 (0.0000) DOT │ 13.53 (13.53%) │ 2023-10-30 04:00 │ 2023-11-15 02:00 │ 382.0 hours │ 4.04 │ 4.23, 4.38, 4.24, 4.25, 4.79 │ 5.45 EUR (2023-11-12 10:00) │
|
|
172
|
+
├───────────────────┼────────────────┼───────────────────────┼───────────────────────────┼──────────────────┼──────────────────┼─────────────┼────────────────────┼──────────────────────────────┼─────────────────────────────────┤
|
|
173
|
+
│ BTC/EUR (3) │ CLOSED │ 0.0030 (0.0000) BTC │ -0.20 (-0.20%) │ 2023-11-06 14:00 │ 2023-11-06 16:00 │ 2.0 hours │ 32691.5 │ 32625.87 │ 32625.87 EUR (2023-11-06 16:00) │
|
|
174
|
+
├───────────────────┼────────────────┼───────────────────────┼───────────────────────────┼──────────────────┼──────────────────┼─────────────┼────────────────────┼──────────────────────────────┼─────────────────────────────────┤
|
|
175
|
+
│ BTC/EUR (4) │ CLOSED, TP │ 0.0030 (0.0000) BTC │ 3.54 (3.56%) │ 2023-11-07 22:00 │ 2023-11-14 12:00 │ 158.0 hours │ 33126.6 │ 34746.64, 33865.42 │ 34967.12 EUR (2023-11-10 22:00) │
|
|
176
|
+
├───────────────────┼────────────────┼───────────────────────┼───────────────────────────┼──────────────────┼──────────────────┼─────────────┼────────────────────┼──────────────────────────────┼─────────────────────────────────┤
|
|
177
|
+
│ BTC/EUR (5) │ OPEN │ 0.0028 (0.0028) BTC │ 2.46 (2.52%) (unrealized) │ 2023-11-29 12:00 │ │ 60.0 hours │ 34765.9 │ │ 35679.63 EUR (2023-12-01 16:00) │
|
|
178
|
+
├───────────────────┼────────────────┼───────────────────────┼───────────────────────────┼──────────────────┼──────────────────┼─────────────┼────────────────────┼──────────────────────────────┼─────────────────────────────────┤
|
|
179
|
+
│ DOT/EUR (6) │ OPEN │ 19.9521 (19.9521) DOT │ 0.18 (0.18%) (unrealized) │ 2023-11-30 18:00 │ │ 30.0 hours │ 5.01 │ │ 5.05 EUR (2023-11-30 20:00) │
|
|
180
|
+
╰───────────────────┴────────────────┴───────────────────────┴───────────────────────────┴──────────────────┴──────────────────┴─────────────┴────────────────────┴──────────────────────────────┴─────────────────────────────────╯
|
|
182
181
|
Stop losses overview
|
|
183
|
-
|
|
184
|
-
│ Trade (Trade id) │ Status │ Active │ Type
|
|
185
|
-
|
|
186
|
-
│ BTC/EUR (1) │ NOT TRIGGERED │
|
|
187
|
-
|
|
188
|
-
│ DOT/EUR (2) │
|
|
189
|
-
|
|
190
|
-
│ BTC/EUR (3) │ NOT TRIGGERED │
|
|
191
|
-
|
|
192
|
-
│ BTC/EUR (4) │ NOT TRIGGERED │
|
|
193
|
-
|
|
194
|
-
│ BTC/EUR (5) │ NOT TRIGGERED │ True │
|
|
195
|
-
|
|
196
|
-
│ DOT/EUR (6) │ NOT TRIGGERED │ True │
|
|
197
|
-
|
|
182
|
+
╭────────────────────┬───────────────┬──────────┬──────────┬─────────────────────────────────┬──────────────┬────────────────┬───────────────────────────────┬──────────────┬───────────┬───────────────╮
|
|
183
|
+
│ Trade (Trade id) │ Status │ Active │ Type │ Stop Loss (Initial Stop Loss) │ Open price │ Sell price's │ High water mark │ Percentage │ Size │ Sold amount │
|
|
184
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────┼──────────────┼────────────────┼───────────────────────────────┼──────────────┼───────────┼───────────────┤
|
|
185
|
+
│ BTC/EUR (1) │ NOT TRIGGERED │ False │ TRAILING │ 24418.58 (23265.85) (5.0)% EUR │ 24490.37 EUR │ None │ 25703.77 EUR 2023-09-19 14:00 │ 50.0% │ 0.00 BTC │ │
|
|
186
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────┼──────────────┼────────────────┼───────────────────────────────┼──────────────┼───────────┼───────────────┤
|
|
187
|
+
│ DOT/EUR (2) │ TRIGGERED │ False │ TRAILING │ 4.28 (3.84) (5.0)% EUR │ 4.04 EUR │ 4.239,4.254 │ 4.51 EUR 2023-11-01 20:00 │ 50.0% │ 12.37 DOT │ 12.3732 DOT │
|
|
188
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────┼──────────────┼────────────────┼───────────────────────────────┼──────────────┼───────────┼───────────────┤
|
|
189
|
+
│ BTC/EUR (3) │ NOT TRIGGERED │ False │ TRAILING │ 31056.93 (31056.93) (5.0)% EUR │ 32691.51 EUR │ None │ 32691.51 EUR │ 50.0% │ 0.00 BTC │ │
|
|
190
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────┼──────────────┼────────────────┼───────────────────────────────┼──────────────┼───────────┼───────────────┤
|
|
191
|
+
│ BTC/EUR (4) │ NOT TRIGGERED │ False │ TRAILING │ 33218.76 (31470.27) (5.0)% EUR │ 33126.60 EUR │ None │ 34967.12 EUR 2023-11-10 22:00 │ 50.0% │ 0.00 BTC │ │
|
|
192
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────┼──────────────┼────────────────┼───────────────────────────────┼──────────────┼───────────┼───────────────┤
|
|
193
|
+
│ BTC/EUR (5) │ NOT TRIGGERED │ True │ TRAILING │ 33895.65 (33027.62) (5.0)% EUR │ 34765.92 EUR │ None │ 35679.63 EUR 2023-12-01 16:00 │ 50.0% │ 0.00 BTC │ │
|
|
194
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────┼──────────────┼────────────────┼───────────────────────────────┼──────────────┼───────────┼───────────────┤
|
|
195
|
+
│ DOT/EUR (6) │ NOT TRIGGERED │ True │ TRAILING │ 4.80 (4.76) (5.0)% EUR │ 5.01 EUR │ None │ 5.05 EUR 2023-11-30 20:00 │ 50.0% │ 9.98 DOT │ │
|
|
196
|
+
╰────────────────────┴───────────────┴──────────┴──────────┴─────────────────────────────────┴──────────────┴────────────────┴───────────────────────────────┴──────────────┴───────────┴───────────────╯
|
|
198
197
|
Take profits overview
|
|
199
|
-
|
|
200
|
-
│ Trade (Trade id) │ Status │ Active │ Type │ Take profit
|
|
201
|
-
|
|
202
|
-
│ BTC/EUR (1) │ TRIGGERED
|
|
203
|
-
|
|
204
|
-
│ BTC/EUR (1) │ NOT TRIGGERED │
|
|
205
|
-
|
|
206
|
-
│ DOT/EUR (2) │ TRIGGERED │ False │ TRAILING │
|
|
207
|
-
|
|
208
|
-
│ DOT/EUR (2) │ TRIGGERED │ False │ TRAILING │ 4.
|
|
209
|
-
|
|
210
|
-
│ BTC/EUR (3) │ NOT TRIGGERED │
|
|
211
|
-
|
|
212
|
-
│ BTC/EUR (3) │ NOT TRIGGERED │
|
|
213
|
-
|
|
214
|
-
│ BTC/EUR (4) │ TRIGGERED │ False │ TRAILING │
|
|
215
|
-
|
|
216
|
-
│ BTC/EUR (4) │ NOT TRIGGERED │
|
|
217
|
-
|
|
218
|
-
│ BTC/EUR (5) │ NOT TRIGGERED │ True │ TRAILING │
|
|
219
|
-
|
|
220
|
-
│ BTC/EUR (5) │ NOT TRIGGERED │ True │ TRAILING │
|
|
221
|
-
|
|
222
|
-
│ DOT/EUR (6) │ NOT TRIGGERED │ True │ TRAILING │ 5.
|
|
223
|
-
|
|
224
|
-
│ DOT/EUR (6) │ NOT TRIGGERED │ True │ TRAILING │ 5.
|
|
225
|
-
|
|
198
|
+
╭────────────────────┬───────────────┬──────────┬──────────┬─────────────────────────────────────┬──────────────┬────────────────┬─────────────────────────────────┬──────────────┬─────────────┬───────────────╮
|
|
199
|
+
│ Trade (Trade id) │ Status │ Active │ Type │ Take profit (Initial Take Profit) │ Open price │ Sell price's │ High water mark │ Percentage │ Size │ Sold amount │
|
|
200
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
201
|
+
│ BTC/EUR (1) │ NOT TRIGGERED │ False │ TRAILING │ 25714.89 (25714.89) (5.0)% EUR │ 24490.37 EUR │ None │ │ 50.0% │ 0.0020 BTC │ │
|
|
202
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
203
|
+
│ BTC/EUR (1) │ NOT TRIGGERED │ False │ TRAILING │ 26939.41 (26939.41) (10.0)% EUR │ 24490.37 EUR │ None │ │ 20.0% │ 0.0008 BTC │ │
|
|
204
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
205
|
+
│ DOT/EUR (2) │ TRIGGERED │ False │ TRAILING │ 4.24 (4.24) (5.0)% EUR │ 4.04 EUR │ 4.233 │ 4.30 EUR (2023-10-31 00:00) │ 50.0% │ 12.3732 DOT │ 12.3732 DOT │
|
|
206
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
207
|
+
│ DOT/EUR (2) │ TRIGGERED │ False │ TRAILING │ 4.45 (4.45) (10.0)% EUR │ 4.04 EUR │ 4.377 │ 4.51 EUR (2023-11-01 20:00) │ 20.0% │ 4.9493 DOT │ 4.9493 DOT │
|
|
208
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
209
|
+
│ BTC/EUR (3) │ NOT TRIGGERED │ False │ TRAILING │ 34326.09 (34326.09) (5.0)% EUR │ 32691.51 EUR │ None │ │ 50.0% │ 0.0015 BTC │ │
|
|
210
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
211
|
+
│ BTC/EUR (3) │ NOT TRIGGERED │ False │ TRAILING │ 35960.66 (35960.66) (10.0)% EUR │ 32691.51 EUR │ None │ │ 20.0% │ 0.0006 BTC │ │
|
|
212
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
213
|
+
│ BTC/EUR (4) │ TRIGGERED │ False │ TRAILING │ 34782.93 (34782.93) (5.0)% EUR │ 33126.60 EUR │ 34746.64 │ 34967.12 EUR (2023-11-10 22:00) │ 50.0% │ 0.0015 BTC │ 0.0015 BTC │
|
|
214
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
215
|
+
│ BTC/EUR (4) │ NOT TRIGGERED │ False │ TRAILING │ 36439.26 (36439.26) (10.0)% EUR │ 33126.60 EUR │ None │ │ 20.0% │ 0.0006 BTC │ │
|
|
216
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
217
|
+
│ BTC/EUR (5) │ NOT TRIGGERED │ True │ TRAILING │ 36504.22 (36504.22) (5.0)% EUR │ 34765.92 EUR │ None │ │ 50.0% │ 0.0014 BTC │ │
|
|
218
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
219
|
+
│ BTC/EUR (5) │ NOT TRIGGERED │ True │ TRAILING │ 38242.51 (38242.51) (10.0)% EUR │ 34765.92 EUR │ None │ │ 20.0% │ 0.0006 BTC │ │
|
|
220
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
221
|
+
│ DOT/EUR (6) │ NOT TRIGGERED │ True │ TRAILING │ 5.26 (5.26) (5.0)% EUR │ 5.01 EUR │ None │ │ 50.0% │ 9.9761 DOT │ │
|
|
222
|
+
├────────────────────┼───────────────┼──────────┼──────────┼─────────────────────────────────────┼──────────────┼────────────────┼─────────────────────────────────┼──────────────┼─────────────┼───────────────┤
|
|
223
|
+
│ DOT/EUR (6) │ NOT TRIGGERED │ True │ TRAILING │ 5.51 (5.51) (10.0)% EUR │ 5.01 EUR │ None │ │ 20.0% │ 3.9904 DOT │ │
|
|
224
|
+
╰────────────────────┴───────────────┴──────────┴──────────┴─────────────────────────────────────┴──────────────┴────────────────┴─────────────────────────────────┴──────────────┴─────────────┴───────────────╯
|
|
226
225
|
```
|
|
227
226
|
|
|
228
227
|
### Backtest experiments
|