LQVDTY
← LQVDTY

Privacy Policy

Effective August 27, 2026 · Alpha-stage document, see the notice below

LQVDTY ("we," "us") operates a session and execution analytics trading journal. This policy describes exactly what data the app collects, where it's stored, and who else sees it. It's written to match the running codebase, not a generic template. If a data point isn't listed here, we don't collect it.

1. Alpha-stage notice

LQVDTY is in active alpha/beta development. Database schemas, tables, and features change frequently, and your data may be reset, migrated, or wipedwithout advance notice as part of that development. Do not treat this app as durable, long-term storage for records you can't reconstruct from another source. If you want a copy of your data before that happens, or want it deleted, contact us at lqvdty@gmail.com.

2. Account & identity data

Handled by Supabase Auth. Depending on how you sign in:

  • Anonymous trial: starting a trial creates an anonymous Supabase session with no email or name attached, just a generated user ID, used to scope your trial trades until you register.
  • Google OAuth ("Continue with Google"):we receive your Google account's email and display name. If you registered from a trial, this links to your existing anonymous user ID (via Supabase's linkIdentity) rather than creating a new one, so trial data isn't lost.

We store a profiles row per account: display name, email, referral source, years trading, selected asset classes, default currency, an onboarding timestamp, and account created/updated timestamps.

3. Trading data you provide

  • Fills and trades:symbol, exchange, side, quantity, price, execution time, commission, order/execution IDs, and the computed metrics we derive from them (points, P&L, win/loss, R-multiple, MFE/MAE, ATR). This comes from a broker/exchange sync you set up, a CSV you upload, or trades you type in manually.
  • Notes and tags:pre-market answers (market regime, event risk, a 1–5 mental-state rating, sleep flag, max daily loss), free-text post-market notes, setup tags, per-day commitment tags, and chart drawings (lines/boxes you add to a session chart).
  • Broker/exchange credentials:if you connect IBKR, Binance, or Bybit, your Flex Query token or API key/secret is encrypted (AES-256-GCM) before it's ever written to the database. We don't store these in plaintext, and application code only ever handles ciphertext outside the decrypt step used to run your sync.
  • CSV imports:the file name, a hash of the file (to warn you about re-uploading the same file), row/import/error counts, and any column-mapping profile you save for reuse. We don't retain the raw uploaded file itself beyond the import step.
  • Shared calendar links:if you generate a public share link for a calendar month, it stores a frozen snapshot of that month's day-level P&L and monthly stats only, never your individual trade rows, keyed to a random token. Anyone with the link can view that snapshot; you can revoke it at any time.

4. Wearable health data (owner accounts only)

A Health View, connecting a Google Health account (e.g. via a Fitbit device), is currently available only to the app owner's own account, not to general users. If it's ever opened up more broadly, this section will be updated first. It's described here anyway so this page stays accurate about everything the app is capable of collecting.

Connecting it is a separate Google OAuth grant from "Continue with Google" sign-in, using its own consent screen and requesting read-only access to sleep, activity/fitness, and health-metrics/measurement scopes. From that, we sync: sleep sessions (including sleep stages), heart rate, heart-rate variability, resting heart rate, respiratory rate, blood oxygen (SpO2), steps, and active minutes. We don't pull calorie, floor-climbed, or heart-rate-zone data even though Google Health can provide them.

From that raw data we compute and store: a daily sleep score and sleep efficiency, a readiness score, and a "fog index." The fog index is explicitly a prediction based on sleep/HRV patterns, not a measurement — there is no sensor that detects cognitive fog. We also compute per-trade heart-rate-response metrics (heart rate before/at entry, peak, at exit, time-to-peak, recovery time, and similar) framed as heart-rate-derived autonomic arousal, never as "stress," since there's no way to rule out confounds like caffeine or physical movement. None of this is a medical or diagnostic measurement; see the Terms of Service for the corresponding disclaimer.

