Dynamic & universe strategies
A dynamic strategy trades a universe rather than a fixed symbol: it evaluates every candidate on each bar, ranks them, and trades the top-ranked ones. Instead of naming an instrument, you name a selection rule.
Triggering one
Give an instrument selection rule instead of an instrument:
build a momentum strategy across all large-cap crypto
buy the top 5 NIFTY 50 stocks by relative strength
trade the most active NSE stocks on a breakout signal
The builder recognises that you gave a selection rule and resolves a dynamic universe rather than asking you for a single asset. Dynamic strategies carry a Dynamic badge on the strategy card.
Not the same as a multi-symbol backtest
The distinction is subtle and it matters more than anything else on this page.
| Multi-symbol backtest | Dynamic strategy | |
|---|---|---|
| Trigger | "backtest this on ETH and BTC" | "across all large-cap crypto" |
| What runs | The same strategy independently on each symbol | One strategy that selects from a pool |
| Capital | Full starting capital on each | One allocation, shared |
| Result | Several standalone results to compare | One portfolio-style result |
| Instruments traded | Exactly the ones you named | Whichever currently rank highest |
| Purpose | Comparison, "does this work on both?" | Selection, "trade whichever is best right now" |
Two independent 20% returns are not a 20% portfolio return. Each run had the full capital and neither knew the other existed. See Backtest limitations
How the universe resolves
The candidate pool
The pool comes from the platform's supported-asset catalogue, the single source of truth for every tradeable asset, with nothing hardcoded per universe. Both the live path and the backtest resolve members through the same code, so a universe means the same thing researched and deployed.
| You say | Resolves to |
|---|---|
| An index name | Its constituent list |
| A sector | The sector's members |
| A broad market or exchange name | The whole supported equity universe for it, not a specific constituent list |
| An asset class | All supported members of it, equity_cash, crypto_spot |
| A crypto universe | Supported crypto pairs, de-duplicated across quote currencies |
Note the third row: "NSE stocks" means the supported NSE universe, not an index. If you want an index's constituents, name the index.
Crypto pairs are de-duplicated by base asset. The catalogue lists both BTC_USDC and BTC_USDT;
for ranking purposes one is used, because ranking the same asset twice would distort the selection.
Membership over time
Universe membership has a timeline, and there are two modes:
| Mode | Behaviour |
|---|---|
point_in_time | Membership as it was on each historical date |
approximate | Today's supported list, applied across history |
approximate mode carries survivorship bias, by constructionToday's supported list is today's list. Applied across history, it means the backtest only ever considered instruments that still exist and are still supported.
Instruments that were delisted, suspended or removed during the window are absent, and those are disproportionately the losers. A universe backtest in approximate mode is measuring a set selected by survival. Check which mode a run used before drawing conclusions from it.
Ranking
Each bar, candidates are ranked by a metric you choose.
| Rank by | Computed as |
|---|---|
momentum | Momentum over a window (default 20) |
pct_change | Percentage change over a window (default 1) |
rel_strength | Relative strength against a reference series (default 20) |
rsi | RSI (default 14) |
rvol | Relative volume against its own average (default 20) |
volume | Average daily traded value, close × volume over ~20 days |
atr_pct | ATR as a percentage of price (default 14) |
distance_52w | Distance from the 52-week high (default 252) |
delivery_volume | Delivery quantity, needs an external stats feed |
oi_change | Open-interest change, needs an external stats feed |
Why volume means traded value
Worth reading, because it is a genuinely good decision:
"Most active / most traded" is liquidity, which is a multi-day property measured by average daily value (close × volume) over about 20 days. Not one bar's raw share count. A single freak bar would otherwise crown an illiquid name.
Using traded value also makes equity and crypto comparable, which raw share counts are not. And it is the same measure as the eligibility floor, so "most active" and "tradeable" agree rather than selecting different sets.
Missing metrics fail closed
A metric whose input is absent (no stats feed, or warm-up incomplete) returns NaN, and the resolver treats NaN as rank-last or drop. It never treats a missing value as zero or as neutral.
delivery_volume and oi_change have no feed yet, and the validator says so rather than silently
ranking everything equally.
Selection and allocation
Once ranked, the strategy trades the top N. Capital is divided across selected positions from the strategy's single allocation, the allocation is never exceeded, and the two capital gates that enforce that cannot be disabled.
Selection is re-evaluated per bar, so the traded set changes as ranks change. The practical consequences:
Turnover. A strategy that reselects frequently trades more, and cost drag scales with turnover. Watch the gross-to-net gap. See Fees & charges
Correlated exposure. The top five by momentum in one sector is one bet with five names. Ranking does not diversify.
Reading a dynamic backtest
The Markets tab shows per-asset performance, which instruments carried the result and which dragged.
If one instrument produced most of the return, you did not build a universe strategy. You built a single-instrument strategy with extra steps, and it happened to select the right one in this window. A different window would select differently.
Also read:
| Read | To learn |
|---|---|
| Trade count against turnover | Whether reselection is churning |
| Gross versus net return | Whether cost drag from turnover is eating the edge |
| Per-asset distribution | Whether the result is broad or concentrated |
| Which membership mode ran | Whether survivorship is in play |
Limitations
| Limitation | Consequence |
|---|---|
| Approximate membership | Survivorship bias by construction |
| Two ranking metrics have no feed | delivery_volume and oi_change are unusable today |
| Ranking is not diversification | Top-N by one metric is often one correlated bet |
| Turnover costs | Reselection has a real price |
| Pool is the supported catalogue | An instrument the platform does not support cannot be in a universe |
| Warm-up | A candidate without enough history ranks NaN and drops |