PRE-TRADE SAFETY GATE · PUBLIC BETA
FINRA retired the PDT rule on June 4. Keep the speed bump — make it yours →

Every signal, checked before your broker sees it.

Send Titan a signal. It runs 26 safety checks, then forwards or blocks — and hands back the decision, the reason, and a decision receipt you can verify later.

Refuses broker custody · broker credentials · signal generation · shared-secret writes into /tv
The instrument

One instrument. Four operations.

Titan is one instrument. It performs four operations on every automated trading decision your strategy makes, and each operation has a recorded boundary.

Operation Recorded evidence Refusal boundary Operator surface
Record Signal payload, gate verdicts, evidence, timing, config hash, eval hash, decision signature. Payloads carrying broker credential fields are rejected; missing agent keys cannot write a live signal. Decision receipt
Replay Candidate config, replay run, selected signal window, per-signal verdict flips, cascade state mutations. Replay is not backtesting and does not predict profit; it only re-evaluates recorded decisions. Deploy Gate run
Verify Audit-chain leaf, per-account root, daily aggregate root, OpenTimestamps proof when available. Bitcoin anchoring proves commitment to recorded evidence, not that the original input was complete. Anchor proof file
Watch Released candidate, live decision observation, warning materialization, drift status, review state. Low evidence stays low evidence; release status is withheld when the observation window is too thin. Release Watch
Partial broker state Account-state gates are marked partial instead of silently passing or failing.
Agent key required Live signal writes require a tenant-bound agent key; shared TradingView secrets are not enough.
Anchor pending Receipts show anchor status honestly; missing proof bytes are status, not a promised download.
Follow one signal
SIGNAL
TradingView / Python / REST
TITAN
26 checks · record · anchor
YOUR FORWARDER
your machine · your keys
BROKER
Alpaca

The dashed arrow is the boundary. Everything to its left is the hosted Titan server; everything to its right runs on your machine. Titan evaluates, records, and anchors the decision — then your forwarder, holding your broker keys, is the only thing that places, closes, or cancels an order.

Layer What happens Recorded as
Ingest Normalize field aliases, dedupe by signal id, enforce the 1 MB body limit, reject any broker-credential field, and authenticate the agent key. The account is bound to the key — never to a value in the payload. rate-limited · 400 on broker keys
Evaluate Run the configurable 26-check pipeline. The first failing check stops evaluation — the checks after it never run. EXIT signals skip the entry-only checks. Gate verdicts
Decide Forward or block. A forward records the order intent it would hand off — the order it would submit, or the position it would close. The cloud sends nothing to a broker. status + order intent
Record Write the decision receipt: signal, normalized payload, every gate verdict, timing, config hash, evaluation hash, decision signature, and the broker-state source it read. Decision receipt
Anchor Append one tamper-evident leaf to your account's hash chain in the same database transaction. Leaves roll into a daily Merkle root; the root is committed to Bitcoin via OpenTimestamps. Hash chain → Bitcoin
Execute Off-cloud. Your forwarder polls the forwarded decision, executes it with your broker keys, then pushes broker state and fills back so the next decision sees reality. Fills + broker state
The boundary The hosted server holds no funds, stores no broker credentials, and contains no order-submission call at all — a static code test fails the build if one is ever added. Your forwarder is the only thing that touches a broker.
The pipeline

Twenty-six checks, in order.

Every signal runs the same ordered pipeline. Each check is individually toggleable per account — resolved from your agent override, then your account setting, then the system default. The first failure stops evaluation, so a blocked signal records exactly which check stopped it and leaves the rest unevaluated.

01Duplicate Signalthis exact signal hasn’t been evaluated already
02Valid Sidealways onthe side is BUY or EXIT
03Symbol Allowlistthe symbol is on your allowlist
04Crypto Enabledcryptocrypto is enabled for the account
05Buy Cooldownbuythe buy cooldown for this symbol has elapsed
06Re-Entry Lockbuythe reentry lock since the last exit has cleared
07Account Readyalways onthe account is in a tradable state
08Daily Loss Limittoday’s realized loss is under the cap
09Max Drawdownaccount drawdown is within the ceiling
10Win Rateoff by defaultrecent win rate is above the floor
11Max Daily Tradesoff by defaultthe daily trade count is under the cap
12Market Hoursthe market is open for this instrument
13Late-Day Cutoffbuyit’s before the late-day entry cutoff
14Position Exposurecurrent exposure can be computed
15Position Limitopen positions are under the maximum
16Already Heldthe symbol isn’t already held
17Price Validityalways onthe signal price is a valid number
18Price Driftthe signal price tracks the broker’s mark
19ATR ValidityATR is within the valid range
20Minimum DTEoptionsthe option expires far enough out
21Expiry Concentrationoptionsnot too many positions share an expiry
22Portfolio Deltaoptionsprojected portfolio delta is within limit
23Portfolio Thetaoptionsprojected portfolio theta is within limit
24Quantity Checkthe order quantity is within bounds
25Concentration Riskoff by defaultsector exposure is within limit
26Bracket Validitythe stop distance meets the minimum

