Quant Companion candidate page

Strategy Invalidation Playbook

A practical test suite for proving a TradingView strategy is more than a pretty equity curve. The goal is not to make the strategy look good. The goal is to attack it until the weak parts confess.

Fresh example direction

Use a simple, public TradingView strategy export rather than PQN notebooks: for example, an RSI pullback strategy on SPY, QQQ, BTCUSD, or ES. Users only need the TradingView Strategy Tester export to begin.

  • Upload TradingView “List of Trades” CSV/XLSX into Quant Companion.
  • Freeze baseline stats: net profit, Sharpe, drawdown, MAR, trade count, win rate.
  • Run trade-level invalidation tests that work from exported results alone.
  • Flag deeper tests that require OHLC data, signal series, or TradingView automation.

Phase 1 · Reproduce

These tests make the baseline trustworthy before we start punching it.

TradingView export

Baseline freeze

Run it: import the original trade list and lock starting equity, market, timeframe, date range, and costs.

Invalidate if: the same export cannot reproduce the same stats.

TradingView export

Trade count sanity

Run it: count trades, wins/losses, average hold time, and exposure proxy from entry/exit dates.

Invalidate if: too few trades or one date cluster explains most results.

Needs settings

Cost assumption audit

Run it: record commission, slippage, order sizing, pyramiding, margin, and session settings from TradingView.

Invalidate if: the edge exists only with zero friction or impossible sizing.

Phase 2 · Randomize

Build null distributions. If random can match the strategy, the strategy is not special.

TradingView export

Trade-order shuffle

Run it: randomly reorder realized trade profits 1,000+ times and rebuild equity curves.

Invalidate if: baseline drawdown or terminal equity is ordinary inside the shuffled distribution.

TradingView export

Trade bootstrap

Run it: sample trades with replacement to estimate outcome ranges from the observed trade distribution.

Invalidate if: a large share of bootstraps are negative or exceed acceptable drawdown.

TradingView export

Sign-flip expectancy

Run it: randomly flip trade P/L signs while preserving magnitudes to test if direction matters.

Invalidate if: original expectancy is not an outlier versus random sign assignments.

Needs OHLC/signals

Random entry timing

Run it: keep trade count and holding-period distribution, but randomize entry dates on the same market.

Invalidate if: random entries produce similar Sharpe, return, or drawdown.

Needs signals

Circular signal shift

Run it: shift the entire signal series by random offsets, preserving clustering but breaking timing.

Invalidate if: shifted signals perform similarly to real signals.

Needs strategy reruns

Randomized settings rerun

Run it: rerun the TradingView strategy across random parameter sets and compare the chosen setting.

Invalidate if: the selected parameter is not on a broad robust plateau.

Phase 3 · Stress

Keep the same trades, then make the world less friendly.

TradingView export

Remove best trades

Run it: remove top 1, top 5, and top 10% winning trades. Quant Companion already has the beginning of this.

Invalidate if: one or two lucky trades carry the whole strategy.

TradingView export

Fee haircut

Run it: subtract fixed or bps cost from every trade and redraw equity.

Invalidate if: realistic fees erase expectancy.

Needs price/size

Slippage haircut

Run it: subtract slippage per contract/share or as bps of notional.

Invalidate if: edge requires perfect fills.

Phase 4 · Validate alpha

Separate actual signal value from beta, market drift, or trade distribution luck.

Needs benchmark

Benchmark overlay

Run it: compare equity curve to buy-and-hold, SPY/QQQ, sector ETF, or underlying market.

Invalidate if: the strategy adds complexity without improving risk-adjusted return.

Needs benchmark returns

Regression alpha

Run it: regress strategy returns against benchmark returns.

Invalidate if: alpha is insignificant or beta explains the result.

Needs factor labels

Forward-label shuffle

Run it: shuffle forward returns against factor values and compare IC/p-value distributions.

Invalidate if: the factor cannot beat shuffled labels.

Phase 5 · Robustness

Look for performance that survives different nearby worlds, not one lucky historical path.

TradingView export

Subperiod split

Run it: split trades into years, quarters, or regimes and recompute stats for each period.

Invalidate if: one subperiod explains nearly all returns.

TradingView export

Rolling death watch

Run it: plot rolling net profit, Sharpe proxy, win rate, and drawdown across fixed trade windows.

Invalidate if: edge decays or spends long windows below zero.

Needs reruns

Walk-forward comparison

Run it: optimize on one period in TradingView, test fixed settings on the next period.

Invalidate if: in-sample settings do not transfer out of sample.

Quant Companion fit

What can become part of the current app versus what needs extension automation or more data.

Test family Works from TV export? How to run it in Quant Companion Implementation note
Trade bootstrap / Monte Carlo Yes Use existing net profit array, sample with replacement, compare terminal equity and drawdown distribution. Already close: current Monte Carlo can be reframed as invalidation.
Remove best/worst trades Yes Existing controls remove best/worst trades; add pass/fail language and contribution stats. Turn into “lucky outlier dependency” test.
Subperiod / rolling stats Yes Group uploaded trades by date period and show a per-period stats grid. No price data required.
Fee and slippage haircut Partial Subtract fixed fee per trade immediately; bps/notional requires contracts and price fields to be reliable. Start with fixed + percent-of-profit haircut; expand later.
Random entries / signal shifts No Needs OHLC series and strategy signal/holding rules, or TradingView automation to rerun variants. Could become extension workflow later.
Parameter randomization No Needs repeated TradingView strategy runs across settings or user-uploaded result batches. Batch upload is the lowest-friction v1 path.