← Quantery Blog

How often should a backtest rebalance?

September 19, 2026 · 8 min readbacktestingrebalancemethod

A backtest should rebalance as often as its thesis can receive information worth acting on, and no faster. A filing-driven screen will usually make sense with monthly checks. A thesis whose gate depends on price may need weekly checks. Whichever cadence you choose, rerun the same test at the neighboring cadence and keep the conclusion only if its direction survives.

The rebalance schedule is the clock that tells a backtest when to evaluate the rules again. It isn't the promised holding period. Checking weekly doesn't require selling everything weekly, and checking monthly doesn't require holding every position for one month. Cadence decides when the engine can notice a new pass or a gate failure. Entry and exit rules decide what happens afterward.

What does rebalance cadence actually change?

Suppose a company files a report that makes it pass your quality gate. A weekly schedule can recognize that change at its next weekly check. A monthly schedule waits for its next monthly check. Both use the same filing and the same equation. They can still enter on different market dates and at different prices.

The same timing issue applies on the way out. If a company stops passing, a schedule with more frequent checks can observe the failure sooner when on_gate_fail is enabled. If the company falls out and returns between two monthly checks, the monthly run may never record either transition. The weekly run may record a departure and a fresh qualification.

That difference reaches the whole report. It can alter qualification events, portfolio entries, exits, holding lengths, and the price attached to each decision. It can also change cross-sectional ranks. A percentile rank compares a company with the other eligible companies on that evaluation date, so a different date means a different comparison set even when the company's latest filing hasn't changed.

More checks don't make the data more current by themselves. They give the rules more opportunities to look at whatever data is available. If no relevant input changed, the extra evaluations may reproduce the same decision. If a price-sensitive ratio sits near a gate, the extra checks may turn ordinary market movement into repeated entries and exits.

Match the cadence to the thesis inputs

Start with the input that can change the claim. For a thesis built from return on assets, current ratio, and debt to assets, the decisive inputs come from filings. US issuers use Form 10-Q for the first three fiscal quarters, with the annual report covering the remaining period, as the SEC's Form 10-Q instructions explain. A weekly check can't manufacture a new balance sheet while the latest filing remains the same.

That points toward monthly as a sensible starting cadence for many fundamentals screens. It will observe newly public reports without checking the same statement values every few trading days. The filing date still matters: a period that ended earlier isn't available to the simulated investor until the report becomes public. Point-in-time data and filing-date alignment handle that boundary; rebalance cadence determines the next chance to act after it.

A mixed thesis needs more thought. Earnings yield combines an accounting numerator with a market-value denominator. The numerator changes with a filing. The denominator moves with price, debt, and cash inputs, though price usually does most of the moving between reports. A company can cross a valuation threshold without filing anything new. Weekly checks may therefore fit a claim about temporary price dislocations even when the underlying earnings figure is unchanged.

Now read the prediction. If the thesis says a cheap, cash-generative business tends to re-rate over a long holding window, reacting to every short-lived threshold crossing may have little connection to the claim. If the thesis says a sharp price move creates a short-lived setup, a monthly clock may be too coarse. The schedule belongs to the economic story as much as it belongs to the data source.

Cross-sectional rules add one more dependency. Percentile ranks compare each company with its current universe. Price changes across peers can rearrange those ranks between filings. If a top bucket is the gate, cadence controls how often the bucket is rebuilt. That is a real strategy choice. Write it down instead of letting a default make it for you.

Rebalance cadence and holding period do different jobs

The easiest way to muddle a backtest is to treat the observation clock and the holding rule as one setting. Keep them separate.

A monthly rebalance means the thesis is evaluated on monthly dates. A maximum hold says how long an opened position may remain. A gate-fail exit says whether a position closes when it no longer passes at a later evaluation. Those choices can produce long holds with regular checks, or short holds that end because the rule changed.

The shape below is illustrative, and the bundled templates are the reference for exact fields. Its numbers are proposed test parameters rather than factual claims.

