Quant Memo
Core

Matching Data Frequency to Signal Frequency

A dataset that updates quarterly cannot honestly produce a signal that changes every day, and forcing it to do so just relabels stale numbers as fresh ones.

Prerequisites: Choosing a Signal Horizon

A quarterly earnings-revision dataset updates four times a year. A daily trading signal needs a value every day. Somewhere in between, someone has to decide what the signal does on the 88 days out of 91 when nothing new has actually arrived — and that decision, more than any modeling choice, determines whether the signal is measuring real information or just repeating old news with a fresh timestamp.

When source data updates less often than the signal is sampled, the signal is really a step function: it holds a constant value between updates and jumps only when new data lands. Treat it that way explicitly, rather than pretending it moves daily.

The stale-fill step function

The common approach is a stale-fill, or last-observation-carried-forward: between two quarterly updates, the daily value used is simply whatever the most recent quarterly reading was.

xt=xτ(t),τ(t)=last update datetx_t = x_{\tau(t)}, \quad \tau(t) = \text{last update date} \le t

In words: today's value of the signal equals whatever the underlying data said on the most recent day it was actually updated, no matter how long ago that was. This is honest as long as the rest of the research pipeline knows the signal is a staircase and not a smooth series.

quarterly update dates (amber dots) — flat in between
The value only changes on the four update dates; every day in between is a repeat of the last known reading, not new information.

Worked example

A researcher builds a daily cross-sectional signal from quarterly consensus-EPS revisions and finds a Sharpe ratio of 1.4 in a naive daily backtest, rebalancing every day. When the same signal is instead rebalanced only when the underlying data actually updates — roughly every 60 trading days per name, staggered across the universe — turnover falls by a factor of 15 and the Sharpe ratio, net of realistic costs, drops to 0.6. The apparent daily edge was mostly the backtest rewarding itself for holding a static position and calling every unchanged day a fresh, independent bet.

What this means in practice

Match the rebalance frequency of a signal to the true update frequency of its slowest input, or explicitly blend a slow input with a genuinely fast one (like price) so the combined signal has a real reason to move daily. Going the other direction — down-sampling a fast feed to a slower cadence, say averaging tick data into weekly bars — throws away information but at least does no active harm.

A backtest that rebalances daily on quarterly-frequency data will report low apparent turnover cost per trade but an inflated trade count, because it is "trading" hundreds of days that carry zero new information. Sharpe ratios computed this way are frequently overstated.

Related concepts

Practice in interviews

Further reading

  • Grinold and Kahn, Active Portfolio Management, ch. 14 on information horizon
ShareTwitterLinkedIn