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