← Back to App

Options Trade Tracker Help

Application Screenshots

Main Page

The main dashboard shows the total portfolio summary at the top with aggregate statistics across all services, followed by individual service cards. Each service card displays position counts, cost, value, current P&L, and closed P&L.

Main Page

Key elements: - Total Portfolio summary with position counts, cost, value, current P&L, and closed P&L - Current P&L Breakdown showing taxable vs non-taxable - Closed P&L Breakdown showing taxable vs non-taxable - Collapsible Closed P&L Chart - Service cards with individual metrics and “Add Service” button

Service View - Open Positions

The service detail view shows the trade entry form at the top and position cards below. The toggle switches between Open and Closed positions. Position cards show symbol, spread type, cost, value,

Service View - Open Positions

Expanding a service shows all positions grouped by Open and Closed status. Each position shows the symbol, leg count, cost basis, current value/mark, and P&L.

Service View - Open Positions

Key elements: - Service summary statistics - Add Trade form with Thinkorswim paste input - Position number selector (existing or new) - Trade date picker - Open/Closed Positions toggle - Position cards in a responsive grid

Service View - Expanded Position

Clicking a position card expands it to show full details including trade history, mark-to-market section, and action buttons. The taxable

Service View - Expanded Position

Clicking a position expands it to show individual legs with detailed trade history, add trade functionality, mark-to-market controls, and Schwab account integration.

Service View - Expanded Position

Key elements: - Close/Delete buttons for position management - Taxable checkbox for tax tracking - Mark-to-Market section with current mark and set mark button - Net Position showing current leg quantities - Individual trade cards with full details (action, legs, strikes, expirations, price)

Service View - Closed Positions

The closed positions view shows positions that have been closed, with “Days Held” instead of DTE. Expanded positions show the full trade

Service View - Closed Positions

The Closed section shows positions that have been fully closed out, with realized P&L and tax status tracking.

Service View - Closed Positions

Key elements: - Closed Positions toggle selected - Position cards showing closed status - Opened/Closed dates displayed - Days Held metric (instead of DTE) - Reopen/Delete buttons for closed positions - Full trade history in expanded view

Account Settings & Sync

The settings panel handles Google account authentication and cloud sync. Data can be synced to Google Sheets for backup and cross-device

Account Settings & Sync

The Settings dialog provides Google Sheets sync configuration, Schwab integration management, and data import/export functionality.

Account Settings

Key elements: - Google Account sign in/out - Cloud Sync toggle with spreadsheet name and last sync time - Sync Now and Refresh from Cloud buttons - Direct link to open spreadsheet in Google Sheets - Export/Import for local data backup

Getting Started

Creating a Service

A "Service" represents a trading advisory or strategy you're following (e.g., "Alpha Picks", "My Strategy"). Each service contains its own portfolio of positions.

  1. Click + Add Service on the main page
  2. Enter a name for your service
  3. Click Create

Understanding the Dashboard

The main dashboard shows:

Adding Trades

Copying from Thinkorswim

The easiest way to add trades is to copy the trade string from Thinkorswim:

  1. Go to the Activity & Positions tab in Thinkorswim
  2. Find your filled order in the Filled Orders section
  3. Click the icon in the leftmost column of the order row
  4. In the dialog that appears, copy the trade string
  5. Paste it into the Add Trade field in the app
Tip: You can optionally specify a Position # to add the trade to an existing position, or leave it blank to create a new position.

Trade String Format

The app parses trade strings in this format:

BUY +2 VERTICAL SPY 100 17 JAN 25 600/605 CALL @2.50

Components:

Google Sheets Sync

You can optionally sync your data to Google Sheets for backup and cross-device access.

Enabling Sync

  1. Click the Settings (gear) icon
  2. Click Sign in with Google
  3. After signing in, click Enable Cloud Sync
  4. A new Google Sheet will be created in your Google Drive
Privacy: The spreadsheet is created in YOUR Google Drive. Only you can access it. The app never stores your Google password.

Schwab Integration

Connect your Schwab account to automatically fetch real-time Net Liquidation values for your positions. This helps you track the current market value without manually entering marks.

Setting Up Schwab Integration

  1. Click the Settings (gear) icon
  2. Scroll to Schwab Integration
  3. Click Enable Schwab Integration
  4. Click Sign in to Schwab
  5. You'll be redirected to Schwab's login page
  6. Log in with your Schwab credentials
  7. Review and approve the access request
  8. You'll be redirected back to the app with your accounts connected

Setting Account Nicknames

By default, accounts show as "MARGIN ****1234". You can set friendly nicknames:

  1. Go to Settings → Schwab Integration
  2. Click on any account name
  3. Type a nickname (e.g., "IRA", "Joint Account")
  4. Press Enter or click Save

Linking Positions to Schwab

  1. Expand a position by clicking on it
  2. Find the Schwab dropdown
  3. Select the account that holds this position
  4. Click Refresh from Schwab to fetch current values
