TradingView strategy research

Cross-sectional momentum: universe, ranking and rebalance timing

Cross-sectional momentum ranks eligible assets by their past returns at the same decision time, then allocates to relative winners. A long-short version also shorts relative losers. The ranking depends on the historical universe, return window and missing-data rules. A high rank does not require a positive return, and a ranking table is not a portfolio backtest. The worked example below fixes an eleven-month return window, skips the latest month and rebalances a long-only portfolio monthly.

See the decision guide

Relative rank, own-history momentum and dual momentum

Jegadeesh and Titman's 1993 paper studies buying past winners and selling past losers. Kenneth French's momentum factor uses monthly portfolios sorted by size and prior returns from months 2 through 12. Those are research constructions with specific weighting rules. This page's top-two, long-only example explains the mechanics; it does not replicate either study or claim their returns.

  • Gary Antonacci describes dual momentum as combining relative and absolute momentum. Its threshold, cash benchmark, defensive asset and measurement horizon must be specified; adding an unspecified filter does not define a reproducible model.
  • A pure relative-ranking rule can remain fully invested during a broad decline. The example below has no absolute-return gate. RSI on one chart measures a different quantity and cannot supply a universe ranking.
MethodQuestion answeredIf A, B and C return -2%, -5% and -9%
Cross-sectional momentumWhich eligible assets performed best relative to their peers?A ranks first and B second. A top-two rule still buys both.
Own-history momentumDoes each asset pass its own return threshold?A long-or-cash rule requiring a return above zero rejects all three.
Dual momentumDoes a relative selection also pass an absolute momentum test?With a separate zero-return gate, neither selected asset passes. The defensive allocation follows a separately specified rule.

Reconstruct the investable universe at every decision

Freeze a dated eligibility policy, not a list of securities chosen with hindsight. For this teaching baseline, use US-listed common stocks trading in USD on the same session calendar. At each month-end M, retain securities then listed, with a closing price of at least $5 and a trailing 20-session average dollar volume of at least $1 million. These cutoffs are illustrative research settings, not an assurance that an order can be filled.

  • For an index-based universe, use membership effective at the historical date rather than current constituents. Archive the membership source and when each change became known.
  • If a complete universe cannot be reconstructed, describe the result as research on a fixed selected basket. It cannot establish how a historical broad-market selection strategy would have performed.
Data decisionFrozen policy
Historical identityUse permanent security identifiers and dated listing, share-class and eligibility records. A later ticker rename must not create a new investment history.
Signal dataUse a documented total-return index that includes distributions and corporate actions consistently for every asset. Require positive endpoints and all intervening monthly returns for the signal window.
New listings and gapsExclude assets without the complete history from that ranking. Never replace missing returns with zero or backfill pre-listing history with an index.
Tradability snapshotUse information available by the decision cutoff, including the price and liquidity filters. Require current observations; a stale carried-forward quote is not evidence of tradability.
Membership changesKeep the historical snapshots. Remove an ineligible holding at the next executable rebalance under the exit policy; do not erase its earlier returns.
Unavailable exitsTrack halted or untradeable holdings separately, preserve their valuation uncertainty and reduce buying power. Do not assume an immediate sale at the last quoted price.

Define the skipped month and execution clock precisely

Let I(i, M) be asset i's total-return index at month-end M. At the close of M, calculate score(i, M) = I(i, M - 1) / I(i, M - 12) - 1. This compounds eleven monthly returns and omits the return during month M. For a December 31, 2025 decision, use November 30, 2025 and December 31, 2024 calendar month-end observations, represented by each month's last session close. December 2025 is the skipped month; the next holding period begins in January 2026.

  • A different convention can use twelve full months before a one-month skip. It would require an earlier starting endpoint. Write the dates and number of compounded returns instead of relying on the label "12-1".
  • Use the same currency and return convention across all candidates. A global universe also needs an explicit time-zone cutoff and FX conversion policy; markets closing at different times are not simultaneous observations.
  • The monthly hold here replaces the previous selection. Holding each new selection for several months creates overlapping portfolio cohorts and needs a separate allocation rule.
DecisionExample rule
Ranking timeAfter the final session of M closes, freeze one eligible universe and one score vector. Do not update one asset with a later observation than the others.
Selection and tiesSort scores descending, then break exact ties by ascending permanent identifier. Select the first two eligible assets.
WeightsTarget 50% of post-cost investable equity in each selected asset. With only one eligible asset, retain one 50% slot in cash; with none, target cash.
OrdersExecute after the decision, at the next available common-session open using an explicit fill and cost model. A closing signal cannot justify an earlier closing-auction fill.
Between rebalancesHold quantities until the next scheduled rebalance, except required corporate-action processing. Weights drift with returns. Cash earns zero in this example.
Entry and exit boundariesBegin flat after sufficient warm-up and the first scheduled decision. At the evaluation end, mark remaining holdings and report them, or book a separately timed executable liquidation and its costs.

Recompute a ranking from five hypothetical securities

All five invented securities below pass the December 2025 eligibility screen and have complete monthly history. Their total-return indices are normalized to 100 on December 31, 2024. Only the two signal endpoints are shown; the December 2025 return is excluded. The permanent identifiers are A through E, so B wins the tie with C.

  • If B lacks a required monthly observation, exclude it before ranking and select A and C. A missing value is not a negative score and must not be silently assigned the bottom rank.
  • The target is a decision, not a filled position. Record the later fill prices, quantities and fees before computing realized weights. Gaps can change both trade size and available cash.
IdentifierDec 2024 indexNov 2025 indexScore and rankJanuary target
A100120120 / 100 - 1 = +20%; rank 150%
B100110110 / 100 - 1 = +10%; rank 250%
C100110110 / 100 - 1 = +10%; rank 30%
D1009595 / 100 - 1 = -5%; rank 40%
E1008080 / 100 - 1 = -20%; rank 50%

Rebalance drifted weights and fund the transaction costs

Continue with a hypothetical portfolio already holding $50,000 each in A and B immediately after the January entry. Initial entry costs are outside this snapshot. Over the holding interval A returns -4% and B +2%, leaving A worth $48,000, B $51,000 and equity $99,000. Assume the next completed ranking selects B and C, all orders can fill at the valuation prices with fractional quantities, and a separate all-in cost of 0.20% applies to every dollar bought or sold. This is arithmetic, not a market backtest.

  • Using the old 50/50 weights would miss B's drift. Buying $49,500 of each target from pre-fee equity would also leave a $198 funding deficit unless cash or borrowing were added.
  • Do not multiply the half-turnover measure by a per-side fee without the matching factor of two. Charge the model on actual traded notional, including sales of securities no longer selected.
  • The 0.20% assumption includes the execution costs in this example. If a simulation already embeds spread or slippage in fill prices, do not deduct the same component again. Real orders also require size, participation and settlement constraints.
StepReproducible calculation
Holding-period gross return0.50 × (-4%) + 0.50 × 2% = -1%. Drifted weights are A = 48 / 99 = 48.4848%, B = 51 / 99 = 51.5152%.
Post-cost equityLet E be equity after costs. Sell A for 48,000; trim B by 51,000 - E / 2; buy C for E / 2. Total traded dollars = 99,000, so E = 99,000 - 0.002 × 99,000 = 98,802.
Actual target valuesB = C = 98,802 / 2 = 49,401. Sell A: 48,000. Sell B: 1,599. Buy C: 49,401.
Cash reconciliationSales 49,599 - purchases 49,401 = 198; fees are 198. Ending cash is zero.
Turnover conventionGross traded notional / pre-trade equity = (48,000 + 1,599 + 49,401) / 99,000 = 100%. Half of this gross measure is 50%; label the convention.
Snapshot equity change98,802 / 100,000 - 1 = -1.198%, including this rebalance cost. It excludes initial entry and any later liquidation.

Delistings and short books change the portfolio result

