最終更新 2 days ago

修正履歴 6b386d62922197c860cabac9334119b7b8c78f6d

1.log Raw
1❯ vitest run src/mastra/super/skills/backtest-runner/skill.spec.ts:119
2
3 RUN v4.0.16 /home/dex/Документы/Work/santiment-ai/strategy-agent
4
5
6⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Suites 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
7
8 FAIL src/mastra/super/skills/backtest-runner/skill.spec.ts [ src/mastra/super/skills/backtest-runner/skill.spec.ts ]
9Error: No test found in src/mastra/super/skills/backtest-runner/skill.spec.ts in line 119
10⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯
11
12
13 Test Files 1 failed | 1 skipped (1)
14 Tests 2 skipped (2)
15 Start at 14:55:20
16 Duration 624ms (transform 148ms, setup 353ms, import 158ms, tests 0ms, environment 0ms)
17
18
19~/Документы/Work/santiment-ai/strategy-agent master*
20❯ vitest run src/mastra/super/skills/backtest-runner/skill.spec.ts:119
21~/Документы/Work/santiment-ai/strategy-agent master*
22❯ vitest run src/mastra/super/skills/backtest-runner/skill.spec.ts:119
23
24 RUN v4.0.16 /home/dex/Документы/Work/santiment-ai/strategy-agent
25
26stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:304:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
27[Isolation] Environment prepared for run 861f6d55-71d7-4fb7-bec3-1852f3f713ed
28
29stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:304:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
30[RunBacktest] Enforcing config overrides: {
31 trading_mode: 'futures',
32 margin_mode: 'isolated',
33 dataformat_ohlcv: 'json',
34 dataformat_trades: 'json'
35}
36
37stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:304:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
38[DataFetcher] Downloading 1 pairs...
39
40stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:304:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
41[DataFetcher] Completed. Processed: 1
42
43stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:304:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
44Checking/Rebuilding Docker image "mastra-freqtrade:latest"...
45Docker command: cd /home/dex/Документы/Work/santiment-ai/strategy-agent/docker/freqtrade && docker build -t mastra-freqtrade:latest .
46
47stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:304:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
48Sending build context to Docker daemon 221.2kB
49Step 1/7 : FROM freqtradeorg/freqtrade:stable
50 ---> dfd23153a7f2
51Step 2/7 : COPY requirements.txt /freqtrade/
52 ---> Using cache
53 ---> 2d950a4622c1
54Step 3/7 : RUN pip install --no-cache-dir -r /freqtrade/requirements.txt
55 ---> Using cache
56 ---> 298f67123821
57Step 4/7 : COPY add_pair.py /freqtrade/add_pair.py
58 ---> Using cache
59 ---> e3274112fd45
60Step 5/7 : COPY pairs.json /freqtrade/pairs.json
61 ---> Using cache
62 ---> d4fc1270df5a
63Step 6/7 : COPY exchange.py /freqtrade/freqtrade/exchange/exchange.py
64 ---> Using cache
65 ---> 04e7579357c7
66Step 7/7 : RUN python /freqtrade/add_pair.py
67 ---> Using cache
68 ---> 2d26f279b9b1
69Successfully built 2d26f279b9b1
70Successfully tagged mastra-freqtrade:latest
71
72Docker image "mastra-freqtrade:latest" is ready ✅
73
74stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:304:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
75[DOCKER CMD] docker run --rm --memory 1g -v "/home/dex/Документы/Work/santiment-ai/strategy-agent/data/freqtrade_runs/861f6d55-71d7-4fb7-bec3-1852f3f713ed:/freqtrade/user_data" -v "/home/dex/Документы/Work/santiment-ai/strategy-agent/data/market_cache/binance:/freqtrade/user_data/data/binance" mastra-freqtrade:latest backtesting --config /freqtrade/user_data/config.json --strategy Strategy --timerange 20251201-20251230 --export trades --data-format-ohlcv json --logfile /freqtrade/user_data/logs/freqtrade.log
76
77stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:304:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
78!!!!!!!!!!! {
79 success: true,
80 runId: '861f6d55-71d7-4fb7-bec3-1852f3f713ed',
81 logTail: 'Result for strategy Strategy\n' +
82 ' BACKTESTING REPORT \n' +
83 '┏━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓\n' +
84 '┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃\n' +
85 '┡━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩\n' +
86 '│ BTC/USDT:USDT │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │\n' +
87 '│ TOTAL │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │\n' +
88 '└───────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘\n' +
89 ' LEFT OPEN TRADES REPORT \n' +
90 '┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓\n' +
91 '┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃\n' +
92 '┡━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩\n' +
93 '│ TOTAL │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │\n' +
94 '└───────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘\n' +
95 ' ENTER TAG STATS \n' +
96 '┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓\n' +
97 '┃ Enter Tag ┃ Entries ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃\n' +
98 '┡━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩\n' +
99 '│ TOTAL │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │\n' +
100 '└───────────┴─────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘\n' +
101 ' EXIT REASON STATS \n' +
102 '┏━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓\n' +
103 '┃ Exit Reason ┃ Exits ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃\n' +
104 '┡━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩\n' +
105 '│ TOTAL │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │\n' +
106 '└─────────────┴───────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘\n' +
107 ' MIXED TAG STATS \n' +
108 '┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓\n' +
109 '┃ Enter Tag ┃ Exit Reason ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃\n' +
110 '┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩\n' +
111 '│ TOTAL │ │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │\n' +
112 '└───────────┴─────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘\n' +
113 'No trades made. Your starting balance was 1000 USDT, and your stake was 100 USDT.\n' +
114 '\n' +
115 'Backtested 2025-12-09 00:00:00 -> 2025-12-30 00:00:00 | Max open trades : 1\n' +
116 ' STRATEGY SUMMARY \n' +
117 '┏━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n' +
118 '┃ Strategy ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃ Drawdown ┃\n' +
119 '┡━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n' +
120 '│ Strategy │ 0 │ 0.00 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │ 0 USDT 0.00% │\n' +
121 '└──────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┴───────────────┘\n' +
122 '2026-01-09 11:56:06,275 - freqtrade - INFO - freqtrade 2025.12\n' +
123 '2026-01-09 11:56:06,680 - numexpr.utils - INFO - NumExpr defaulting to 8 threads.\n' +
124 '2026-01-09 11:56:08,183 - freqtrade.configuration.load_config - INFO - Using config: /freqtrade/user_data/config.json ...\n' +
125 '2026-01-09 11:56:08,186 - freqtrade.loggers - INFO - Enabling colorized output.\n' +
126 '2026-01-09 11:56:08,187 - freqtrade.loggers - INFO - Logfile configured\n' +
127 '2026-01-09 11:56:08,187 - freqtrade.loggers - INFO - Verbosity set to 0\n' +
128 '2026-01-09 11:56:08,188 - freqtrade.configuration.configuration - INFO - Using max_open_trades: None ...\n' +
129 '2026-01-09 11:56:08,188 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20251201-20251230 ...\n' +
130 '2026-01-09 11:56:08,202 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...\n' +
131 '2026-01-09 11:56:08,202 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/binance ...\n' +
132 '2026-01-09 11:56:08,203 - freqtrade.configuration.configuration - INFO - Parameter --export detected: trades ...\n' +
133 '2026-01-09 11:56:08,204 - freqtrade.configuration.configuration - INFO - Parameter --cache=day detected ...\n' +
134 '2026-01-09 11:56:08,204 - freqtrade.configuration.configuration - INFO - Using "json" to store OHLCV data.\n' +
135 '2026-01-09 11:56:08,204 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20251201-20251230\n' +
136 '2026-01-09 11:56:08,206 - freqtrade.exchange.check_exchange - INFO - Checking exchange...\n' +
137 '2026-01-09 11:56:08,217 - freqtrade.exchange.check_exchange - INFO - Exchange "binance" is officially supported by the Freqtrade development team.\n' +
138 '2026-01-09 11:56:08,218 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.\n' +
139 '2026-01-09 11:56:08,218 - freqtrade.configuration.config_validation - INFO - Validating configuration ...\n' +
140 '2026-01-09 11:56:08,220 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Backtesting mode\n' +
141 '2026-01-09 11:56:08,220 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled\n' +
142 '2026-01-09 11:56:08,221 - freqtrade.exchange.exchange - INFO - Using CCXT 4.5.29\n' +
143 "2026-01-09 11:56:08,221 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'options': {'defaultType': 'swap'}}\n" +
144 "2026-01-09 11:56:08,230 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'options': {'defaultType': 'swap'}}\n" +
145 '2026-01-09 11:56:08,245 - freqtrade.exchange.exchange - INFO - Using Exchange "Binance"\n' +
146 "2026-01-09 11:56:10,655 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Binance'...\n" +
147 "2026-01-09 11:56:10,687 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy Strategy from '/freqtrade/user_data/strategies/strategy.py'...\n" +
148 '2026-01-09 11:56:10,688 - freqtrade.strategy.hyper - INFO - Found no parameter file.\n' +
149 "2026-01-09 11:56:10,688 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'timeframe' with value from the configuration: 1d.\n" +
150 "2026-01-09 11:56:10,689 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value from the configuration: USDT.\n" +
151 "2026-01-09 11:56:10,689 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value from the configuration: 100.\n" +
152 "2026-01-09 11:56:10,689 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {'0': 0.03}\n" +
153 '2026-01-09 11:56:10,689 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 1d\n' +
154 '2026-01-09 11:56:10,689 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.05\n' +
155 '2026-01-09 11:56:10,690 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: False\n' +
156 '2026-01-09 11:56:10,690 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.0\n' +
157 '2026-01-09 11:56:10,690 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: False\n' +
158 '2026-01-09 11:56:10,690 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: False\n' +
159 '2026-01-09 11:56:10,691 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True\n' +
160 "2026-01-09 11:56:10,691 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_types: {'entry': 'limit', 'exit': 'limit', 'stoploss': 'limit', 'stoploss_on_exchange': False, \n" +
161 "'stoploss_on_exchange_interval': 60}\n" +
162 "2026-01-09 11:56:10,691 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'GTC', 'exit': 'GTC'}\n" +
163 '2026-01-09 11:56:10,691 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT\n' +
164 '2026-01-09 11:56:10,691 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: 100\n' +
165 '2026-01-09 11:56:10,692 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 10\n' +
166 '2026-01-09 11:56:10,692 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True\n' +
167 '2026-01-09 11:56:10,692 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: False\n' +
168 '2026-01-09 11:56:10,692 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False\n' +
169 '2026-01-09 11:56:10,693 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.0\n' +
170 '2026-01-09 11:56:10,693 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False\n' +
171 '2026-01-09 11:56:1'... 23187 more characters
172}
173[Test Success] Run ID: 861f6d55-71d7-4fb7-bec3-1852f3f713ed
174
175stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:119:1 > Backtest Runner: Copytrading Strategy Test (Real Docker)
176[Test Info] Artifacts preserved for threadId: copytrading-test-1767959762677
177
178 ✓ src/mastra/super/skills/backtest-runner/skill.spec.ts (2 tests | 1 skipped) 18216ms
179 ↓ Backtest Runner: Full Integration Test (Real Docker) (1)
180 ↓ should successfully prepare env, fetch data, and run freqtrade via docker
181 ✓ Backtest Runner: Copytrading Strategy Test (Real Docker) (1)
182 ✓ should successfully prepare env, fetch data, and run freqtrade via docker 18215ms
183
184 Test Files 1 passed (1)
185 Tests 1 passed | 1 skipped (2)
186 Start at 14:56:02
187 Duration 18.73s (transform 102ms, setup 291ms, import 96ms, tests 18.22s, environment 0ms)
188
189
190~/Документы/Work/santiment-ai/strategy-agent master* 19s
191
2.log Raw
1❯ vitest run src/mastra/super/skills/backtest-runner/skill.spec.ts:119
2
3 RUN v4.0.16 /home/dex/Документы/Work/santiment-ai/strategy-agent
4
5stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:303:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
6[Isolation] Environment prepared for run 193121d8-f574-4840-bb61-534aa28b4bda
7
8stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:303:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
9[RunBacktest] Enforcing config overrides: {
10 trading_mode: 'futures',
11 margin_mode: 'isolated',
12 dataformat_ohlcv: 'json',
13 dataformat_trades: 'json'
14}
15
16stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:303:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
17[DataFetcher] Downloading 1 pairs...
18
19stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:303:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
20[DataFetcher] Completed. Processed: 1
21
22stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:303:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
23Checking/Rebuilding Docker image "mastra-freqtrade:latest"...
24Docker command: cd /home/dex/Документы/Work/santiment-ai/strategy-agent/docker/freqtrade && docker build -t mastra-freqtrade:latest .
25
26stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:303:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
27Sending build context to Docker daemon 221.2kB
28Step 1/7 : FROM freqtradeorg/freqtrade:stable
29 ---> dfd23153a7f2
30Step 2/7 : COPY requirements.txt /freqtrade/
31 ---> Using cache
32 ---> 2d950a4622c1
33Step 3/7 : RUN pip install --no-cache-dir -r /freqtrade/requirements.txt
34 ---> Using cache
35 ---> 298f67123821
36Step 4/7 : COPY add_pair.py /freqtrade/add_pair.py
37 ---> Using cache
38 ---> e3274112fd45
39Step 5/7 : COPY pairs.json /freqtrade/pairs.json
40 ---> Using cache
41 ---> d4fc1270df5a
42Step 6/7 : COPY exchange.py /freqtrade/freqtrade/exchange/exchange.py
43 ---> Using cache
44 ---> 04e7579357c7
45Step 7/7 : RUN python /freqtrade/add_pair.py
46 ---> Using cache
47 ---> 2d26f279b9b1
48Successfully built 2d26f279b9b1
49Successfully tagged mastra-freqtrade:latest
50
51Docker image "mastra-freqtrade:latest" is ready ✅
52
53stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:303:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
54[DOCKER CMD] docker run --rm --memory 1g -v "/home/dex/Документы/Work/santiment-ai/strategy-agent/data/freqtrade_runs/193121d8-f574-4840-bb61-534aa28b4bda:/freqtrade/user_data" -v "/home/dex/Документы/Work/santiment-ai/strategy-agent/data/market_cache/binance:/freqtrade/user_data/data/binance" mastra-freqtrade:latest backtesting --config /freqtrade/user_data/config.json --strategy Strategy --timerange 20251201-20251230 --export trades --data-format-ohlcv json --logfile /freqtrade/user_data/logs/freqtrade.log
55
56stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:303:3 > Backtest Runner: Copytrading Strategy Test (Real Docker) > should successfully prepare env, fetch data, and run freqtrade via docker
57!!!!!!!!!!! {
58 success: true,
59 runId: '193121d8-f574-4840-bb61-534aa28b4bda',
60 logTail: 'Result for strategy Strategy\n' +
61 ' BACKTESTING REPORT \n' +
62 '┏━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓\n' +
63 '┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃\n' +
64 '┡━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩\n' +
65 '│ BTC/USDT:USDT │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │\n' +
66 '│ TOTAL │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │\n' +
67 '└───────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘\n' +
68 ' LEFT OPEN TRADES REPORT \n' +
69 '┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓\n' +
70 '┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃\n' +
71 '┡━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩\n' +
72 '│ TOTAL │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │\n' +
73 '└───────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘\n' +
74 ' ENTER TAG STATS \n' +
75 '┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓\n' +
76 '┃ Enter Tag ┃ Entries ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃\n' +
77 '┡━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩\n' +
78 '│ TOTAL │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │\n' +
79 '└───────────┴─────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘\n' +
80 ' EXIT REASON STATS \n' +
81 '┏━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓\n' +
82 '┃ Exit Reason ┃ Exits ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃\n' +
83 '┡━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩\n' +
84 '│ TOTAL │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │\n' +
85 '└─────────────┴───────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘\n' +
86 ' MIXED TAG STATS \n' +
87 '┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓\n' +
88 '┃ Enter Tag ┃ Exit Reason ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃\n' +
89 '┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩\n' +
90 '│ TOTAL │ │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │\n' +
91 '└───────────┴─────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘\n' +
92 'No trades made. Your starting balance was 1000 USDT, and your stake was 100 USDT.\n' +
93 '\n' +
94 'Backtested 2025-12-09 00:00:00 -> 2025-12-30 00:00:00 | Max open trades : 1\n' +
95 ' STRATEGY SUMMARY \n' +
96 '┏━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n' +
97 '┃ Strategy ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃ Drawdown ┃\n' +
98 '┡━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n' +
99 '│ Strategy │ 0 │ 0.00 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │ 0 USDT 0.00% │\n' +
100 '└──────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┴───────────────┘\n' +
101 '2026-01-09 12:05:18,201 - freqtrade - INFO - freqtrade 2025.12\n' +
102 '2026-01-09 12:05:18,559 - numexpr.utils - INFO - NumExpr defaulting to 8 threads.\n' +
103 '2026-01-09 12:05:19,950 - freqtrade.configuration.load_config - INFO - Using config: /freqtrade/user_data/config.json ...\n' +
104 '2026-01-09 12:05:19,952 - freqtrade.loggers - INFO - Enabling colorized output.\n' +
105 '2026-01-09 12:05:19,953 - freqtrade.loggers - INFO - Logfile configured\n' +
106 '2026-01-09 12:05:19,953 - freqtrade.loggers - INFO - Verbosity set to 0\n' +
107 '2026-01-09 12:05:19,953 - freqtrade.configuration.configuration - INFO - Using max_open_trades: None ...\n' +
108 '2026-01-09 12:05:19,954 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20251201-20251230 ...\n' +
109 '2026-01-09 12:05:19,966 - freqtrade.configuration.configuration - INFO - Using user-data directory: /freqtrade/user_data ...\n' +
110 '2026-01-09 12:05:19,966 - freqtrade.configuration.configuration - INFO - Using data directory: /freqtrade/user_data/data/binance ...\n' +
111 '2026-01-09 12:05:19,967 - freqtrade.configuration.configuration - INFO - Parameter --export detected: trades ...\n' +
112 '2026-01-09 12:05:19,967 - freqtrade.configuration.configuration - INFO - Parameter --cache=day detected ...\n' +
113 '2026-01-09 12:05:19,967 - freqtrade.configuration.configuration - INFO - Using "json" to store OHLCV data.\n' +
114 '2026-01-09 12:05:19,968 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20251201-20251230\n' +
115 '2026-01-09 12:05:19,968 - freqtrade.exchange.check_exchange - INFO - Checking exchange...\n' +
116 '2026-01-09 12:05:19,978 - freqtrade.exchange.check_exchange - INFO - Exchange "binance" is officially supported by the Freqtrade development team.\n' +
117 '2026-01-09 12:05:19,979 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.\n' +
118 '2026-01-09 12:05:19,979 - freqtrade.configuration.config_validation - INFO - Validating configuration ...\n' +
119 '2026-01-09 12:05:19,981 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Backtesting mode\n' +
120 '2026-01-09 12:05:19,981 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled\n' +
121 '2026-01-09 12:05:19,982 - freqtrade.exchange.exchange - INFO - Using CCXT 4.5.29\n' +
122 "2026-01-09 12:05:19,982 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'options': {'defaultType': 'swap'}}\n" +
123 "2026-01-09 12:05:19,990 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'options': {'defaultType': 'swap'}}\n" +
124 '2026-01-09 12:05:20,001 - freqtrade.exchange.exchange - INFO - Using Exchange "Binance"\n' +
125 "2026-01-09 12:05:22,145 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Binance'...\n" +
126 "2026-01-09 12:05:22,180 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy Strategy from '/freqtrade/user_data/strategies/strategy.py'...\n" +
127 '2026-01-09 12:05:22,180 - freqtrade.strategy.hyper - INFO - Found no parameter file.\n' +
128 "2026-01-09 12:05:22,181 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'timeframe' with value from the configuration: 1d.\n" +
129 "2026-01-09 12:05:22,181 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value from the configuration: USDT.\n" +
130 "2026-01-09 12:05:22,181 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value from the configuration: 100.\n" +
131 "2026-01-09 12:05:22,182 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {'0': 0.03}\n" +
132 '2026-01-09 12:05:22,182 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 1d\n' +
133 '2026-01-09 12:05:22,182 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.05\n' +
134 '2026-01-09 12:05:22,183 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: False\n' +
135 '2026-01-09 12:05:22,183 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.0\n' +
136 '2026-01-09 12:05:22,183 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: False\n' +
137 '2026-01-09 12:05:22,183 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: False\n' +
138 '2026-01-09 12:05:22,183 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: True\n' +
139 "2026-01-09 12:05:22,184 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_types: {'entry': 'limit', 'exit': 'limit', 'stoploss': 'limit', 'stoploss_on_exchange': False, \n" +
140 "'stoploss_on_exchange_interval': 60}\n" +
141 "2026-01-09 12:05:22,184 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'GTC', 'exit': 'GTC'}\n" +
142 '2026-01-09 12:05:22,184 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT\n' +
143 '2026-01-09 12:05:22,185 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: 100\n' +
144 '2026-01-09 12:05:22,185 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 10\n' +
145 '2026-01-09 12:05:22,185 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True\n' +
146 '2026-01-09 12:05:22,185 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: False\n' +
147 '2026-01-09 12:05:22,185 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False\n' +
148 '2026-01-09 12:05:22,186 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.0\n' +
149 '2026-01-09 12:05:22,186 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False\n' +
150 '2026-01-09 12:05:2'... 23241 more characters
151}
152[Test Success] Run ID: 193121d8-f574-4840-bb61-534aa28b4bda
153
154stdout | src/mastra/super/skills/backtest-runner/skill.spec.ts:119:1 > Backtest Runner: Copytrading Strategy Test (Real Docker)
155[Test Info] Artifacts preserved for threadId: copytrading-test-1767960313204
156
157 ✓ src/mastra/super/skills/backtest-runner/skill.spec.ts (2 tests | 1 skipped) 28901ms
158 ↓ Backtest Runner: Full Integration Test (Real Docker) (1)
159 ↓ should successfully prepare env, fetch data, and run freqtrade via docker
160 ✓ Backtest Runner: Copytrading Strategy Test (Real Docker) (1)
161 ✓ should successfully prepare env, fetch data, and run freqtrade via docker 28900ms
162
163 Test Files 1 passed (1)
164 Tests 1 passed | 1 skipped (2)
165 Start at 15:05:10
166 Duration 32.01s (transform 109ms, setup 2.60s, import 88ms, tests 28.90s, environment 0ms)
167
168
169~/Документы/Work/santiment-ai/strategy-agent master* 32s
170
171~/Документы/Work/santiment-ai/strategy-agent master* 32s
172