Methodology & honest limits
How the numbers are computed — and what we don't claim
The line between a real analytics tool and a get-rich-quick tout is transparency. Here is exactly how TradePulse produces every figure it shows you, the conventions behind each metric, and the things we deliberately do not pretend to do.
The organising principle is a division of labour: the AI proposes and explains; deterministic code validates, calculates, simulates, and enforces the risk boundaries. TradePulse is a research workbench and a paper-trading simulator — not a signal service, not an autonomous trading bot, and not a source of financial advice.
Backtest and paper results are hypothetical, benefit from hindsight, and do not reflect real trading. Past performance is not indicative of future results. Not investment advice.
Event-driven backtest engine
- Bars are replayed one at a time — the engine can only act on information available up to that bar, so it is structurally look-ahead-free.
- Orders fill at the next bar's open, never the signal bar's close. No same-bar hindsight.
- Every run is reproducible: it records a spec hash, an engine version, and a data fingerprint.
Costs are modeled by default
- Commission of 2 bps per side and 1 bps of adverse slippage are applied to every fill.
- Reported returns are therefore net of costs — the total commission paid is shown alongside every result.
- A zero-cost mode exists only for internal tests and is loudly flagged; it is never the default.
Risk controls are enforced, not decorative
- Position caps, a max-daily-loss halt, and consecutive-loss limits run inside the engine.
- Each risk event is recorded on the result — you can see exactly when a control fired.
- Real-money trading stays gated behind these hard controls by design.
How performance is reported
- Drawdown is always shown next to returns — an equity curve on its own hides risk.
- Sharpe and Sortino are annualized with a risk-free rate of 0. That is stated wherever they appear so the numbers are auditable.
- Every trade is exportable to CSV. Backtest numbers carry a persistent 'hypothetical performance' notice.
- The only performance figures we publish anywhere are runs of one fixed, un-optimized reference SMA-crossover strategy: one aggregate on the landing page and one per public ticker page. All of them come from this exact engine over delayed historical bars, shown per run (never compounded), net of costs, and under the same hypothetical notice. They illustrate the method; they are not a claimed or achievable return.
Market data & provenance
- Prices are polled on roughly a 30-second cadence and are delayed — they are labeled DELAYED with a last-updated time, never presented as a live tick. Some deployments poll less often; the badge tells you when a value was last fetched.
- There is no claim of a real-time consolidated (SIP) feed, and no sub-second or streaming-tick claim anywhere in the product.
Paper trading
- Paper sessions run the exact same engine as a backtest, against the same delayed, polled bars — it is a simulation, not a broker connection.
- Fills are simulated on those bars — there is no real-market liquidity, latency, or partial fills. This is disclosed on the paper screen.
The AI copilot is grounded
- It generates a validated strategy spec from plain English — and never auto-executes it.
- Explanations are instructed to use only the numbers actually present in a result, and to refuse rather than invent.
- The model is instructed to close every response with a not-investment-advice note. That is a prompt instruction, not a server-side guarantee — we do not currently append it if the model omits it.
What we deliberately don't claim
Honesty is structural here — if something can't be genuinely real on this stack, we don't fake it in the UI. These are on the roadmap, not in the product today:
- A real-time, full-market consolidated (SIP) data feed — data is delayed/polled.
- Real-money order placement. The live-trading path refuses by construction: the controls it requires (opt-in, 2FA, step-up auth, kill-switch, per-order confirmation) are not implemented, so it returns 403 rather than pretending to be switchable.
- A survivorship-free reference universe. The landing-page track record covers a small, hand-picked list of currently-listed large caps and major crypto pairs, chosen with hindsight, and a symbol only counts once enough history has been backfilled for it.
- Survivorship-bias-free or point-in-time fundamentals.
- A drag-and-drop or node-graph strategy builder. Strategies are one canonical JSON spec, authored by hand or drafted by the copilot — there is no second authoring path.
- An automatic in-sample / out-of-sample (train/test) split on backtests.
- Deflated-Sharpe or multiple-testing correction for strategy search.
- A buy-and-hold benchmark overlay on the reference/track-record numbers — the delayed price series is exposed on the public ticker pages, but the side-by-side benchmark comparison is still on the roadmap.
Third-party notices
- Price and equity charts are drawn with TradingView's Lightweight Charts™ library (Apache-2.0), whose licence requires this attribution: Charts by TradingView Lightweight Charts™. We license the library; TradingView does not endorse or review TradePulse.
- Market data is sourced from public providers and is delayed. TradePulse is not a broker, exchange, or registered investment adviser.