Skip to content
All strategies

Strategies

Point-in-Time Liquid-Universe 1-Month Price-Change Factor, Top-Quintile Monthly Selection with a Positive-Momentum Flat State (BINANCE_SPOT daily, long-only, no leverage), distilled from QuantConnect's 'Stock Selection Based on Fundamental Factors'

Outcome: Abandoned

SpotLiquidUniverseMonthlyPriceChangeTopQuintile

Outcome Summary

SpotLiquidUniverseMonthlyPriceChangeTopQuintile was a monthly, long-only BINANCE_SPOT strategy. It ranked a point-in-time liquid universe of 30 USDT pairs by 1-month price change and held the top 6, with a per-name positive-momentum rule that moved failing slots to cash. The code used a 12-hour BTCUSDT bar as its clock and subscribed to hundreds of daily extra-instrument legs from the catalog. It timed out three times in the verification stage and was abandoned after one iteration as 'verifying_stuck_3_timeouts'. No backtest, optimization, analyst or risk review ever ran, so the idea's edge remains untested.

Hypothesis

Classification: (a) a concrete idea, but most of its inputs are not in our data. The source ranks US stocks on a composite of four Morningstar fundamentals (FCFYield, BookValuePerShare, RevenueGrowth) plus one price factor (PriceChange1M). We collect no fundamentals, so the fundamental legs cannot be tested and are DROPPED rather than proxied. The testable parts are: (1) the source's POINT-IN-TIME universe rule, which ranks the whole tradable set by dollar volume at each monthly rebalance; (2) its only price……Show moreShow less

Classification: (a) a concrete idea, but most of its inputs are not in our data. The source ranks US stocks on a composite of four Morningstar fundamentals (FCFYield, BookValuePerShare, RevenueGrowth) plus one price factor (PriceChange1M). We collect no fundamentals, so the fundamental legs cannot be tested and are DROPPED rather than proxied. The testable parts are: (1) the source's POINT-IN-TIME universe rule, which ranks the whole tradable set by dollar volume at each monthly rebalance; (2) its only price factor, PriceChange1M, which in the source's own table sorts with a POSITIVE rank correlation, so the highest 1-month changers form the best quintile; and (3) holding the top-ranked names equal-weight and rebalancing monthly. The source's equity venue is ruled out. Lesson L128 bans USEQ daily-bar monthly rotations: 17 runs, zero survivors, because there are too few independent rebalances. The mechanism therefore moves to BINANCE_SPOT, where cross-sectional dispersion of 1-month returns among liquid coins is several times larger than among S&P names. This is the correct venue for a long-only, unleveraged book, and it is under-represented (10.8% against a 15% target). UNIVERSE (point-in-time, per L151, not a typed list): at each rebalance, the candidate pool is EVERY <BASE>USDT pair in the BINANCE_SPOT catalog with 1-DAY bars. The catalog holds ~795 such series, including delisted ones such as ANT, AGIX and ANC, which reduces survivorship bias. Excluded by mechanical rule: leveraged tokens (*UPUSDT/*DOWNUSDT), stablecoin and fiat bases (USDC, FDUSD, TUSD, BUSD, DAI, EUR, AUD, etc.), tokenized equities (*BUSDT stock tokens such as AAPLBUSDT), and names with fewer than 60 daily bars as of the rebalance date. From the remainder, take the TOP 30 by trailing 30-day mean daily dollar volume (close x volume) computed only from bars at or before the rebalance bar. This is the source's CoarseSelection with N scaled to crypto breadth. FACTOR: PriceChange1M = close(t) / close(t-30 days) - 1, point-in-time. SELECTION: rank the 30 names by this factor. The top quintile (6 names) are candidates. A candidate is held only if its own PriceChange1M > 0; any slot that fails this rule stays in USDT cash. This per-name absolute rule is the declared FLAT state (L150). It is not a market-regime gate: it tests the same factor the ranking already uses. Expected time fully in cash: ~20-25% of months, i.e. broad-market down months. Expected mean invested fraction: ~65%. REBALANCE: the first daily bar close of each calendar month (UTC), matching the source's MonthStart schedule. SIZING: each held name gets 1/6 of equity (max 16.7% per name; 100% total at 1.0x, CASH account). No leverage. Names held over from last month are only trimmed or topped up when their weight has drifted by more than 5 percentage points, to limit turnover fees. FEE ARITHMETIC: BINANCE_SPOT round trip is ~0.20% taker plus impact of ~0.05-0.15% on the 30 most liquid names, so ~0.30%. Each position is held about one month, typically 1-3 months for persistent winners. The cross-sectional spread between the top quintile and the universe median of 1-month forward returns in liquid crypto has historically been several percent per month and fat-tailed. Assume an honest capture of +1.5% per closed trade on average, against ~0.30% cost, i.e. ~5x the round trip. Turnover is ~3-4 of 6 slots per month. Over ~2019-2026 (~80 monthly rebalances) that gives about 300-400 closed trades. DUPLICATE CHECK (L138): with the wrapper stripped, the mechanism is 'long the top cross-sectional 1-month return quintile of a liquidity-ranked crypto universe, monthly'. The nearest family in the corpus is the 8-major BINANCE_SPOT weekly relative-strength rotation. That one uses a FIXED hand-typed list (an L151 violation) at a weekly cadence with an absolute-momentum market filter. This proposal differs in exactly those three respects: a point-in-time dollar-volume universe of 30, monthly cadence, and a per-name rather than market-level flat rule. If the novelty gate judges that insufficient, dropping this hypothesis is the honest outcome, because nothing else in the source is testable on our data.

