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.
| Method | Question answered | If A, B and C return -2%, -5% and -9% |
|---|
| Cross-sectional momentum | Which eligible assets performed best relative to their peers? | A ranks first and B second. A top-two rule still buys both. |
| Own-history momentum | Does each asset pass its own return threshold? | A long-or-cash rule requiring a return above zero rejects all three. |
| Dual momentum | Does 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 decision | Frozen policy |
|---|
| Historical identity | Use permanent security identifiers and dated listing, share-class and eligibility records. A later ticker rename must not create a new investment history. |
| Signal data | Use 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 gaps | Exclude assets without the complete history from that ranking. Never replace missing returns with zero or backfill pre-listing history with an index. |
| Tradability snapshot | Use 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 changes | Keep the historical snapshots. Remove an ineligible holding at the next executable rebalance under the exit policy; do not erase its earlier returns. |
| Unavailable exits | Track 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.
| Decision | Example rule |
|---|
| Ranking time | After 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 ties | Sort scores descending, then break exact ties by ascending permanent identifier. Select the first two eligible assets. |
| Weights | Target 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. |
| Orders | Execute 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 rebalances | Hold quantities until the next scheduled rebalance, except required corporate-action processing. Weights drift with returns. Cash earns zero in this example. |
| Entry and exit boundaries | Begin 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.
| Identifier | Dec 2024 index | Nov 2025 index | Score and rank | January target |
|---|
| A | 100 | 120 | 120 / 100 - 1 = +20%; rank 1 | 50% |
| B | 100 | 110 | 110 / 100 - 1 = +10%; rank 2 | 50% |
| C | 100 | 110 | 110 / 100 - 1 = +10%; rank 3 | 0% |
| D | 100 | 95 | 95 / 100 - 1 = -5%; rank 4 | 0% |
| E | 100 | 80 | 80 / 100 - 1 = -20%; rank 5 | 0% |
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.
| Step | Reproducible calculation |
|---|
| Holding-period gross return | 0.50 × (-4%) + 0.50 × 2% = -1%. Drifted weights are A = 48 / 99 = 48.4848%, B = 51 / 99 = 51.5152%. |
| Post-cost equity | Let 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 values | B = C = 98,802 / 2 = 49,401. Sell A: 48,000. Sell B: 1,599. Buy C: 49,401. |
| Cash reconciliation | Sales 49,599 - purchases 49,401 = 198; fees are 198. Ending cash is zero. |
| Turnover convention | Gross 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 change | 98,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 layer | Supported task | Boundary |
|---|
| Finite-symbol Pine observer | Display 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 strategy | Test 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 ledger | Store 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.