Features
The whole workbench, in one place
Research, build, test, run, and file — without moving your data between four tools that disagree with each other. Everything below is one product, built for the Indian market and the person who trades their own money.
Market data
Bhavcopy ingest with a data-quality scanner that flags gaps, spikes, and unadjusted corporate actions.
Paper execution
Order lifecycle, partial fills, rejections, resting limit and stop orders, and realistic costs.
Portfolio
Exposure by instrument, gross and net, live P&L, and a blotter backed by a durable ledger.
Alerts
Rules on deployment state, order state, risk breaches, system events, and price.
StratHub
Publish and fork strategies with the logic visible — no black boxes, no return leaderboards.
Family office
Multiple entities under one roof, with tenancy enforced in the database itself.
The screen
A terminal, not a webpage
Dense, keyboard-first, and honest about state. Twenty-eight pixel rows and tabular numerals everywhere, so forty watchlist rows fit on a 1080p screen without scrolling. Every panel has a hotkey, every hotkey has a name, and the whole map lives behind a single question mark.
- Watchlists and charts — side by side, with the tape running underneath.
- Screener — over daily candles — trailing returns, moving averages, volume ratios, N-day highs. Save a screen and come back to it.
- News — ingested from Indian market sources, tagged by symbol and scored.
- Command bar — for anything you would otherwise hunt through a menu for.
- NIFTYfno24,872.55+0.00%
- BANKNIFTYfno51,204.85+0.00%
- RELIANCEfno2,984.40+0.00%
- HDFCBANKfno1,684.75+0.00%
- TCS4,248.90+0.00%
- INFY1,910.20+0.00%
The idea
Describe a strategy in English, read the Python it becomes
You write what you mean. The platform turns it into Python you can actually read — not a black box with a slider on the front. If you cannot follow the code, you should not be trading the strategy, so the code is the deliverable rather than a hidden implementation detail.
- Plain-English parsing — into a typed strategy config — opening-range breakouts, moving-average crosses, RSI mean reversion.
- Indicators — ATR, RSI, moving averages, and more arriving — used for entries, exits, and position sizing.
- Import what you already have — from Pine Script, AmiBroker AFL, Python, or a spreadsheet, with a fidelity report on what carried over.
- Every version kept — so a strategy's history is a record, not a memory.
buy nifty on the 15-minute opening-range breakout when the breakout candle has above-average volume. exit on a 1% trailing stop, or at 3:00pm ist. paper only, one lot.
from vq import Strategy, indicators as ind
class OpeningRangeBreakout(Strategy):
instrument = "NIFTY-FUT"
timeframe = "15m"
session = "09:15-15:00"
def setup(self):
self.or_high, self.or_low = None, None
self.avg_vol = ind.rolling_mean("volume", window=20)
def on_bar(self, bar):
if bar.time.time() == time(9, 30): # first 15m closed
self.or_high, self.or_low = bar.high, bar.low
return
if self.position.is_flat and self.or_high is not None:
if bar.close > self.or_high and bar.volume > self.avg_vol.value:
self.buy(1, stop=trail(pct=0.01), reason="orb+vol")
if bar.time.time() >= time(15, 00) and self.position.is_long:
self.close(reason="eod-exit")The test
Backtests that argue with you
Most backtesting tools are optimism machines: they hand you the best curve you can find and let you believe it. This one runs the same execution model your paper trades use — real slippage, the full Indian charge stack, per-segment fee profiles — and then tells you when the result looks too good.
- Costs included by default — brokerage, STT, exchange and SEBI fees, stamp duty, GST, and depository charges, by segment.
- An overfitting verdict — above the fold, checking in-sample against out-of-sample, trade count, concentration, and fragility.
- Parameter sweeps — that run server-side, survive a refresh, and reuse results they have already computed.
- Reproducible — every run pinned to a named data snapshot and a seed, so the same inputs give the same trades.
Two of four checks failed. The edge is concentrated in a handful of trades and does not hold up out of sample.
- net p&l
- ₹1,84,300
- after costs
- ₹1,41,880
- max drawdown
- −11.4%
- trades
- 218
- win rate
- 47.2%
- cost drag
- ₹42,420
- in-sample vs out-of-samplereturn halves out of sample
- trade count218 · above the floor
- concentrationtop 5 trades = 61% of p&l
- parameter fragilitystable ±1 step on both knobs
The run
Deploy it, and watch every order it sends
A strategy that passes its backtest gets deployed to paper, where it runs server-side against live prices — not in your browser tab. Every order it places is written to the same durable ledger live execution will use, so what you see in paper is the shape of what you will see with real money behind it.
- The full order lifecycle — placed, acknowledged, partially filled, filled, rejected, cancelled — with the reason attached.
- Realistic execution — slippage, resting limit and stop orders, and the Indian charge stack applied per segment.
- An event log — for every state change, so a surprising fill has a trail you can follow.
- Halts that hold — a risk breach or a market-state guard stops the deployment on the server, not in the tab.
- 09:22:14infostrategy started · seed 4471
- 09:22:15infobroker · zerodha · connected · egress 43.204.11.7
- 09:22:16warnreconcile · 1 open order carried from prev session · resolved
- 09:25:03infoskipped entry · spread 0.18% > threshold 0.10%
- 09:28:41infobuy · NIFTY 24900 CE · qty 25 · avg 118.40 · id ord_8f21
- 09:34:12infotrail stop · 112.00 → 114.60
- 09:41:57infosell · NIFTY 24900 CE · qty 25 · avg 123.15 · id ord_8f21 · +4218.50
- 09:42:00inforeconciled with broker · positions match
- 09:42:15warnexpiry watch · position closes into wk of 2026-08-28 · auto-square-off scheduled
The book
Risk that stops the account, not just the strategy
Per-strategy limits are the easy half. The harder half is the account: five strategies each behaving reasonably can still bust a book between them. Exposure is computed across everything you are running, and the drawdown cap halts the whole book — including the profitable strategy, because the cap is on the account.
- Pre-order checks — on capital, daily loss, position count, order value, and per-instrument exposure.
- A book-level drawdown governor — enforced on the server, so it keeps working after you close the tab.
- Market-state guards — for a closed market, a stale feed, a circuit breaker, or a disconnected broker.
- A kill switch — always in reach — per strategy, per account, and global.
| strategy | cap · used | today p&l | pos | state |
|---|---|---|---|---|
| orb-nifty-15m | ₹1,00,000 62% used | ₹1,140 max −₹5,000 | 1/5 | active |
| mean-rev-bank | ₹2,00,000 41% used | — max −₹8,000 | 0/3 | idle |
| straddle-expiry | ₹75,000 88% used | ₹3,720 max −₹4,000 | 2/4 | warn |
- gross exposure
- ₹3,42,000
- net exposure
- ₹1,18,000
- margin used
- 47%
The paperwork
An Indian tax engine that shows its working
Capital gains, speculative and non-speculative business income, ICAI turnover, set-off and carry-forward, advance tax with interest, and the ITR form that follows from all of it. Every figure records which version of the rules produced it, so recomputing an old year uses that year's rules rather than today's.
- FIFO lot ledger — auditable end to end, with Section 112A grandfathering handled.
- Versioned rules — with citations — rates never live in the code that computes.
- A CA seat — with a scoped, read-only, token-linked view, and every access logged.
- Exports — as a multi-sheet workbook, CSV, or an ITR-shaped JSON payload.
| instrument | lots consumed | held | gain |
|---|---|---|---|
| INFY 120 · sold 12 Feb 25 | 40 @ 18 Mar 22 · 80 @ 02 Aug 24 ltcg + stcg | split | +₹84,250 |
| HDFCBANK 60 · sold 28 Jan 25 | 60 @ 11 Nov 21 ltcg | 1,174d | +₹42,980 |
| NIFTY 24000 CE 150 · sold 27 Feb 25 | 150 @ 27 Feb 25 non-spec | intraday | −₹18,400 |
| TATAMOTORS 200 · sold 05 Mar 25 | 200 @ 22 Jan 25 stcg | 42d | +₹23,110 |
- s. 112a rate
- 12.5% · w.e.f. 23 Jul 24
- s. 111a rate
- 20% · w.e.f. 23 Jul 24
- stamped on
- every classification
Recomputing this year in 2027 uses v2024-25.3, not whatever the table says then.
Built in, not bolted on
The parts you only notice when they are missing
A trading platform holds your positions, your broker keys, and your tax position. These are the things that matter on the day something goes wrong.
Your data is separated at the database
Tenant isolation is not only application code. Row-level security policies mean a query that forgets its filter returns nothing, rather than someone else's trades.
Every change is written down
Each state-changing request is recorded with who did it, when, from where, and what changed — with secrets stripped before anything is stored.
Credentials are encrypted, not stored
Broker credentials are sealed with a per-secret data key. Reading one requires re-entering your authenticator code, and every read is logged.
The numbers reconcile
Positions are checked against the fill ledger, and orders against their lifecycle. A mismatch raises an alert instead of waiting to be noticed.
What this is not
We do not give advice, publish returns, or run a signal service. There are no performance leaderboards and no copy trading. The platform gives you tools and shows you its working; the decisions and the outcomes are yours. Trading carries risk, including the loss of capital.
See it on your own data
Access is opening in stages. Join the list and we will get in touch when your seat is ready.