Implements the testable core of the source: point-in-time dollar-volume universe, PriceChange1M (positive rank correlation), top quintile, monthly MonthStart rebalance. The fundamental legs are dropped as the hypothesis specifies. Universe pool = all 591 catalog BINANCE_SPOT <BASE>USDT 1-DAY series after mechanical exclusions: leveraged UP/DOWN/BULL/BEAR tokens, stable/fiat bases, 2026 tokenized-stock *B tokens, one non-ASCII symbol (identifier safety), and series with <90 days of catalog history (the……Show moreShow less

Implements the testable core of the source: point-in-time dollar-volume universe, PriceChange1M (positive rank correlation), top quintile, monthly MonthStart rebalance. The fundamental legs are dropped as the hypothesis specifies. Universe pool = all 591 catalog BINANCE_SPOT <BASE>USDT 1-DAY series after mechanical exclusions: leveraged UP/DOWN/BULL/BEAR tokens, stable/fiat bases, 2026 tokenized-stock *B tokens, one non-ASCII symbol (identifier safety), and series with <90 days of catalog history (the data-sufficiency floor, which only removes the last ~3 months of listings). Delisted names (ANT, AGIX, ANC, ...) are kept, so the universe is survivorship-light and chosen per rebalance, not from a typed list; the 20 declared majors are all in it. Primary is BTCUSDT 12-HOUR, a different timeframe from the legs, so the base's same-timeframe alignment barrier does not stall on legs that list late or get delisted. Extra-leg data is used only when its ts <= the primary bar ts. Per-bar work is O(1) per extra bar (deque plus running sums); a ranking pass over ~600 names runs once per 12h bar. Gross exposure is at most 99% of NAV on a CASH 1.0x account. Expected ledger: ~3-4 of 6 slots turn over per month over ~78 rebalances in the 2400-day sandbox, i.e. ~250-400 buy legs. Weekly/intra-month stops are not part of the hypothesis and are not added. One risk: 591 extra legs make the catalog load heavy for the 300s sandbox; if it times out, the fix is to shrink the pool mechanically (e.g. to names that were ever in a top-100 dollar-volume rank), not to change the signal.

verifying_stuck_3_timeouts

Implementation

Monthly long-only rotation on BINANCE_SPOT daily data. Each month (first 12h bar at or after month-start + 12h UTC, so the month's first daily close is known), build a point-in-time universe: every <BASE>USDT spot pair in the pool that has >=60 daily bars, printed a daily bar within 36h (delisted names drop out), with the top 30 by trailing 30-day mean close*volume. Rank those 30 by PriceChange1M = close/close[-30]-1. Hold the top quintile (6) equal-weight at 1/6 of NAV each (1% cash buffer). A slot whose own PriceChange1M <= 0 stays in USDT, which is the declared flat state. Held names are traded only when their weight drifts more than 5pp; exits go out before buys, and buys are scaled to the cash actually available. Every leg is a separate order on its own instrument. BTCUSDT 12H is only the clock, and the signal is the mean 1M change of the current top-quintile candidates.

Outcome Summary

The design used a 12-hour BTCUSDT clock plus ~700 daily extra-instrument legs. A universe that wide likely cannot finish the verification sandbox within its time limits, so a future iteration should pre-filter the candidate pool to a much smaller set of plausibly liquid names before verification.

The run was abandoned in verification with reason 'verifying_stuck_3_timeouts' after 1 iteration. The backtest-review, analyst and risk-officer stages were never reached.

A long-only, unleveraged BINANCE_SPOT monthly rotation. At each month start it takes the top 30 USDT pairs by trailing 30-day dollar volume (point-in-time) and holds the top quintile (6 names) by 1-month price change equal-weight, keeping any name with a non-positive 1-month change in USDT cash. The idea was adapted from the price-factor leg of QuantConnect's fundamental-factor stock selection.

No performance data exists. The backtest report is empty and there is no optimization report, so no return, Sharpe or trade-count figures were produced.

Backtest and paper results are hypothetical. Trading involves risk of loss.