Implement: backtest merge futures — склейка свечей нескольких контрактов #16

Open
opened 2026-06-01 11:05:07 +00:00 by derfenix · 0 comments
Owner

Задача

Реализовать склейку свечей нескольких фьючерсных контрактов в сквозной поток для backtest.
Спецификация: docs/specs/backtest-continuous-contract.md

План

  • pkg/backtest/merge — BuildMergedSource, Config, MergedCandlesSource
  • Получение списка контрактов группы через FuturesProvider
  • Запрос свечей для каждого FIGI (через CandleLoader)
  • Обрезка по roll_date с перехлёстом (rollDate = near.LastTradingDay - overlap)
  • Склейка в MergedCandlesSource (domain.CandlesSource)
  • YAML backtest.merge_futures + валидация (ticker_root обязателен, overlap_days >= 1)
  • Интеграция в backtest runner (pkg/backtest/run.go через ContainerBuilder)
  • Fallback при ошибке merge (логирует и использует single-contract)
  • Лог с информацией о склейке (контракты, свечи)
  • Тесты: merge двух контрактов, один контракт, пустое окно, пустой ticker_root, граничные даты
## Задача Реализовать склейку свечей нескольких фьючерсных контрактов в сквозной поток для backtest. Спецификация: [docs/specs/backtest-continuous-contract.md](https://git.derfenix.pro/trading/tradebot-ng/src/branch/master/docs/specs/backtest-continuous-contract.md) ## План ✅ - [x] pkg/backtest/merge — BuildMergedSource, Config, MergedCandlesSource - [x] Получение списка контрактов группы через FuturesProvider - [x] Запрос свечей для каждого FIGI (через CandleLoader) - [x] Обрезка по roll_date с перехлёстом (rollDate = near.LastTradingDay - overlap) - [x] Склейка в MergedCandlesSource (domain.CandlesSource) - [x] YAML backtest.merge_futures + валидация (ticker_root обязателен, overlap_days >= 1) - [x] Интеграция в backtest runner (pkg/backtest/run.go через ContainerBuilder) - [x] Fallback при ошибке merge (логирует и использует single-contract) - [x] Лог с информацией о склейке (контракты, свечи) - [x] Тесты: merge двух контрактов, один контракт, пустое окно, пустой ticker_root, граничные даты
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
trading/tradebot-ng#16
No description provided.