← Trader Battles

Privacy

Everything this service stores about you, and nothing it does not.

V1 draftUpdated 2026-09-01

A V1 draft, written from the database schema rather than from a template. It describes what the service actually stores today. It will be reviewed before the product is promoted publicly.

1. The short version

Trader Battles stores an email address, a callsign, a password hash or a Google account identifier, your game progress, and a complete record of the battles you play. There is no analytics service, no advertising, and no tracking pixel. Two companies are involved and only because you asked them to be: Google, if you choose to sign in with it, and the service that delivers our account emails. One cookie keeps you signed in; two more exist for ten minutes each during a Google sign-in.

2. Your account

  • Email address — stored lowercased. It identifies your account, and it is where two kinds of message go: a link to confirm the address, and a link to reset a password when you ask for one. There is no newsletter and no marketing mail of any kind. It is never shown to other players and never sold or shared.
  • Password — never stored. What is stored is an Argon2id hash, from which the password cannot be recovered. An account that only ever signs in with Google has no password and no hash at all.
  • Callsign — public by design. It appears on leaderboards, operator pages, replays, and share images.
  • Google account identifier — only if you sign in with Google. What is stored is the opaque account id Google calls sub, plus the address Google confirms. Your name, profile picture and everything else Google offers are not requested, not stored and not displayed — operators have callsigns. We ask Google for nothing beyond who you are, we hold no key to your Google account, and we cannot read anything in it.
  • Account creation time.

3. Staying signed in

Signing in creates a session row and sets one cookie, tb_session. It holds a random identifier and nothing else — no name, no email, no readable content. It is HttpOnly (JavaScript on the page cannot read it), SameSite=Lax, marked Secure in production, and expires after 30 days. Signing out deletes the row.

Signing in with Google sets two more, and both are gone within ten minutes: one carries the one-time values that prove the trip to Google and back belongs to your browser, and one carries the confirmed address between Google and the screen where you choose a callsign. Neither is readable by the page, and neither survives the sign-in.

Those are the only cookies this site sets. There are no analytics cookies, no preference cookies, and no advertising cookies, which is why you are not being asked to consent to any.

4. Your game record

Playing writes the following, all keyed to your account:

  • Progression — hidden rating and its deviation, rank, level, experience, prestige, credit balance, radar charges, equipped cosmetics, wins, losses, draws, battles played, and streaks.
  • Battles — the format, the instrument, when it started and ended, and per side: final equity, realised and unrealised profit and loss, peak equity, maximum drawdown, trade count, whether you were eliminated and why, and your rating before and after.
  • Every order you send — each command with its payload and its position in the session, plus every completed trade. This is what makes a battle reproducible: the result on your scorecard can be recomputed from your own commands and checked against what the server recorded at the time.
  • Which historical sessions you have been dealt, so you are never given the same day twice.
  • Ledgers and awards — experience and credit entries, medal progress, unlocked cosmetics, season records, and daily contract progress.
  • Leaderboard snapshots — your callsign, position, rank band, level, prestige, and equipped emblem and title, rebuilt periodically.

5. Ghost runs

A completed battle can be stored as a recorded run — your command log for that session — and replayed later as a ghost opponent for another player. A ghost cannot react to whoever it is facing; it repeats exactly what you did.

A recorded run carries your callsign and the moves, not your identity beyond that. You can turn this off in Settings; with it off, your future battles are not recorded for use as ghosts.

6. What is visible to other people

Public: your callsign, rank band, level, prestige, equipped cosmetics, and win/loss record, on the leaderboards and on your operator page. Battle replays are public links, and each one can be withdrawn from your battle history — a withdrawn replay stops resolving for anyone but you.

Never public: your email address, your password hash, your session id, and the raw hidden rating behind your rank band.

7. On your device, not on our server

Two preferences are stored in your browser’s local storage and never sent to us: whether sound is muted, and which chart indicators you have turned on. Clearing your browser data clears them.

8. Server logs

The servers write operational logs — one structured line per battle event, plus the ordinary web-server request log, which can include an IP address, a user agent, and the path requested. They exist to debug faults and to spot abuse. They are not joined to your profile, not used to build a picture of you, and not shared.

9. Who else gets your data

Almost nobody, and never for marketing. There is no analytics provider, no advertising network, no payment processor — there are no payments — and no data broker. Three companies are involved: the one hosting the servers, which necessarily stores the database on its disks; the service that delivers account email, which receives your address in order to deliver a message to it; and Google, only if you choose to sign in with it, in which case Google knows you signed in here, the same way it does for any site you use a Google account on. Nothing else about you is sent to any of them.

The market data itself comes from a vendor and is licensed to us; see the attribution page. Nothing about you goes to them.

10. How long it is kept, and getting it deleted

Account and game data is kept for as long as the account exists. There is no self-service deletion in this version — ask and we will delete the account, which removes the user record, the profile, sessions, ledgers, unlocks, medal progress, season records, and the record of which sessions you were dealt.

Two things survive, and it is fair to say so plainly: a finished battle has two sides, and the opponent’s copy of that result stays for their history and for the integrity of the ladder, with the callsign as it was at the time. Recorded ghost runs likewise stay in the pool unless you ask for them to be removed as well — say so and they go.

11. Children

Trader Battles is not intended for anyone under 13, and accounts are not knowingly created for them.

12. Changes, and contact

This page changes when the data does, and the date at the top is when it was last true.

For a privacy question, a data request, or account deletion, write to support@tradingbattles.app.