PTQ is in early access — one plan, one price, and we build in the open.
PTQ.
Security

Your keys never reach us

Most of what makes PTQ safe is a design decision, not a feature: the hosted platform is built so that the dangerous things are not reachable from it at all. This page says exactly where the line sits, what enforces it, and — at the bottom — what we have not done yet.

No absolutes on this page. Software written by people has flaws, and a page that claims otherwise is telling you something it cannot know.

The boundary

Two halves, one line between them

The hosted platform does the research: building, backtesting, validation, paper trading, your history. It holds no broker keys, executes nothing at a venue, and has no route that arms live trading — that route does not exist there to be found.

The PTQ OS runs on your own computer. Broker keys, live orders and the arm step live there and only there. The routes on your machine that touch credentials refuse any caller that is not on that machine — including a page served from a domain we ourselves allow for everything else.

One thing crosses the line inward: a signed licence lease. Nothing crosses it outward. Not keys, not order authority, not the contents of your machine.

hosted platform · your machine — the key and the arm switch sit on your side; the signed lease is the only thing that crosses (illustration, not a screenshot)
Broker keys

Stored by your operating system, not by us

When you connect a broker, the keys are entered on your machine and handed to the secret store your operating system already runs. They are written over standard input rather than a command line, because a command line is visible to other processes. They are never logged, and no status call ever returns them.

PlatformWhere the secret sitsStatus, honestly
macOSThe login Keychain, written through the system tool over stdinRound-trip exercised on real hardware
WindowsDPAPI, current-user scopeImplemented to spec; no Windows host here to exercise it yet
LinuxThe Secret Service, when a keyring is installedImplemented to spec; no Linux host here to exercise it yet
FallbackA file in your PTQ home directory, owner-read-write only (mode 600)Used when no OS store answers — and the product says which it used

The product reports where a secret actually landed, not where it would have preferred to put it. If the OS store is unavailable and the file fallback is used, that is what the status tells you.

Refused at the door

The hosted platform rejects secret-shaped fields

A promise not to store something is worth less than a service that will not accept it. The hosted credential surface holds metadata only — which provider, your label for it, the scopes, a short mask. Send it a field named like a secret and the request is refused before anything is written:

“this service stores credential METADATA only — never send the secret itself. Keys stay on your machine.”

That is the exact response the service returns, not a paraphrase of an intention. The same surface refuses a mask that looks like a credential rather than a mask, and it allows only data and trading scopes — never withdrawal.

The licence gate

Short-lived leases, one device at a time

The licence is not a string the software checks against itself. It is a lease your device gets from our server, and the important properties are all on our side of the wire.

Signed on the server

Leases are signed with an Ed25519 key that exists only on our server. Your device checks the signature and expiry every time. An edited lease fails.

Short-lived and per-device

A lease covers one device and expires in days, so it must be renewed against a server that can say no. Seats are counted where the licence lives.

Credits metered server-side

Anything that costs compute is charged against a balance our server holds. There is no local ledger to edit, and a negative charge cannot mint credits.

Enforcement is on by default everywhere, and in a production build it cannot be switched off by configuration at all — the environment variable that turns it off in development is ignored outright. The gate is a wrapper at the mount point rather than a check each route opts into, so a route added tomorrow is gated the moment it exists.

The choke point

One gate, in a fixed order, every time

Paper or live, submitted from the app, the command line or the Claude connector, every order walks the same ordered list before anything routes. It is one function, not a policy repeated in three places, which is why there is no surface with a weaker version of it.

  1. 01Kill switch — engaged means every order is rejected, full stop.
  2. 02Your confirmation — an unconfirmed order never routes.
  3. 03Per-trade risk verdict — block, or trim the size before routing.
  4. 04Live permission — your risk profile has to allow live at all.
  5. 05Broker configured — the live path never invents a fill to keep going.
  6. 06Arm state and a one-time token issued on your machine, not a body field.
  7. 07Simulated prices refused — a live plan sized off a simulated quote stops here.
  8. 08Slippage bound — a fresh quote past your limit refuses rather than chases.
  9. 09Portfolio authority — gross exposure, per-symbol cap, open positions, daily loss halt, max-drawdown stop, orders per day.
  10. 10The journal — every fill, trim and refusal is recorded, including the refusals.

