ml4t-horizon-design
Installation
SKILL.md
Horizon Design
An arbitrary 1-day horizon forces daily rebalancing, which costs 2-5% annually in transaction costs. If the signal's IC peaks at 20 days, you are paying for turnover that destroys the edge.
The Problem
The prediction horizon determines everything downstream: label construction, feature relevance, turnover, and whether transaction costs leave any alpha. Choosing it arbitrarily - or defaulting to "1 day because that is what everyone uses" - misaligns the model with the actual signal dynamics.
The Pattern
WRONG
import numpy as np
# Arbitrary 1-day horizon - no evidence this matches the signal
labels = np.roll(returns, -1) # forward 1-day return as label
# Result: high turnover, transaction costs eat the edge