Добавить SimulatedExecutionPolicy в backtest.Config для программного управления #8

Open
opened 2026-04-29 17:33:24 +00:00 by derfenix · 0 comments
Owner

Описание

Сейчас параметры симулированного исполнения (fill_ratio, commission_bps, spread_bps, slippage_bps) задаются статически в YAML и не могут быть изменены программно через pkg/backtest.Config. Оптимизатор не может включить их в геном, хотя они напрямую влияют на результат бэктеста.

Предлагаемое решение

Добавить SimulatedExecution *SimulatedExecutionSpec на уровень backtest.Config (рядом с Instruments):

type Config struct {
    ProviderToken string           `yaml:"provider_token"`
    Backtest      *BacktestBlock   `yaml:"backtest"`
    Paper         *PaperBlock      `yaml:"paper"`
    Instruments   []InstrumentSpec `yaml:"instruments"`

    // SimulatedExecution — параметры исполнения, применяемые ко всем
    // инструментам при backtest/paper режимах. Может быть переопределён
    // на уровне BacktestBlock.SimulatedExecution/PaperBlock.SimulatedExecution.
    SimulatedExecution *SimulatedExecutionSpec `yaml:"simulated_execution,omitempty"`
}

Важно: текущий materialize через config.LoadConfigFromYAML уже умеет парсить YAML с этими полями. Нужно только добавить поле в Config struct и убедиться, что оно корректно пробрасывается в simulatedExecutionPolicyFromConfig.

Затрагиваемые файлы

  • pkg/backtest/config.go — новое поле в Config
  • pkg/backtest/run.gosimulatedExecutionPolicyFromConfig учитывает Config-level политику
  • internal/config/ — если требуется доработка парсинга

Связи

  • Оптимизатор (strategy-optimizer) — после реализации сможет добавить гены для simulated execution
## Описание Сейчас параметры симулированного исполнения (`fill_ratio`, `commission_bps`, `spread_bps`, `slippage_bps`) задаются статически в YAML и не могут быть изменены программно через `pkg/backtest.Config`. Оптимизатор не может включить их в геном, хотя они напрямую влияют на результат бэктеста. ## Предлагаемое решение Добавить `SimulatedExecution *SimulatedExecutionSpec` на уровень `backtest.Config` (рядом с `Instruments`): ```go type Config struct { ProviderToken string `yaml:"provider_token"` Backtest *BacktestBlock `yaml:"backtest"` Paper *PaperBlock `yaml:"paper"` Instruments []InstrumentSpec `yaml:"instruments"` // SimulatedExecution — параметры исполнения, применяемые ко всем // инструментам при backtest/paper режимах. Может быть переопределён // на уровне BacktestBlock.SimulatedExecution/PaperBlock.SimulatedExecution. SimulatedExecution *SimulatedExecutionSpec `yaml:"simulated_execution,omitempty"` } ``` Важно: текущий `materialize` через `config.LoadConfigFromYAML` уже умеет парсить YAML с этими полями. Нужно только добавить поле в Config struct и убедиться, что оно корректно пробрасывается в `simulatedExecutionPolicyFromConfig`. ## Затрагиваемые файлы - `pkg/backtest/config.go` — новое поле в Config - `pkg/backtest/run.go` — `simulatedExecutionPolicyFromConfig` учитывает Config-level политику - `internal/config/` — если требуется доработка парсинга ## Связи - **Оптимизатор** (`strategy-optimizer`) — после реализации сможет добавить гены для simulated execution
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.

Dependencies

No dependencies set.

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