An order that reduces a position you already hold bypasses the portfolio caps on purpose. A risk limit must never trap you in a trade you are trying to exit.

Risk profile — a real paper book scored against the profile's own limits
Risk profile — a real paper book scored against the profile's own limits
Journal — a real paper fill, labelled simulated in the record
Journal — a real paper fill, labelled simulated in the record
The kill switch

Stopping never asks for permission

Engaging the kill switch takes no licence check and no confirmation dialog. A safety brake you can be locked out of is not a safety brake, so the route that engages it is deliberately the one open route in an otherwise deny-by-default API. While it is engaged, every submission is rejected at the choke point above — paper included.

Releasing it does go back through the licence gate, because that is the direction that widens what can happen. The same asymmetry runs through the rest of the product: pausing the unattended loop and disarming a strategy are always allowed and never need a confirmation; arming one is local, explicit, scoped and expiring.

What we hold

The full list, not a summary

This is the same list the privacy policy carries. If something is not on it, we do not have it.

A square boundary filled with horizontal lines. Every line stops exactly at the edge; the space outside is empty.

Export and deletion are built in and never sit behind the paywall, so a lapsed subscription cannot hold your work hostage. Deletion cascades — armed strategies, routines and autopilot records go with the account rather than being left orphaned. The marketing site sets no marketing cookies and runs no advertising trackers; the analytics it uses are cookieless and aggregate.

What PTQ cannot do

The three that matter most

Honest limits

What we have not done

A security page that lists only strengths is marketing. These are the open items as they stand today, in the same words we use internally.

The download is not signed yet

Code signing needs a developer account we do not have yet. Until then the published checksum is the integrity story, and the install notes say exactly what your computer will warn you about an unsigned build.

Software on your machine is yours to modify

Anyone determined can patch a local product on their own hardware. So credits and revocation live on our server. A modified copy can spend nothing, and still cannot place an order without your broker keys.

The live path has never met the venue

The live order path is written and its refusals are tested, but no order has been sent to a broker in live mode. Paper is what we can show working today.

The legal documents are still with counsel

The list of what we hold above is the same list the privacy policy carries.

Questions

Asked most often

Where exactly are my broker keys stored?
In your operating system's own secret store on the machine that runs the OS: the login Keychain on macOS, DPAPI on Windows, the Secret Service on Linux. If none of those is available the keys fall back to a file in your PTQ home directory with owner-only permissions, and the product tells you which store it actually used rather than the one it would prefer. Secret values are never logged, never returned by any status call, and never placed on a command line where another process could read them.
How does the licence check work?
Your device activates against the licence server with your key and gets back a short-lived signed lease — Ed25519, signed with a key that only ever exists on the server, valid for a few days and tied to that one device. The OS verifies that signature and its expiry on every gated request, so an edited or hand-made lease simply fails. Metered work like a backtest is charged against a credit balance the server holds and decrements, which means a copy of the software running away from the server cannot spend anything.
What can PTQ never do?
Move your money, trade on your behalf without you arming it, or see your broker credentials. There is no route on the hosted platform that arms live trading, no connector tool that can, and no request body field that grants it. Arming happens on your machine, behind an explicit confirmation, with a scope and an expiry you set — and any edit to your risk profile or mechanics invalidates a standing arm.
Is the download signed?
Not yet. Code signing needs a developer account we have not set up, and until it does, the honest integrity story is the published checksum: you verify the archive against it before you install, and the install notes explain what your operating system will say about an unsigned build. We would rather write that here than let you find out at the Gatekeeper prompt.

More on the FAQ. Found something wrong in the product? Tell us — it goes to a person, not a queue.

PTQ

Read it before you trust it

This describes what the software does today, including the unfinished parts. If a line here is wrong, tell us.