Two dozen toggleable gates plus the always-on account-readiness and price-validity checks. Options signals add the expiry, Greeks, and portfolio-VaR checks (20–23 and beyond); equities skip them. EXIT signals skip the entry-only checks and record them as not-applicable rather than passing them silently.

Replay the alternative

Deploy Gate.

Deploy Gate replays a candidate config against the signals that actually crossed your pipeline. CI/CD for trading rules — change a setting, replay your real signals, see what would change before going live.

DEPLOY GATEreplay extract fixture
max drawdown  8% → 5%
replay run · signal window from April 1 · source: recorded signals
3 stored signals would flip from forwarded → blocked
  • AMD·blocked by Position Limit
  • TSLA·blocked by Daily Loss Limit
  • MSFT·blocked by Position Limit

Standard replay evaluates signals independently. Cascade replay is sequential: each forwarded signal changes portfolio state, and the next signal evaluates against that new state. Both replay real signals with real broker state — not backtesting, not synthetic data. You see what the candidate policy would have decided on every signal that actually crossed the pipeline, with the actual state evidence Titan recorded at the time.

Counterfactual replay applies the same machinery to a single past decision. Re-evaluate one historical trade under hypothetical config overrides, without writing anything. The evidence chain that runs against a cohort runs against a single decision.

Does not prove future profitability, market fit, or a safer strategy. It proves how a candidate policy evaluates the recorded signal and state window.
Verify the record

Bitcoin-anchored audit chain.

Titan publishes Bitcoin-anchored commitments to canonical audit state at known times. Downstream users can take the trust-minimized local verification path with Bitcoin Core, or run a convenient external block explorer check with the explorer's trust assumptions.

How it works

Each recorded decision evaluation produces a leaf hash, written in the same database transaction as the decision itself. Leaves aggregate daily into per-account roots. Account roots aggregate into a single daily aggregate root. The aggregate root is committed to Bitcoin via OpenTimestamps and typically receives a Bitcoin attestation within hours.