Matching: The app matches your tracked positions to Schwab data by comparing symbol, strike price, expiration date, and option type. If a match is found, the Net Liq value is displayed.

Supported Symbols

The app automatically handles these symbol variations:

Your Position Schwab Returns Status
SPX $SPX ✓ Auto-matched
SPXW SPX ✓ Auto-matched
RUTW RUT ✓ Auto-matched
NDXW / NDXP NDX ✓ Auto-matched

Application Architecture

This is a client-side web application - all processing happens in your browser:

┌─────────────────────────────────────────────────────────────────┐
│                        YOUR BROWSER                              │
│  ┌─────────────┐  ┌──────────────┐  ┌────────────┐              │
│  │ React App   │  │ localStorage │  │ OAuth      │              │
│  │ (all logic) │←→│ (JSON data)  │  │ Tokens     │              │
│  └─────────────┘  └──────────────┘  └─────┬──────┘              │
└───────────────────────────────────────────┼─────────────────────┘
        ↑                                   │
        │ static files                      │ API calls
        ↓                                   ↓
   ┌─────────────┐              ┌───────────────────────┐
   │   Vercel    │              │  Google Sheets API    │
   │   (host)    │              │  Schwab Trader API    │
   └─────────────┘              └───────────────────────┘

Key Points

Data Storage & Limitations

By default, your data is stored in your browser's localStorage:

What persists:
Limitations - data is isolated to:

When you could lose data:

Recommendation: Either enable Google Sheets sync or regularly use the Export function in Settings to create backup files.

Schwab Security & Architecture

The Schwab integration is designed with security as a top priority. Here's how it works and why your data is safe.

How Authentication Works

Your Browser
Schwab Login
Vercel Server
Schwab API

The app uses OAuth 2.0 with PKCE (Proof Key for Code Exchange), the industry standard for secure authentication:

  1. You click "Sign in to Schwab" - The app redirects you to Schwab's official login page
  2. You log in at Schwab - Your password is entered directly on Schwab's website, never in our app
  3. Schwab asks for your approval - You explicitly authorize read-only access to your accounts
  4. Schwab sends a temporary code - This code is exchanged for access tokens via our secure server
  5. Tokens are stored locally - Access tokens are stored in your browser's localStorage, not on any server

Security Features

Feature Benefit
OAuth 2.0 + PKCE Your Schwab password is never seen or stored by the app
Read-Only Access The app can only VIEW your positions, never place trades or move money
Token Stored Locally Your access token stays in your browser, not on our servers
Serverless Token Exchange API credentials are kept secure on the server, never exposed to browsers
Revocable Access You can disconnect at any time via Settings or your Schwab account
No Data Storage Position data is fetched on-demand and cached temporarily in your browser only

What the App CAN'T Do

What the App CAN Do

Revoking Access: You can revoke the app's access at any time by:
  1. Going to Settings in the app and clicking "Sign Out" from Schwab, or
  2. Visiting your Schwab account settings and removing the app's authorization

Technical Architecture

┌─────────────────┐      ┌─────────────────┐      ┌─────────────────┐
│   Your Browser  │      │  Vercel Server  │      │   Schwab API    │
│   (Frontend)    │      │  (Serverless)   │      │   (External)    │
└────────┬────────┘      └────────┬────────┘      └────────┬────────┘
         │                        │                        │
         │ 1. Click Sign In       │                        │
         │───────────────────────────────────────────────▶│
         │                        │    Redirect to Schwab  │
         │                        │                        │
         │ 2. User logs in & approves                      │
         │◀───────────────────────────────────────────────│
         │    Redirect with auth code                      │
         │                        │                        │
         │ 3. Send auth code      │                        │
         │───────────────────────▶│                        │
         │                        │ 4. Exchange for tokens │
         │                        │───────────────────────▶│
         │                        │◀───────────────────────│
         │ 5. Return tokens       │    Access + Refresh    │
         │◀───────────────────────│                        │
         │                        │                        │
         │ 6. Fetch positions (with token)                 │
         │───────────────────────────────────────────────▶│
         │◀───────────────────────────────────────────────│
         │    Position data                                │

Key Point: The Schwab API credentials (Client ID and Secret) are stored securely on the Vercel server as environment variables. They are NEVER sent to or accessible from your browser. The browser only receives temporary access tokens after you authenticate.

Tips & Tricks

Keyboard Shortcuts

Mark-to-Market

For positions not linked to Schwab, you can manually set a "mark" (current market value):

  1. Expand a position
  2. Click Set Mark or Update in the Mark-to-Market section
  3. Enter the current Net Liq value
  4. Click Save
Tip: If you have Schwab connected and have fetched positions, the mark input will pre-populate with the Schwab Net Liq value for easy one-click updates.

Position Status Colors

Data Backup

Your data is stored locally in your browser. To ensure you don't lose it:

Technology Stack


Options Trade Tracker v1.14 · Privacy Policy