backtest:
  rebalance: monthly
  reporting_lag_days: 1
  entry: next_close
  exit: { max_hold_months: 12, on_gate_fail: true }
  benchmarks: [SPY]

In that setup, the engine checks the thesis monthly, waits through the stated reporting lag, enters after the signal date, and can close on a later gate failure or at the maximum hold. The Greenblatt Magic Formula template uses this general structure because its business claim unfolds over a longer span while fresh filings and changing ranks still deserve regular checks.

Change rebalance without changing the exit block and you've isolated the observation clock. Change both at once and you won't know whether an altered result came from seeing signals sooner or holding them for a different length. The same control applies to the universe and benchmark. Choose the benchmark before the run, then leave it fixed while cadence is under examination.

Test the schedule instead of defending it

Run a baseline at the cadence your inputs and claim suggest. Then duplicate the test and change only the cadence. In Quantery that usually means comparing monthly with weekly while the thesis version, date range, universe, benchmark, reporting lag, and exit rules stay fixed.

Read the pair in layers:

If the direction flips, cadence is carrying the result. That doesn't automatically kill the thesis. It changes the thesis. You now have a timing claim that needs an economic explanation. The fundamentals rule didn't work under both schedules.

If the direction holds while the magnitude moves, keep the direction and distrust the headline return. Perturbing one backtest setting at a time is built for this exact reading. A result that survives both schedules has cleared one robustness check. It hasn't cleared different start dates, thresholds, universes, or market regimes.

Don't compare runs whose effective dates drift. Each result should use the benchmark line recorded inside that run, and the start and end settings should match. A few different trading dates caused by cadence are part of the test. An accidentally different test window is a second variable.

Read the event study beside the portfolio

A portfolio result mixes the signal with entry timing, exit rules, weighting, and the rebalance clock. An event study asks a narrower question: after a company newly qualified, how did it perform over fixed forward windows relative to the benchmark?

Use both views. If changing cadence transforms the portfolio result while qualification events show a similar forward pattern, portfolio timing may be doing much of the work. If the event pattern changes too, the cadence may be selecting a different kind of signal. A brief pass caught by a weekly check isn't the same event as a condition still present at month-end.

Event counts need restraint. Repeated qualifications from the same company share a business, and events clustered in one market episode share a regime. They aren't clean independent observations just because the report lists them separately. Inspect the events and their dates before treating a larger count as stronger evidence.

This is also why added and dropped names in two scans aren't a substitute for the backtest. A screen-run comparison explains membership changes, while a backtest applies the timing and holding rules needed to study subsequent performance.

Trading costs can veto a fast schedule

Quantery's backtest results are hypothetical and exclude trading costs. A faster evaluation schedule doesn't always create more trading, since a stable gate can keep producing the same answer. But when a rule sits near a cutoff, more frequent checks can create more position changes. Those are precisely the cases where an apparently improved gross return deserves suspicion.

The mechanism is plain. FINRA explains that funds incur transaction fees when executing buy and sell orders, and those fees are subtracted before returns are calculated. A backtest that excludes spreads and slippage won't impose that veto for you.

Look at position changes alongside the liquidity of the selected companies. If the weekly version gets its advantage from brief gate crossings in thinly traded names, the excluded-cost caveat is central to the result. If weekly and monthly produce nearly the same positions, the faster schedule may add computation without changing the economic test.

A defensible cadence has a reason and a stress test

Pick the slowest schedule that can observe the change your claim cares about. Specify the holding and gate-fail rules separately. Run the neighboring cadence with everything else fixed. Then record which part survived: direction, drawdown behavior, event pattern, or none of them.

The schedule shouldn't be whichever setting produced the prettier curve. It should be a rule you can explain before the run and challenge afterward. Quantery keeps that rule in the thesis, beside the rest of your assumptions, so you can change it and rerun the same question. The clock is yours too.

Want to try this on your own rules? Quantery is free for 14 days: the full app, no card required.

← All articles