Once anchored, a changed record no longer matches the published Bitcoin commitment — tampering becomes detectable by anyone, using only public data and the proof file. Input soundness is a separate layer (Titan's state provenance and deterministic re-evaluation handle that); Bitcoin provides the post-hoc proof that a record is the one Titan committed to, at the time it says.

source record Per-account audit hash chain
proof file GET /api/public/v1/decisions/:trace_id/audit-anchor.ots
unavailable state pending, awaiting daily root, pre-chain, or proof not yet available
trust boundary calendar, explorer, or local Bitcoin Core node
Three rungs of verification
Rung What you trust Setup
1 OpenTimestamps calendars No Bitcoin node required — inspect the proof file and calendar attestations
2 A public Bitcoin block explorer (mempool.space, blockstream.info) None — open a URL
3 Local Bitcoin Core node ~10 GB pruned, one-time sync

The published commitment is the same at every rung. Bitcoin Core gives the strongest local verification path; block explorers are faster external checks that leave the explorer in the trust model.

Trace receipts and anchor proofs

Anchored traces in the operator console show anchor status. .ots proofs are downloadable when proof bytes are available; pending or unavailable proofs stay visible as status, not as a promised file. For proof-backed decisions, checking the commitment against Bitcoin is a one-command walkthrough — the same command an external auditor would run.

The verifier at /verify-decision recomputes the entire chain in your browser — its own SHA-256, its own Merkle folding, no server calls and no libraries. It walks a decision's leaf up through the per-account root and the daily aggregate root to the exact fingerprint handed to Bitcoin, and ships a self-test that rejects five tamper cases before it trusts itself. You are not asked to trust Titan; you re-derive the commitment and check it against a public block explorer or your own node.

Watch the release

Releases under observation.

A candidate's job isn't done when it goes live. After release, Titan compares live behavior against the replayed expectation and flags drift when the decision stream no longer matches the baseline.

How it works

When a candidate is released, Release Watch attaches to the release record. It evaluates live decision observations against the warnings the Deploy Gate run produced — for example, additional Position Limit blocks after a tighter config. If live behavior matches a recorded warning, Release Watch writes a flagged observation with evidence linked back to the original Deploy Gate run.

Every Release Watch evaluation is recorded. The release timeline becomes an auditable record of replayed expectation versus live behavior.

Drift detection

After release, Titan compares live behavior against the replayed expectation and flags drift. A flag can route back into the candidate lifecycle — a Deploy Gate re-evaluation or a config rollback.

The full evidence chain

Trace → Candidate → Deploy Gate → Release → Release Watch.

Every link is recorded. Proof-backed transitions are independently checkable through the published anchor/proof path when proof is available; recorded release and decision evidence can be checked against the anchor context those records carry.

Too few observations A release window with too few observations stays unevaluable instead of receiving a confident status.
Warning unacknowledged A replay warning that appears in live decisions remains reviewable until an operator acknowledges it.
Diverging Live behavior has separated from replay expectation; the page points back to candidate evidence rather than hiding behind a summary badge.
Deployment modes
sandbox
No broker connected. Gates enforce. Test your pipeline.
observe
Broker connected. Everything forwards. See what gates would have caught.
enforce
Broker connected. Gates enforce. Nothing passes without approval.
The API

Send a signal. Get a receipt.

A strict, typed, agent-key-authed surface. One header authenticates; the account is bound to the key. Malformed input returns a structured 422 — never a guessed decision.

request · dry-run evaluation, never executescurl -X POST https://www.titandiagnostics.io/api/public/v1/eval \ -H "X-Titan-Agent-Key: tak_…" \ -H "Content-Type: application/json" \ -d '{"symbol":"AAPL","side":"BUY","close":227.18,"atr":3.4}'
response · the decision, with a receipt id{ "allow": false, "status": "REJECTED", "reason": "ALREADY_HELD", "reason_label": "A position is already held for this symbol", "trace_id": "7b2c91e4a0d83f12", "decision_summary_url": "/api/public/v1/decisions/7b2c91e4a0d83f12" }
Endpoint What it does
POST /api/public/v1/eval Dry-run gate evaluation. Returns the allow/deny decision and a receipt id; never executes.
POST /api/public/v1/signal Live ingestion through the full pipeline. Records the decision; in enforce mode your forwarder picks up the forward.
GET /api/public/v1/decisions/{id} The verifiable decision receipt: gate verdicts, the eval hash, the decision signature, and anchor status.
GET …/decisions/{id}/audit-anchor.ots The OpenTimestamps proof file for an anchored decision, for trustless Bitcoin verification.
Contract Per-account tak_ agent key, HMAC-SHA256. One canonical error envelope {"error":{"code","message"}}. Rate limits 120 eval/min, 60 signal/min per key. Config resolves agent override → account setting → environment default. Payloads carrying broker credentials are rejected with a 400.
Operations Titan is one HTTP hop before your broker. Measured from a US consumer connection (June 2026): eval round-trip ~110 ms median, ~200 ms p90. Liveness at GET /status (public, no auth). Public beta runs single-region on Render — no SLA yet, and we will not pretend otherwise; if Titan is unreachable, nothing forwards (fail-closed, by design).

Works with TradingView, Python bots, any REST client. Broker support starts with Alpaca.

Pricing

Start free. Safety is never paywalled.

Every plan, including the free one, gets all 26 safety checks, decision receipts, and Bitcoin anchoring. A paid plan changes how much of Titan you get, never how safe it is. If your account existed before launch, you keep full access free — founders terms, and they are already applied.

Plan Price What it is for
Sandbox Free One agent, sandbox mode, the full gate pipeline, Bitcoin-anchored decision receipts (detailed history kept 30 days). Cage your bot and watch it get told no.
Operator $29 / month Live forwarding through your own forwarder, two agents, receipts retained while subscribed, standard Deploy Gate replay, the preflight and diagnosis API.
Desk $99 / month Up to ten agents and strategies, cascade replay and Deploy Gate run history, Release Watch, front-of-queue support.
Plainly No card required for Sandbox. Titan never holds funds or broker credentials on any plan, free or paid — the only thing a plan changes is how much of Titan you get, never who holds your keys.
The limits, stated once

What Titan does not claim.

A system built to record evidence has to be straight about what the evidence settles — and what it doesn't. So it is here, once, instead of hedged into every paragraph above it.

no profit claim Titan does not predict or improve profitability or market fit. Replay re-evaluates recorded decisions against your real signal history — it is not a backtest of returns.
no custody Titan never holds funds or stores broker credentials, and rejects payloads that carry them. In the public forwarder path, broker keys stay with your forwarder.
no signal generation Titan does not generate trades. Send Titan a signal. Get back an allow/deny decision, gate reasons, and a receipt you can inspect later.
evidence, not omniscience A Bitcoin anchor can show a commitment existed after the fact. It does not prove the input was complete, the decision was correct, broker execution happened, or the trade was profitable.
retention is policy-bound Detailed decision event data follows account retention policy. Receipt commitments and proof artifacts are timestamped evidence commitments, not proof of correctness, profitability, or broker execution.
low evidence stays low When the observation window is too thin to support a verdict, Titan withholds the verdict instead of inventing a confident one.
Try it

See what Titan would have caught.

Upload your Alpaca trade history. No account needed.

DROP CSV READY
Drop your Alpaca CSV here
or click to browse

Your data is analyzed in real time and never stored.

input browser-selected Alpaca CSV
account not required for this diagnostic
persistence no server-side storage for uploaded CSV
does not prove profitability or future trading performance