Strategy Builder
Configure a new strategy top-to-bottom · save it or fire it straight to the broker.New Strategy
(no watch instruments yet — conditions can only reference what you add here)
(both times blank — no overnight hold; the strategy enters and exits the same day)
(overnight protection off — short legs carry the overnight gap unhedged)
| Leg ID | Idle | Hedge | Side | Fut/Opt | Type | Strike Selection | Strike Value | Expiry Selection | Expiry | Qty (Lots) |
|---|
(no legs yet — add one row per order)
(rules disabled — the position is never auto-adjusted)
Contract Rollover
Strategy Risk Settings
(no combined wait — legs place as soon as the entry fires)
(set Combined SL above — preview rebuilds as you type)
(set Combined Target above — preview rebuilds as you type)
(enable trailing and fill Trigger / Step / Lock to arm it)
Order sequencing & failure policy
buy_first avoids the SPAN spike when selling naked options.Futures/Synthetic use the forward (premium/discount to spot) — e.g. spot 20000 but futures 20080 picks a higher ATM strike. Backtest: spot uses the cash series, futures/synthetic use the archived synthetic-future.cancel_all unwinds the already-placed legs (safest). keep_placed trades a partial basket.retry_failed. After this many attempts, the policy falls back to cancel_all.Risk + Timing
Days + Capital Sizing
Notifications
config.yml → notify.telegram. Empty config = log-only.Order execution
(default execution — parallel legs, market entries)
Show summary
Strategy View
Two views of the same data — by strategy, or grouped by broker account. 🔗 Broker deploys to an account; 📦 Portfolio optionally groups. Expand any row for its positions, orders, trades & logs.Broker Accounts
Connect once, trade everywhere — accounts are shared across Options, Trade & Algo. Enable an account to let live strategies place orders through it; copy-trading mirrors them to your other accounts.Copy Trading
Place once on the leader; the engine mirrors to followers with a size multiplier. Accounts are managed on the Broker Accounts page.⇄ Copy Trading settings
Add Broker Account
Credentials live in the engine's SQLite store and are masked in every read response. Kite Connect requires API Key + Secret from kite.trade; Access Token expires daily and must be refreshed.
Portfolios
Deploy saved Strategies on a Broker with a Multiplier. Portfolio-level risk caps stop the whole container when the daily loss cap is hit.Signals
Create a signal → it gets its own webhook URL. Send it from TradingView, Python, Amibroker, NinjaTrader or any program (or fire it manually). On hit, the linked strategies run / square-off on their broker accounts. We only receive signals — we don't generate them.Signal Configuration
Strategy Selection
| Strategy | Signal Types | Remove |
|---|---|---|
| add a strategy to configure its signal types | ||
Link Brokers
| Strategy | Broker Accounts (× multiplier) |
|---|---|
| add a strategy first | |
Signal Dashboard
Cumulative Signal Logs
New Portfolio
A Portfolio bundles one or more saved Strategies, each pinned to a Broker with a size Multiplier. Risk caps below stop the whole container when breached — the engine will not start any further Strategy in this Portfolio for the day.
Assign Broker
Assign one saved Strategy to one Broker Account with a size Multiplier. The Multiplier scales the leg lots and any ₹-based SL / Target (PNL-mode rungs); points / % / underlying-move / delta stay unchanged. Each broker account can be used once per strategy — no duplicate deployments.
Assign Broker
Assign this strategy to an account. Pick a 🧪 Demo account to forward-test (free, simulated fills at live prices — shows under Forward Test) or a 🟢 Real broker to trade live (shows under Algo). The Multiplier scales leg lots and ₹-based SL/Target. Then click ▶ Deploy on the row to start it.
Deploy portfolio
Pick an account for EACH strategy — a Demo (paper) account forward-tests with simulated fills at live prices (free); a Real broker account trades live (your 1st live strategy is free, each additional concurrent one is 100 credits/month or Algo Unlimited). Leave a row on “— skip —” to not launch it.
Include Strategy
Group a saved Strategy into this Portfolio. This is organisation only — the strategy goes live once you Assign Broker. Portfolio risk caps then apply to all its deployed strategies.
Webhook
Fire a saved portfolio from TradingView, Chartink, or any HTTP source.Your endpoint
POST naming a saved strategy + an optional signal. Any {{signal.<field>}} placeholder in the strategy's saved params is filled from the signal before it runs — so one template runs with whatever the alert sends (symbol / qty / side / strike / legs).Build your trigger
Sample template — copy & fill ● mandatory ● optional
{
"saved_strategy": "my_template", // required — saved strategy name
"broker_id": "paper", // optional — broker override
"signal": {
"symbol": "TCS", // your {{signal.symbol}}
"instrument": "FUT", // FUT (front month) | EQ
"side": "BUY", // BUY | SELL | EXIT_BUY | EXIT_SELL
"qty": 1, // lots (FUT) / shares (EQ)
"sl": 10, // optional — stop-loss in points
"tgt": 20, // optional — target in points
"trail": "5/3" // optional — trail step/jump (pts)
}
}
{
"saved_strategy": "my_template", // required
"broker_id": "paper", // optional
"signal": {
"underlying": "NIFTY", // NIFTY | BANKNIFTY | SENSEX | <stock>
"legs": [
{ "side":"BUY", "qty":10, "type":"PE", "strike":"ATM", "expiry":"current" },
{ "side":"SELL", "qty":10, "type":"CE", "strike":"ATM+2", "expiry":"current" }
]
// side BUY|SELL · type CE|PE · strike ATM / ATM±n / 23500 · expiry current|next|YYYY-MM-DD
}
}
saved_strategy is truly required. The signal fields are whatever {{signal.*}} placeholders your strategy uses — these two are the recommended shapes. Copy gives clean comment-free JSON ready to paste into TradingView / Chartink / your script.Body
{
"saved_strategy": "my_template", // saved strategy to fire
"broker_id": "paper", // optional broker override
"signal": { … } // fills {{signal.*}} in the template
}
Signal — Directional (Futures / Cash)
"signal": { "symbol":"TCS", "instrument":"FUT", "qty":1,
"side":"BUY", "sl":10, "tgt":20, "trail":"5/3" }
// instrument: FUT (current month) | EQ · qty: lots (FUT) or shares (EQ)
// side: BUY | SELL | EXIT_BUY | EXIT_SELL · sl/tgt/trail in points (optional)
Signal — Options (multi-leg)
"signal": { "underlying":"NIFTY", "legs": [
{ "side":"BUY", "qty":10, "expiry":"2026-06-23", "strike":"ATM", "type":"PE" },
{ "side":"BUY", "qty":10, "expiry":"2026-06-23", "strike":23500, "type":"CE" }
] }
// strike: absolute (23500) or relative (ATM, ATM+2…) — engine resolves ATM from live spot
Wiring placeholders in the Builder
"qty":"{{signal.qty}}",
"strike_offset":"{{signal.offset}}",
or the whole "legs":"{{signal.legs}}" — then Save it. The webhook fills them per call.Example
curl -X POST <your-webhook-url> \
-H "Content-Type: application/json" \
-d '{ "saved_strategy":"my_template", "broker_id":"paper",
"signal": { "underlying":"NIFTY",
"legs":[{"side":"BUY","qty":10,"expiry":"2026-06-23","strike":"ATM","type":"PE"}] } }'
Backtest
Backtest History
Every backtest you run is saved here. Click any row to reload the full report — no need to re-replay the bars.| Run (IST) | Strategy | Symbol | Period | Cost / Slip | Net PnL | Trades | Win % | Max DD | Status | Actions |
|---|---|---|---|---|---|---|---|---|---|---|
| No backtests yet — run one from the Backtest tab. | ||||||||||
✨ AI Access
Connect your AI assistant to FNOTrader MCP — build and backtest strategies by describing them in plain English.Build & backtest by asking your AI
Connect Claude, ChatGPT or any AI assistant to FNOTrader MCP and describe strategies in plain English — the AI creates them and runs backtests on the same engine, data and credits as this app.
"Backtest a NIFTY 09:20 short straddle with 30% SL per leg for 2023–2025"
or
"Try the same on RELIANCE and sweep the SL at 20/30/40%".
Your usage
Journal
Performance from every executed run — overall, per portfolio, per strategy. Captured automatically when a run finishes; gate-blocked runs are excluded from the metrics.Day Summary
Strategy-wise
| Strategy | Mode | Accounts | Runs | Orders | Positions | PnL ₹ |
|---|
Account-wise
| Account / Strategy | Mode | Runs | Orders | Positions | PnL ₹ |
|---|
Equity curve
cumulative realized P&L by day, with the drawdown band — same read as the backtest report.Portfolio level
Holding-time analysis
Strategy level
Historical Charts
Replay any trading day's CE / PE option candles and combined premium straight from the bar archive, with backtest entry/exit markers. Cursor is synced across all three charts.| Date | ATM | Expiry | DTE | Open | Close | Reason | PnL ₹ | Cum PnL ₹ | DD ₹ | Legs (entry → exit) |
|---|---|---|---|---|---|---|---|---|---|---|
| Select a backtest result above to see its per-day trades. Click any row to load that day's CE/PE + combined charts with entry/exit markers. | ||||||||||