A held security remains part of the return ledger when it disappears from a screener. CRSP distinguishes ordinary returns, delisting proceeds and missing delisting information. Match the data format before combining fields: some compounded return series already include delisting effects. Missing-value codes are not economic returns.

  • For a standalone hypothetical holding, an ordinary return of -20% followed by a separate delisting return of -50% produces (1 - 0.20) × (1 - 0.50) - 1 = -60%. A $10,000 allocation becomes $4,000. Dropping the asset or keeping its last $8,000 value omits the final loss.
  • Apply that combination only when the ordinary return excludes the separate delisting component. Record the effective valuation and payment dates; a later recovery is not spendable cash before it is received. Unresolved recovery data requires an explicit assumption and sensitivity range.
  • A long-short variant needs a new capital convention. A book with +50% in winners and -50% in losers has 100% gross and zero net exposure. A +100%/-100% book has 200% gross. Neither automatically has zero market beta or zero risk.
  • Short losers require dated borrow availability, borrow fees, financing, recalls and dividends owed. Daniel and Moskowitz document momentum crashes, including sharp rebounds in prior losers after market distress. A long-only portfolio and a short-loser book therefore have different failure modes.

What a TradingView prototype can verify

TradingView's Pine strategy documentation states that strategies trade only the chart asset and cannot open positions in other assets. Requests for other symbols can support an observation table, but they do not create a multi-asset broker ledger. A broad-market portfolio result needs historical membership, corporate actions, per-asset fills, cash and costs outside the chart strategy report.

  • When requesting a Pine observer from Pine Script AI Coding Agent, specify the symbols, calendar endpoints, adjustment settings, missing-data policy and tie rule. Ask for visible observation timestamps and no strategy orders. Review the generated code and request syntax validation before use.
  • Strategy Optimizer can vary exposed inputs and collect TradingView strategy reports for a chart strategy. It cannot turn an indicator ranking table into a portfolio backtest. Keep any chart-level parameter comparison separate from the cross-sectional portfolio evidence.
Research layerSupported taskBoundary
Finite-symbol Pine observerDisplay scores for an explicitly supplied small basket using confirmed, consistently adjusted observations and one common cutoff.No claim of scanning the historical market universe, recovering delistings or trading every displayed symbol.
Pine chart strategyTest a chart-symbol rule and audit its own orders, timing and declared costs.Its equity curve is not the return of the ranked portfolio. A basket label does not change the traded instrument.
Portfolio ledgerStore every dated eligible set, score, target weight, quantity change, fill, distribution and cost; reconcile holdings plus cash to equity.Requires suitable external data and portfolio accounting. A copied list of current tickers is insufficient.

Audit the ranking before comparing performance

Keep a dated research file with the universe policy, data version, signal endpoints, tie rule, position count, rebalance calendar and cost model. Before evaluating returns, reproduce a normal rebalance, a tied rank, an excluded new listing and a delisting. Every selected asset should be traceable to an input known by that decision time.

  • Compare the ranked long-only portfolio with an equal-weight portfolio of the same eligible universe, using the same dates, fills and costs. A broad index is useful context but may have different constituents and concentration.
  • Predeclare a small set of lookbacks and selection counts. Retain every trial, freeze the choice, then evaluate later untouched dates. Repeatedly changing the universe after seeing results also selects on the answer.
  • Report net return, drawdown, gross exposure, sector concentration, traded notional, fees and failed fills together. Stress higher costs and delayed execution; a rank spread alone is not an implementable return.
  • No historical performance run is claimed on this page. The numerical examples demonstrate reproducible ranking and bookkeeping under stated assumptions.
Where Pineify fits

Pine Script AI Coding Agent

Draft a finite-symbol momentum observation table from explicit inputs and timing rules. Inspect the timestamps and adjustment choices, then request a syntax check. Keep portfolio accounting separate.

Also useful: Strategy Optimizer. Compare exposed input combinations for a chart-symbol Pine strategy using TradingView reports. This does not validate a ranked portfolio or supply historical universe membership.

Draft a ranking observer

Frequently asked questions

Educational research, not investment advice. Securities, returns and costs in the worked examples are hypothetical. No backtest performance or future return is claimed. Ranking, concentration, short selling and trading costs can cause substantial losses.

Sources and verification

Published by Pineify. Pineify is an independent product and is not affiliated with TradingView. Sources support the technical explanations; examples do not establish trading performance.