This data is stored in the same Supabase database as the rest of the app, protected by the same row-level security described in section 8. A daily sync runs automatically in addition to any manual sync. Disconnecting the Google Health connection (available in Settings) deletes the stored access/refresh tokens and stops future syncing, but does not itself delete health data already synced from prior runs — email us (section 12) to have that removed.

5. Product usage analytics (Mixpanel)

We use Mixpanel to understand how the app is used during the alpha. Every tracked event includes: the event name, a timestamp, an environment label (dev/preview/production), and a distinct_id: your real account ID once you're signed in, or a randomly generated ID stored in your browser's local storage before that. Once you're identified, your email is attached to your Mixpanel profile and to each event so we can look up a session without cross-referencing a separate table.

The specific events we track:

  • Started Signup, Started Demo, Completed Demo, Completed Signup, Started Google Auth, Logged In
  • Created Trade (source, asset class, running trade count, whether it's your first trade, not the trade's financial details)
  • Saved Context (length of the note you wrote, not its content; whether it's your first note)
  • Viewed Session, Viewed Calendar (view type, month), Shared Calendar Month, Viewed Analytics (date range)

Mixpanel's ingestion API derives coarse geolocation (e.g. country/city) from the request's IP address at send time; we don't separately log or store your IP address ourselves.

6. Site analytics (Vercel)

We use Vercel Web Analytics for aggregate pageview/visitor counts. It's cookieless and doesn't collect personal information. It's a separate, coarser signal from the Mixpanel product-event tracking described above.

7. Who processes your data

We don't sell your data. It's shared only with the infrastructure providers that run the app:

  • Supabase (EU):authentication, database, and row-level-security-enforced storage for everything described in sections 2–4. Our database is hosted in the EU (Ireland, region eu-west-1).
  • Vercel (EU): application hosting and the web analytics described in section 6, hosted in the EU.
  • Mixpanel (EU):the product analytics described in section 5, hosted on Mixpanel's EU data-residency infrastructure.
  • Google: OAuth sign-in, if you choose that method.
  • Google Health: the wearable health sync described in section 4, under a separate OAuth grant, for the owner-only account that has it connected.
  • Your connected broker/exchange (Interactive Brokers, Binance, Bybit): only if you supply credentials to sync trades; we act as your client to pull data you already have a right to.
  • Polygon.io and Yahoo Finance: market candle/price data, used to enrich your trades. This is public market data, not personal data about you.

Your core account, trading, and analytics data is processed and stored within the EU across all three providers above. Google's OAuth handshake and any broker/exchange or market-data provider you connect to are separate services operating under their own data-location terms, which we don't control.

8. How your data is isolated

Every table that stores your trading data or notes is protected by Postgres row-level security scoped to your account. The application queries as you, not as an administrator, so one user's rows are not reachable through another user's session. A small number of specific server routes (account deletion, the demo-mode seeding/graduation flow, broker candle syncing, and public shared-calendar lookups by token) use elevated database access to do something RLS structurally can't. Each is scoped narrowly to the signed-in user's own ID or an unguessable share token, never to arbitrary user-supplied IDs.

9. Data retention & deletion

You can permanently delete your account from Settings. This deletes your Supabase auth record and cascades to every table that references it: profile, accounts, trades, fills, notes, chart drawings, commitments, broker connections, and any wearable health connection/data are all removed, with nothing left orphaned. Disconnecting a wearable health connection on its own (without deleting the account) stops future syncing but doesn't itself remove previously synced health data — email us for that. You can also email lqvdty@gmail.com to request deletion manually.

10. Your choices

You can review and correct your profile details in Settings, disconnect a broker/exchange or wearable health connection at any time, and revoke a shared calendar link at any time. Because this is an alpha product, we don't yet have a self-serve data export tool. Email us if you want a copy of your data.

11. Changes to this policy

If what we collect changes, we'll update this page and the "Effective" date above. Material changes will be called out in the app for signed-in users where practical.

12. Contact

Questions, data-access, or deletion requests: lqvdty@gmail.com.

© 2026 LQVDTY