NSE closed·  :  :   IST
sandbox · v0.1

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 chartsside by side, with the tape running underneath.
  • Screenerover daily candles — trailing returns, moving averages, volume ratios, N-day highs. Save a screen and come back to it.
  • Newsingested from Indian market sources, tagged by symbol and scored.
  • Command barfor anything you would otherwise hunt through a menu for.
workspace · nifty-eodresearchoptions chain+
live · delayed 15m kill · global
watchlist · nifty topltp · chg
  • 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%
chart · NIFTY · 5mo 24866.10 · h 24892.75 · l 24851.40 · c 24872.55
vol 1.24M · +0.11%reference: BSE · anomaly: none
K command bar · ? hotkey mapdepth L1 · reconciled 1s ago

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 parsinginto a typed strategy config — opening-range breakouts, moving-average crosses, RSI mean reversion.
  • IndicatorsATR, RSI, moving averages, and more arriving — used for entries, exits, and position sizing.
  • Import what you already havefrom Pine Script, AmiBroker AFL, Python, or a spreadsheet, with a fidelity report on what carried over.
  • Every version keptso a strategy's history is a record, not a memory.
strategy · orb-nifty-15mbacktestdiff+
draft · v1 kill · global
plain englishyour input

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.

notes.pdf · 2 pageschart.png
generated pythonreadable · editable · diffable
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")
fidelity reportspec extractedokcode typechecksokbacktest readyoknotesassumed avg-vol window = 20 bars
enter generate · b backtestpython 3.12 · vq-sdk 0.1

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 defaultbrokerage, STT, exchange and SEBI fees, stamp duty, GST, and depository charges, by segment.
  • An overfitting verdictabove the fold, checking in-sample against out-of-sample, trade count, concentration, and fragility.
  • Parameter sweepsthat run server-side, survive a refresh, and reuse results they have already computed.
  • Reproducibleevery run pinned to a named data snapshot and a seed, so the same inputs give the same trades.
backtest · orb-nifty-15msweeptradescosts+
sandbox
overfitting checktreat with caution

Two of four checks failed. The edge is concentrated in a handful of trades and does not hold up out of sample.

equity curve · net of costsin-sample · out-of-sample
apr 24oos splitmar 25
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
what was checked4 tests
  • 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
K command bar · ? hotkey mapsnapshot nse-eod-2025-03-31 · seed 4471

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 lifecycleplaced, acknowledged, partially filled, filled, rejected, cancelled — with the reason attached.
  • Realistic executionslippage, resting limit and stop orders, and the Indian charge stack applied per segment.
  • An event logfor every state change, so a surprising fill has a trail you can follow.
  • Halts that holda risk breach or a market-state guard stops the deployment on the server, not in the tab.
deploy · orb-nifty-15mblotterpositions+
shadow trading kill · global
01backtest5y · seed 42
02paper42 sessions
03shadowsession 3 of 5
04livepending mfa
event log · todayts (ist) · sev · event
  • 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
K command bar · ? hotkey mapstrategy-id NSE_ALG_2026081712 · rate 8/s · limit 10/s

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 checkson capital, daily loss, position count, order value, and per-instrument exposure.
  • A book-level drawdown governorenforced on the server, so it keeps working after you close the tab.
  • Market-state guardsfor a closed market, a stale feed, a circuit breaker, or a disconnected broker.
  • A kill switchalways in reach — per strategy, per account, and global.
capital · limitsexposuredrawdown+
portfolio kill · global
per-strategy riskcap · dd · pos · state
strategycap · usedtoday p&lposstate
orb-nifty-15m
₹1,00,000
62% used
₹1,140
max −₹5,000
1/5active
mean-rev-bank
₹2,00,000
41% used
max −₹8,000
0/3idle
straddle-expiry
₹75,000
88% used
₹3,720
max −₹4,000
2/4warn
portfoliorolled up
gross exposure
₹3,42,000
net exposure
₹1,18,000
margin used
47%
drawdown governor-4.2%
current -4.2%halt at -8%
K command bar · ? hotkey mapreconciled 2s ago · limits enforced at api

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 ledgerauditable end to end, with Section 112A grandfathering handled.
  • Versioned ruleswith citations — rates never live in the code that computes.
  • A CA seatwith a scoped, read-only, token-linked view, and every access logged.
  • Exportsas a multi-sheet workbook, CSV, or an ITR-shaped JSON payload.
fy 2024-25 · capital gainsbusiness incomeadvance taxitr+
computed
fifo lot ledgerdisposal → lots consumed
instrumentlots consumedheldgain
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
heads of incomeafter set-off
ltcg · 112a₹96,430
₹1,25,000 exempt applied12.5% · ₹0
stcg · 111a₹35,910
after set-off20% · ₹7,182
non-speculative−₹18,400
carried forward 8 yrsslab · ₹0
rule provenance
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.

K command bar · ? hotkey maprules v2024-25.3 · recompute is deterministic

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.