Research Log
2026-02-12: Trade-Only Baseline Exploration
Objective
- Improve event-driven strategy quality under:
limit-onlyexecution- order latency =
0.3s - historical trade-only backtest (no full L2/orderbook stream)
Added strategies
baseline_regime_switch_microbaseline_flow_imbalance_pulse
Experiment A: 1-day slice
Command:
uv run atc report leaderboard \
--symbol ETH_JPY \
--start 2026-01-01 \
--end 2026-01-01 \
--strategy baseline_momentum_micro \
--strategy baseline_mean_reversion_micro \
--strategy baseline_regime_switch_micro \
--strategy baseline_flow_imbalance_pulse
Result summary (sorted by alpha_sharpe):
baseline_regime_switch_micro: sharpe-488.49, equity-171.97, turnover2.02baseline_momentum_micro: sharpe-642.49, equity-263.33, turnover3.42baseline_mean_reversion_micro: sharpe-645.02, equity-177.95, turnover2.90baseline_flow_imbalance_pulse: sharpe-652.92, equity-242.67, turnover3.18
Observation:
baseline_regime_switch_microreduced turnover and improved alpha sharpe versus existing momentum/reversion baselines on this day.
Experiment B: 7-day slice
Command:
uv run atc report leaderboard \
--symbol ETH_JPY \
--start 2026-01-01 \
--end 2026-01-07 \
--strategy baseline_momentum_micro \
--strategy baseline_mean_reversion_micro \
--strategy baseline_regime_switch_micro \
--strategy baseline_flow_imbalance_pulse
Result summary (sorted by alpha_sharpe):
baseline_regime_switch_micro: sharpe-646.75, equity-10130.27, turnover105.08baseline_mean_reversion_micro: sharpe-707.21, equity-9459.71, turnover117.24baseline_flow_imbalance_pulse: sharpe-708.73, equity-10801.95, turnover120.87baseline_momentum_micro: sharpe-768.32, equity-15107.35, turnover157.42
Observation:
- All tested trade-only baselines remain negative after latency-aware limit execution.
baseline_regime_switch_microis currently best by alpha sharpe and shows lower turnover.
Bottlenecks identified
- Trade-only historical data lacks orderbook microstructure needed by MM/queue imbalance class strategies.
- Order replacement is still frequent under high event rates.
- Signal-to-noise ratio is weak without stronger regime/time filters.
Next research steps
- Add strategy-level holding/cooldown policies that target lower turnover under event bursts.
- Introduce time-of-day gating (session-specific thresholds).
- Build walk-forward splits and optimize only on train windows.
- Start collecting forward WebSocket orderbook logs to unlock L2-aware models.
2026-02-12: Order Cadence Control (5-minute default)
Motivation
- Event-driven loop was submitting too frequently for practical operation.
- Desired operating style: continuous monitoring, but orders only every ~5 minutes to several hours.
Implementation
- Added
--min-order-interval-secto backtest and leaderboard commands. - Default set to
300seconds (5 minutes). - Strategy evaluation still runs for every event; only new submissions are throttled.
Results (same windows as above, 4-strategy subset)
1-day (2026-01-01):
- orders dropped from 200-300 range to ~60-130
- best alpha sharpe improved from about
-488to-299 - best final equity improved from about
-172to-16
7-day (2026-01-01 to 2026-01-07):
- orders dropped from ~11k-17k to ~1.3k-1.6k
- alpha sharpe improved from about
-647to around-239 - final equity improved materially (still negative)
Interpretation:
- Main issue was not only signal quality; execution cadence was too aggressive.
- Throttling makes behavior closer to intended short-term style and reduces over-trading loss.