robinhood-options-mobile

Pattern Day Trader (PDT) Protection & Counter

Overview

Under FINRA Rule 4210, a trader who executes four or more day trades within five business days in a margin account is designated as a Pattern Day Trader (PDT), provided the number of day trades represents more than 6% of the customer’s total trades in that margin account for that period.

When designated as a Pattern Day Trader:

The Pattern Day Trader (PDT) Protection & Counter feature provides real-time monitoring of rolling 5-business-day day trades, visual countdown meters, FINRA threshold tracking, and automated risk alerts to safeguard traders from unexpected account restrictions.


Core Architecture & Components

┌─────────────────────────────────────────────────────────────┐
│                      Robinhood API / Brokerage               │
│  • /accounts/{account}/recent_day_trades/                   │
│  • /accounts/ margin_balances (day_trades_protection, dtbp)  │
└──────────────────────────────┬──────────────────────────────┘
                               │
                               ▼
┌─────────────────────────────────────────────────────────────┐
│                     Service Layer                           │
│  • RobinhoodService.getRecentDayTrades()                    │
│  • DemoService.getRecentDayTrades() (Mock for testing/demo) │
│  • IBrokerageService contract                               │
└──────────────────────────────┬──────────────────────────────┘
                               │
                               ▼
┌─────────────────────────────────────────────────────────────┐
│                     Data Models                             │
│  • DayTrade: Equity & Option executions with drop-off dates  │
│  • DayTradeSummary: Rolling count, DTBP, FINRA risk level   │
│  • PdtRiskLevel: safe | warning | danger | flagged | exempt │
│  • Account: Parsed margin balances & protection flags        │
└──────────────────────────────┬──────────────────────────────┘
                               │
              ┌────────────────┴────────────────┐
              ▼                                 ▼
┌───────────────────────────┐     ┌───────────────────────────┐
│  PortfolioAlertService    │     │   DayTradeMonitorWidget   │
│  • Action Center alerts   │     │  • 4-segment visual meter │
│  • Critical: 0 left / PDT │     │  • $25k equity progress   │
│  • Warning: 1 left        │     │  • Filterable trade list  │
│  • Exempt if $25k+ equity │     │  • FINRA Rule 4210 FAQ    │
└───────────────────────────┘     └───────────────────────────┘

Data Models

DayTrade (lib/model/day_trade.dart)

Represents an individual equity or option day trade:

DayTradeSummary (lib/model/day_trade.dart)

Aggregates rolling day trade activity for an account:


User Interface: DayTradeMonitorWidget

Accessible via User Profile $\rightarrow$ Features $\rightarrow$ Day Trade & PDT Monitor and through the account details chip in User Info:

  1. Header & 4-Segment Visual Counter:
    • Visual color-coded gauge representing the 3 allowable day trades and the 4th restriction trigger.
    • Dynamic badges displaying risk status (Safe, Warning, PDT Limit Reached, Pattern Day Trader Flagged, PDT Exempt).
  2. FINRA $25,000 Equity Threshold Progress:
    • Visual progress bar toward the $25,000 benchmark.
    • Live calculation of equity deficit required to unlock unlimited day trades.
  3. Protection & Buying Power Panel:
    • Robinhood Day Trade Protection status chip (blocks orders that would trigger PDT).
    • Day Trade Buying Power (DTBP) with margin ratio leverage display (e.g., 25% margin / 4x leverage).
    • PDT Restriction Expiry date if under a 90-day cooldown.
  4. Recent Day Trades List:
    • Filterable by All, Stocks, and Options.
    • Per-trade card with symbol, execution timestamp, trade direction, and drop-off countdown (e.g. Rolls off in 2 days • Mon, Oct 19).
  5. FINRA Rule 4210 FAQ & Guidance Accordion:
    • In-app explainer covering FINRA requirements, margin rules, and roll-off calculations.

Action Center Integration

PortfolioAlertService evaluates day trade status: