← capabilities overview · Builder UI reference · Strategy JSON reference
FNOTrader Algo is a no-code builder for F&O trading systems. You describe a strategy as a recipe — which instruments to watch, what triggers an entry, which legs to fire, and how each leg is protected — then replay that exact recipe against minute-bar history in the backtester, and finally deploy the same recipe to paper or live trading.
The Builder is a single page of eight numbered steps:
Once saved, the same strategy runs through the Backtest page. All times in the product are IST and all money values are ₹.
Give the strategy a Name and an optional Description; both appear on the Strategies, Portfolios and Signals pages, so name it something you will recognise in a list ("920 Short Straddle NIFTY", not "test3").
The Symbol is the underlying for the whole strategy — every watched instrument and every leg inherits it. The list covers:
Symbols with a backtest archive carry a "✓ backtest" badge in the dropdown. Everything else can still be forward-tested live on the paper broker.
A Template seeds the later steps with a working recipe so you start from something that already runs:
| Template | What it sets up | Use it when |
|---|---|---|
| Custom (build my own) | A blank slate | You want full control from the first leg |
| Short Straddle — SELL ATM CE + PE | Two short ATM legs | Classic premium-selling intraday base |
| Iron Condor — SELL straddle + BUY wings | Short straddle plus protective OTM buys | You want defined risk and lower margin |
| BTST — BUY ATM CE 15:15 → 09:20 T+1 | Buy at close, exit next morning | Playing overnight gap-ups |
| STBT — SELL ATM CE 15:15 → 09:20 T+1 | Sell at close, cover next morning | Harvesting overnight decay / gap-downs |
| Rolling Straddle — ATM CE+PE, roll ±0.5% | Straddle that re-centres when spot drifts 0.5% | Staying delta-neutral in trending sessions |
| Rolling Strangle — OTM-2 CE+PE, roll ±0.5% | Same idea, two strikes out | Rolling with more room and less gamma |
The rolling templates also enable automatic re-centring with a move threshold and a cap on how many times the position may roll.
Choose Multi Leg (basket) for a fixed basket of legs — a straddle, condor, or any custom combination — or Single Leg (option / future) for exactly one leg whose direction comes from the incoming signal: a Long Entry buys it, a Short Entry sells it. Single Leg is the natural fit for TradingView-style directional signals; Multi Leg is for structures you define up front.
Everything you add here becomes a named data source your entry and exit conditions can reference — for example SPOT.EMA(10) or STRADDLE.LTP. If your entry is "sell the straddle when the spot crosses above VWAP", you first add the spot here so the condition has something to look at. Quick-add buttons create a plain instrument, an ATM Straddle or a Strangle in one click.
Each watch row has:
| Scope | What you're watching | Use it when |
|---|---|---|
| Option (single strike) | One CE or PE contract's premium, OI, greeks | Conditioning on a specific strike's behaviour |
| Underlying Spot | The cash index / stock price | Price-action entries — VWAP, EMA, breakouts |
| Futures | The futures contract | You want futures price, OI and buildup, not cash |
| ATM Straddle (auto-tracking) | Combined CE+PE premium at the ATM strike | Straddle-premium entries; volatility reads |
| Straddle (fixed strike) | CE+PE at one fixed strike | Tracking the straddle you actually sold |
| Strangle (CE + PE) | A two-strike combined premium | OTM premium plays with per-side offsets |
| Custom Strategy (multi-leg) | Any weighted CE/PE combination | Synthetic spreads — condor premium, ratio structures |
Example. For a trend-filtered straddle sale, add the spot on a 15m timeframe (alias SPOT_15M) and an auto-tracking ATM Straddle. Your entry can then require SPOT_15M above its EMA(20) while the straddle premium is still above a floor you set.
Entry (3A) and exit (3B) share the same row builder. Each row reads like a sentence: Symbol · Metric · Operator · value(s) — "SPOT LTP Crossing Up VWAP", "STRADDLE LTP Moving Down ₹10 in 5 bars × 5m". Multiple rows combine with AND (all) or OR (any). A live Preview box shows exactly what you've built, in plain text, before you save.
The symbol picker lists every Step-2 alias, plus two built-ins:
Every alias exposes the full metric catalogue:
| Group | Metrics | Typical use |
|---|---|---|
| Market data | LTP, OI, OI Chg, OI Chg %, IV, Delta, Gamma, Theta, Vega, Volume, CDV, Buildup | Raw price, open-interest and greeks reads |
| Averages & momentum | VWAP, EMA (period 10), SMA (20), RSI (14), ATR (14), MACD (12/26), MACD Signal (12/26/9), MACD Histogram (12/26/9), ROC (12), SAR (0.02/0.2) | Trend and momentum filters |
| Bands & trend | Supertrend (10, ×3), BB Upper (20, 2σ), BB Middle (20), BB Lower (20, 2σ) | Volatility-band entries and mean-reversion |
| Oscillators | Stoch %K (14), Stoch %D (14, 3), ADX (14), CCI (20), Williams %R (14), OBV | Overbought/oversold and trend-strength gates |
| Floor pivots | Pivot P, Pivot R1/R2/R3, Pivot S1/S2/S3 | Classic support/resistance levels |
| CPR | CPR Pivot, CPR TC (Top), CPR BC (Bottom), CPR Width, CPR R1–R3, CPR S1–S3 | Narrow-CPR trend days, wide-CPR chop filters |
| Fibonacci pivots | Fib Pivot P, Fib R1–R3, Fib S1–S3 | Fib-based intraday levels |
| Camarilla | Camarilla H1–H3, H4 (breakout), L1–L3, L4 (breakout) | Range-reversal (H3/L3) and breakout (H4/L4) plays |
| Day structure | Day High, Day Low, Prev Day High, Prev Day Low, Prev Day Close | Breakouts of today's or yesterday's range |
Indicator periods are editable inline next to the metric — change EMA's period box to 25 and the condition uses EMA(25).
For the change metrics (OI Chg, OI Chg %), a change basis selector sets the anchor: vs prev bar (default, bar-over-bar change), vs day open (cumulative since today's open) or vs prev day close (change including the overnight gap). "OI Chg % vs day open Greater Than 5" reads as "OI has built up 5% since the open".
An optional Arith step (+, −, ×, ÷, or — for off) combines the left-hand metric with a second operand before the comparison. The second operand can be another metric on the same symbol, a symbol (a different instrument plus its metric), or a fixed number. The canonical use is a strike-wise PCR: ATM PE OI ÷ ATM CE OI Greater Than 1.2 as a bullish gate.
| Operator | Fires when | Use it when |
|---|---|---|
| Moving Up | The metric rises by at least your amount (₹ or %) within a window of N bars (1m, 5m, 15m, 30m, 1h or 1d bars) | Momentum bursts — "premium up ₹15 in 3 × 5m bars" |
| Moving Down | Same, falling | Premium-crush entries for sellers |
| Crossing | Crosses a threshold in either direction | You care about the touch, not the direction |
| Crossing Up | Crosses from below to above | Classic bullish cross — LTP over VWAP |
| Crossing Down | Crosses from above to below | Bearish cross |
| Greater Than | Metric is above a value | Simple level gates — RSI > 60, IV > 18 |
| Less Than | Metric is below a value | The mirror gate |
| Inside Channel | Metric sits within [Low, High] | Range filters — "ADX inside 15–25" |
| Outside Channel | Metric sits outside [Low, High] | Avoiding the middle of a range |
| Entering Channel | Transitions from outside to inside | Mean-reversion back into value |
| Exiting Channel | Transitions from inside to outside | Volatility expansion out of a range |
| Above | Metric is above another metric | Line-vs-line states — LTP above VWAP all bar |
| Below | Metric is below another metric | The mirror state |
| New Day High | Price prints a fresh intraday high | Strength confirmation |
| New Day Low | Price prints a fresh intraday low | Weakness confirmation |
| Range Breakout UP | Price crosses above the high of a time window you set (default 09:15–10:15); armed only after the window closes | Opening-range breakout longs |
| Range Breakout DOWN | Crosses below the window low | ORB shorts |
| Range Breakout EITHER | Breaks the window high or low | Direction-agnostic straddle/strangle triggers |
Moving Up / Moving Down are offered on raw data metrics (LTP, OI, IV, Volume, Delta, Gamma, Theta, Vega) where "moved by X in a window" is meaningful. Range-breakout rows let you choose whether the window's extremes come from bar highs/lows or closes — closes give a cleaner range, highs/lows a stricter one.
For single-threshold operators, the right-hand side can be a value (with a ₹/% unit toggle), a metric on the same instrument (EMA crossing SMA), or a different instrument and its metric (CE OI Crossing Up PE OI — an OI-crossover regime flip). Crossing operators add a checkbox — "or fire on day's 1st bar if already crossed" — so a cross that happened before the open still counts on the first closed bar; tick it when your setup is a state ("above VWAP") rather than the moment of crossing.
Hold a position overnight with two fields: a Start Time today (typically 15:15) and an Exit Time the next trading day (typically 09:20). Filling both switches the strategy into overnight mode — the entry fires in the closing minutes, the position rides the gap, and it is squared off at your exit time next session. Any 3A/3B conditions still gate the entry inside that window. Leave both blank for a normal same-day strategy.
Example. BUY ATM CE at 15:15, exit 09:20 tomorrow: you capture the overnight gap with a defined, premium-limited risk. The STBT mirror sells at 15:15 to harvest overnight theta and gap-downs — pair it with Overnight Protection below.
When you carry short options overnight, this feature buys a protective further-OTM option against every open short leg at a time you choose, and unwinds the hedge next morning — capping overnight gap risk without touching the core position. The hedge uses the same expiry and quantity (split to respect exchange freeze limits), its P&L counts in the strategy's MTM, and it needs the NRML product. In backtests it is simulated whenever an overnight carry is active.
Configure:
| Method | Picks the strike | Use it when |
|---|---|---|
| Strike distance | N strikes beyond the short | Simple, predictable width |
| Premium closest to ₹ | Whose premium is nearest your ₹ target | Fixing the hedge's cost — "spend about ₹10" |
| Delta closest to | Whose delta is nearest your target | Consistent tail-risk sizing across vol regimes |
| Max OI strike | The biggest OI wall beyond the short | Parking the hedge at the market's own barrier |
| Straddle-width × | A multiple of the ATM straddle premium away | Width that auto-scales with volatility |
| Underlying % away | A fixed % of spot away | Percent-based width independent of premium |
Example. An STBT short straddle with protection set to Premium closest to ₹ 10, applied 15:20 and removed 09:20, spends roughly ₹10 a side to make a violent overnight gap survivable — the hedge legs gain what the shorts lose beyond their strikes.
Each row in the legs table is one order. The basics per leg:
How the leg's strike is picked at entry:
| Mode | You enter | Use it when |
|---|---|---|
| Distance | A moneyness pick from ITM15 … ITM1, ATM, OTM1 … OTM15 | The classic "sell ATM", "buy OTM2 wing". Offsets beyond ±10 are marked "(live only)" — backtests cover ATM±10 and clamp beyond it |
| Absolute | An explicit strike number | You want exactly the 24000 CE, every day |
| Premium | A target ₹ premium — the strike whose price is closest at entry | Selling "the ₹50 option" regardless of where it sits — consistent credit across vol regimes |
| Delta | A target absolute delta (e.g. 0.30) | Probability-based selection — a 0.10-delta strangle keeps risk roughly constant |
| Straddle Width | A % of the ATM straddle premium, or a direct × multiplier | Vol-adaptive strikes: 50% of straddle width sits closer on quiet days, further on wild ones |
| Underlying Price | A signed % of spot (+0.5 → strike ≈ spot × 1.005) | Fixed percentage OTM, independent of strike spacing |
| OI Levels (Max OI ± offset) | An offset from the biggest OI wall — CE legs anchor on the max Call-OI strike, PE legs on the max Put-OI strike; 0 = the wall itself, ±1 = one strike either side | Selling at the market's own support/resistance walls — a data-driven iron condor |
Expiry Selection is Relative (a named series the platform resolves each day) or Absolute (an explicit date you pick). Relative choices: Current Weekly, Next Weekly, Far Weekly, Current Monthly, Next Monthly, Far Monthly. Weekly expiries exist only for NIFTY and SENSEX; every other underlying — and all futures legs — offers the monthly series only. Far Weekly/Far Monthly reach two series out, for positional structures that want more time value.
Example. A weekly NIFTY iron condor: SELL ATM CE + PE on Current Weekly, BUY OTM5 CE + PE wings marked as Hedge, one lot each. A stock covered-call-style play on RELIANCE uses Current Monthly automatically, since stocks are monthly-only.
Every leg's gear button opens five tabs: Wait & Trade · Stoploss · Target · Per-leg Trailing · Profit Lock & Trail.
Instead of entering immediately, the leg waits for the premium to move by an amount you set before placing the order. A positive value waits for a favourable move (confirmation); a negative value waits for an adverse move (a retracement entry at a better price); 0 places immediately. Units: pts (₹) — an absolute premium level, pts_rel — a points offset from the premium at the moment waiting starts, or % — a percentage offset. A per-leg Wait & Trade overrides the basket-wide one in Step 5.
Example. Selling a CE trading at ₹100 with Wait & Trade −5 pts_rel places the sell only if the premium first ticks up to ₹105 — you collect ₹5 more on the same strike whenever the market gives a bounce.
The main stop reads as a sentence: SL [type] [value], then [what happens to this leg], then [follow-up action].
Stop types:
| Type | Fires when | Use it when |
|---|---|---|
| % of premium | The premium moves against you by X% of entry | The standard options stop — SL 30% on a short leg sold at ₹100 exits when it trades ₹130 |
| Premium distance (points) | The premium moves X ₹ against you | You think in absolute points, not percentages |
| ₹ on this leg | This leg's loss reaches ₹X | A hard rupee cap per leg regardless of premium level |
| Spot moves either side | The underlying moves X (points or % of entry-time spot) in either direction | Straddle sellers who care about the move, not the premium |
| Spot rises | Same, but only upward moves | Protecting a short CE against a rally |
| Spot falls | Only downward moves | Protecting a short PE against a slide |
| |delta| crosses | The option's absolute delta crosses X | A "the strike is becoming ATM" alarm — delta 0.45 on a sold 0.25-delta leg |
| × ATR | The adverse move exceeds X × ATR(period) | Volatility-scaled stops — wider on wild days, tighter on quiet ones. The ATR can be computed on the option's own premium or on any Step-2 instrument (e.g. spot ATR) |
Leg fate — what happens to this leg when the stop fires: close this leg (default), close this strategy (square off every open leg — a hard stop), or no action on this leg (don't exit; use the stop purely as a trigger for the follow-up action — e.g. keep the short running but fire a hedge).
Follow-up actions — what happens next:
| Action | What it does | Use it when |
|---|---|---|
| no further action | Just the leg fate | Simple stops |
| re-execute strategy | Squares off everything and re-enters a fresh copy at the new ATM, up to N times with an optional wait | Straddle re-entry after a stop-out — the classic "re-strike at new ATM" |
| re-execute leg | Fresh entry on this same leg at market, N times / wait S sec | Re-selling the stopped side only |
| re-enter at original price | Places a limit at the leg's original entry; fills only if price comes back, capped at N times | "Only re-enter if the move reverses" — no chasing |
| close all losing legs | Exits every leg currently in the red | Cutting all the pain at once |
| close all profitable legs | Banks every winner | Locking gains when one side blows through its stop |
| close all CE buys / CE sells / PE buys / PE sells | Exits a whole side/direction class | Side-level risk-off — "if the sold CE stops, drop every CE sell" |
| move SL to cost on profitable legs | Ratchets winners' stops to breakeven | Making the rest of the basket risk-free after a stop |
| execute other leg | Fires a specific Leg ID, optionally after a delay | Waking an Idle hedge or reverse leg |
| execute other strategy | Launches another saved portfolio as a follow-up | Chaining a defensive strategy after a stop-out |
| Close Leg N / Enter Leg N | Direct close or fire of a named leg from the list | Precise cross-leg choreography |
Stacking conditions. + Add condition appends extra stop rows. Each row picks its own trigger — % of premium, premium points, ₹ P&L, spot either side/up/down, |delta|, × ATR, or absolute LTP ("exit if the premium itself trades ₹180") — its own action (the same vocabulary, plus just exit, close current strategy, close strategy & re-enter strategy, keep leg running, and add qty to this leg), and its own evaluation cadence (every tick or every X-minute close). Rows combine with AND (all) (every condition must be true — e.g. "premium up 25% AND spot beyond 150 points") or OR (any) (first one wins).
Timing controls. The group Check Frequency evaluates the stop on every tick or only at X-min bar close — bar-close checking ignores intrabar spikes entirely. SL Wait (sec) is a breach debounce (0–3600 s): the stop must stay breached that many consecutive seconds before firing, filtering one-tick flash spikes without dulling real moves. The × on the main row disables the stop altogether for a leg you intentionally run naked (say, a far OTM hedge).
The Target tab mirrors the stop exactly — same types, same fates, same stacking, plus one extra type: × SL distance (R-multiple) — the target is placed at X times the stop-loss distance (default 2), so a 30% SL with R 2 books at a 60% favourable move, keeping reward:risk constant however you tune the stop. A delta target fires when |delta| decays to the value — a natural "the option has gone far OTM, book it" exit for sellers.
Target follow-up actions: no further action, re-execute strategy, re-execute leg, add qty to this leg (pyramid the winner), close all losing legs, close all profitable legs, close all CE buys / CE sells / PE buys / PE sells, move SL to cost (this leg), move SL to cost on profitable legs, execute other leg, execute other strategy.
Example. Short strangle: each leg SL 40%, target 80% of premium, on-target action move SL to cost (this leg) on the other side — when one side books, the survivor can no longer lose.
Once the leg moves in your favour by the Trail Trigger (in % of entry premium or premium points), the stop starts ratcheting: every further Trail Step of favourable move lifts the stop by Trail Lock (leave Lock blank and it moves in full lockstep with Step). Trail Check runs every tick or every X-min close.
With two or more stop conditions on the leg, Trail Mode decides what trailing does to the rest: Shift together (default) moves every stop condition up with the trail — your ladder stays intact, just tighter; Trail only collapses everything to the single trailed stop once it arms — cleaner, but drops the other conditions.
Example. A sold leg at ₹100 with Trigger 20%, Step 10%, Lock 5%: nothing happens until the premium hits ₹80; from there every further ₹10 of decay pulls the stop down ₹5, turning an open-ended winner into a locked one.
Rupee guards on the leg's own P&L. Profit Locking — when the leg's profit reaches ₹X, never let it fall below ₹Y. Profit Trailing — every further ₹X of profit lifts that floor by ₹Y. Use these when you think in rupees per leg rather than premium percentages. Note: in backtests, profit lock/trail is honoured at the strategy level (Step 5); the per-leg version applies to live runs.
Adjustment rules watch the open position and repair it automatically — rolling, exiting or hedging legs as the market moves — the way a discretionary seller manages a straddle. Switch them on with Enable rules, then add one card per rule. They act on live and paper deployments; backtests replay a rule only when it is set to act automatically rather than alert-only.
| Rule | What it does | Configure | Use it when |
|---|---|---|---|
| Roll / exit a leg at a price level | When the CE and/or PE premium reaches your level, roll it N strikes or exit | Per-side trigger (leave one blank to skip that side); unit: % from entry, points above entry, or absolute ₹ (LTP); action: Roll away (further OTM), Roll in (closer to ATM), or Exit that leg | "If the sold CE doubles, roll it 2 strikes away" — mechanical defence |
| Roll / exit a leg at a delta level | Same, triggered by the leg's |delta| (0.02–0.99), rolling by steps or to a target |delta| (target overrides steps) | Actions: Roll away, Roll in, Exit that leg | Delta-based defence — "when a side reaches 0.45, roll it back to ≈0.25" |
| Price-diff band around entry (two-sided) | Draws a band above and below each leg's entry premium and acts on whichever edge is touched | Band width per side in ₹ points or % of entry; separate ▲ above-entry and ▼ below-entry actions: Roll away, Roll in, Exit leg, or Do nothing | Rolling losers away and rolling winners in from one rule |
| CE/PE divergence — winner & loser actions | Fires when the gap between the CE and PE premiums exceeds a threshold (in % of combined entry premium or absolute ₹) | Winner: Roll IN to ≈ % of loser's premium, Roll IN N strikes, Exit winner, or Do nothing; Loser: Roll AWAY N strikes, Exit loser, or Do nothing | A trending day skews the straddle — rebalance both sides in one shot |
| Rebalance — roll the cheap side in (premium match) | When one side's premium is ≥ N× the other (default 2), rolls the cheap side in until it's ≈ a set % of the expensive side (default 80) | The two numbers | Keeping a straddle's credit balanced without micromanaging |
| Delta / gamma hedge | Watches the basket's net delta (default trigger |0.20|), optionally net gamma, and re-balances | Action: Roll the heavy leg (delta-match, default) or Hedge with FUTURES (buy/sell front month, with an optional max-lots cap) | Staying delta-neutral; the futures variant hedges without touching the options |
| Spot re-center at ATM ± offset | When the underlying moves ≥ X% from entry, closes and re-opens the structure at the new ATM ± a strike offset | Move %, offset; movement measured on Spot (index), Futures (current month), or Synthetic future (ATM CE−PE) | The rolling-straddle behaviour, as a rule you control |
Guards apply across all rules: a minimum CE−PE strike gap (default 100 points) stops rolls from inverting the structure; an auto-action limit caps actions at N per run (default 3) with a cooldown between them (default 60 s) so a whipsaw can't roll you to death; and Only sold (SHORT) legs (default on) keeps the rules' hands off your hedges.
Everything here works on the basket as a whole — the sum of all legs — rather than any single leg.
For positional strategies, Auto-rollover squares off and re-enters the whole position on the next expiry, N days before expiry (default 1; 0 = expiry day itself) at a time you set (default 15:00). Use it for strategies that should stay on continuously — a perpetual covered structure that never faces expiry day unattended.
The basket-level version of Wait & Trade: hold all entries until the combined premium moves by your value. Units: pts (₹) — an absolute combined-premium level, pts_rel (default) — an offset from the combined premium when waiting starts, or %. A negative value waits for a move against the position (enter the straddle ₹5 richer than first quoted). The timeout sends orders to market anyway after S seconds (0 = wait forever). Any leg with its own Wait & Trade opts out of the basket-wide wait.
The same stop/target machinery as a leg, applied to the basket:
Types — % of combined premium · combined premium distance (points) · ₹ on basket MTM (the default — a plain rupee stop on the whole position) · spot moves either side · spot rises · spot falls (each in points or % of spot) · basket |delta| · × ATR(period).
Actions when it fires:
| Action | What it does |
|---|---|
| just exit | Fires the exit and nothing else |
| close current strategy (SL) / book the strategy (Target) | Square off every open leg — the default |
| close strategy & re-enter strategy | Flatten, then re-enter a fresh copy at the new ATM, × N times with a wait between |
| re-enter at original price | Flatten, then wait for the combined premium to return to the original entry level and re-enter the same strikes, capped at N times |
| close all losing legs / close all profitable legs | Partial exits by P&L |
| close all CE buys / CE sells / PE buys / PE sells | Partial exits by side and direction |
| move SL to cost on profitable legs | Breakeven-lock the winners |
| execute other leg | Fire a specific leg (with delay) |
| execute other strategy | Launch a saved portfolio as the follow-up |
+ Add condition stacks extra basket conditions (same trigger vocabulary, including absolute LTP), combined with AND (all) or OR (any) (default OR). The group Check Frequency is tick or X-min close, and SL Wait (sec) debounces basket-level breaches. In backtests, which run on 1-minute bars, waits under 60 seconds are absorbed into the bar; longer waits require the breach to persist across bars.
Example. A 2-lot short straddle with Combined SL ₹3,000 on basket MTM and Combined Target ₹5,000 turns the whole position into a simple risk:reward bracket, whatever the individual legs do.
Profit Locking/Trailing work independently of the Trailing switch — use locking alone for a simple "once I've seen ₹2,000, I keep at least ₹1,000" rule, or all three together for a full ratchet.
Two quieter protections also live at strategy level: a gap gate that can skip the day's entry when the underlying opens more than a set % away from the previous close — in either direction, gap-up only, or gap-down only — and an auto-hedge helper that can pick protection strikes by premium, by delta, by distance from ATM, or by strike distance. Use the gap gate on strategies whose edge dies on big gap days.
How orders actually reach the exchange.
All default to 0 = off:
Pick one day filter:
Sizing:
Send to Telegram bot pushes entries, exits, stops and warnings to your Telegram.
Show summary renders a one-page recap of every setting — read it before saving; it is the fastest way to catch a leg you forgot to configure. Then Save Strategy (saving again under the same name updates it), or Export JSON / Import JSON to move a strategy between accounts or keep versioned copies of your own.
The Backtest page replays a saved strategy bar-by-bar over minute-level options history — CE/PE prices, IV and OI per strike — with realistic fills, costs and slippage.
Run Backtest consumes 1 credit per year of range (a 5Y run = 5 credits; portfolio mode multiplies by the number of strategies; Algo Unlimited plans show ∞). The credits chip shows your balance, queued runs land in Backtest History, and every finished report offers three views of the same replay — Plain, With Costs and With Slippage — so you see exactly how much friction eats.
Upload a CSV of external entry/exit signals and the backtest trades only when your signal says so. A TradingView Strategy Tester "List of Trades" export works as-is; or use the two-column template — a date-time (YYYY-MM-DD HH:MM, IST) and a signal code: ENTRY, EXIT, LONG ENTRY, LONG EXIT, SHORT ENTRY, SHORT EXIT (short codes E, X, LE, LX, SE, SX).
Example. Export your TradingView supertrend system's trade list, upload it, set Long only, and backtest "sell an ATM put whenever my TradingView system is long" — your indicator logic, the platform's option execution.
Tick Parameter sweep (single-strategy mode) to test variants side by side without cloning the strategy. The composer shows only the sections your strategy actually uses — per-leg stop rows (type, value, leg fate, action — the same dropdowns as the Builder) and any enabled adjustment rules' numbers plus the Guards. Name a variant, Save as variant (variants persist between sessions), or Reset to original. The original always runs as the baseline; results list one row per variant, best first, and Use this writes the winning values back into the strategy.
Example. Sweep a straddle's stop across 20% / 25% / 30% / 40% in four variants, run once, and let the table tell you where the stop-out cost stops paying for itself.
The report opens with a recap of the strategy's rules and headline stat chips, then:
Every run is saved to Backtest History — filter by text, symbol, or result (All · Profit · Loss), and click any row to reload the full report instantly without spending credits on a re-run.
The backtester is built to be honest rather than flattering. Know these behaviours:
Backtestable indices — NIFTY, SENSEX and BANKNIFTY carry the deep options archive (minute bars, IV and OI per ATM±10 strike). NIFTY history starts 2021-05-28 (about five years), SENSEX from 2023-05-15. The date pickers clamp to each symbol's coverage automatically.
Backtestable stocks — 211 stock F&O underlyings are backtestable from 2026-06-18 onwards, the day full-chain stock options capture began. Stock backtests use each name's real exchange lot size (RELIANCE 500, for example) and monthly expiries only — there are no weekly stock options, and the Builder's expiry dropdown reflects that. Anything dated before 2026-06-18 is outside the stock archive; don't expect stock runs to reach further back.
Weekly expiries exist only for NIFTY and SENSEX. BANKNIFTY, FINNIFTY, MIDCPNIFTY, BANKEX, NIFTYNXT50 and all stocks trade monthly series — the Builder offers only Current/Next/Far Monthly on those symbols.
MCX commodities are live-and-forward-test only: options on crude, natural gas, gold and silver (plus minis), and futures-only metals and index contracts. The backtester refuses MCX underlyings — use a free paper forward test to evaluate MCX strategies on live prices. MCX strategies can run to 23:30 IST with MIS square-off at 23:25.
Rule of thumb: if the symbol shows the "✓ backtest" badge, replay it against history; for everything else, save the strategy and forward-test it on the paper broker — same recipe, live data, zero credits.