institutional-trader/README/MOMENTUM_AND_MONEYNESS_IMPL...

6.2 KiB

Momentum Score & Moneyness Context - Implementation Complete

What Was Implemented

Backend Changes

  1. Momentum Score Calculation (backend/src/services/momentumScore.js)

    • Calculates 0-100 score based on:
      • Rocket score (0-30 points)
      • Flow trend (SURGING/FADING/STABLE) (0-25 points)
      • Volume spikes (0-15 points)
      • Tape alignment (0-10 points)
      • Catalyst presence (0-10 points)
      • Flow recency (0-10 points)
      • Premium size (0-5 points)
  2. Moneyness Context (backend/src/utils/moneynessHelper.js)

    • Detects ITM/OTM/ATM status
    • Calculates distance from strike to spot
    • Identifies gamma squeeze setups (Deep OTM calls + full badges)
    • Provides display labels
  3. Enhanced Flow Trend Detection (backend/src/services/flowTrendDetector.js)

    • Added volume spike detection
    • Volume ratio calculation
    • Stronger signals when SURGING + volume spike
  4. Updated Trade Signal Generator (backend/src/services/tradeSignalGenerator.js)

    • Detects gamma squeeze setups
    • Special signal type: GAMMA_SQUEEZE_SETUP
    • Boosted confidence (+10 points) for gamma setups
    • Enhanced reasoning with moneyness details
  5. Updated Options Flow Route (backend/src/routes/optionsFlow.js)

    • Calculates momentum score for each row
    • Adds moneyness context to each row
    • Detects gamma squeeze setups
    • Includes all new fields in API response

Frontend Changes

  1. Momentum Column (frontend/src/components/dashboard/OptionsFlowPanel.jsx)

    • Visual progress bar (0-100)
    • Color-coded badges (green/yellow/orange/red)
    • Sortable by momentum score
    • Added to default visible columns
  2. Moneyness Column

    • Shows ITM/OTM/ATM status with distance %
    • Color-coded badges
    • Gamma squeeze indicator badge
    • Added to option group
  3. Enhanced Trade Signal Display

    • Shows " GAMMA BUY" for gamma squeeze setups
    • Gamma squeeze badge indicator
    • Better visual distinction
  4. New Quick Filters

    • 🔥 High Momentum (70+) - Filter by momentum score
    • Gamma Squeeze - Filter for gamma setups only

New Data Fields Available

Each flow row now includes:

{
  // Momentum Score
  momentumScore: 75,           // 0-100
  momentumLabel: 'VERY HIGH',   // EXTREME, VERY HIGH, HIGH, MODERATE, LOW, VERY LOW
  momentumColor: 'green',       // green, yellow, orange, red
  momentumIcon: '🔥',           // 🔥🔥, 🔥, 🟢, 🟡, 🟠, 🔴
  
  // Moneyness Context
  moneynessContext: {
    category: 'DEEP_OTM',       // DEEP_ITM, ITM, NEAR_ATM, OTM, DEEP_OTM, EXTREME_OTM
    distance: 2.5,              // Absolute distance from strike
    distancePct: 5.2,           // Percentage distance
    isITM: false,
    isOTM: true,
    isATM: false,
    strike: 150,
    spot: 142.5
  },
  moneynessLabel: 'Deep OTM (+5.2%)',
  isGammaSqueezeSetup: true,    // true if gamma squeeze detected
  
  // Enhanced Trade Signal
  tradeSignal: {
    signal: 'BUY',
    type: 'GAMMA_SQUEEZE_SETUP', // NEW TYPE
    confidence: 85,              // Boosted for gamma setups
    reasoning: 'Gamma squeeze setup: Deep OTM calls (5.2% OTM) + full institutional flow...',
    // ... rest of signal
  }
}

How to Test

1. Restart Backend

cd backend
npm run dev

2. Check API Response

curl http://localhost:3010/api/options/flow?startDate=2024-01-15&endDate=2024-01-15 | jq '.data[0] | {momentumScore, momentumLabel, moneynessLabel, isGammaSqueezeSetup, tradeSignal}'

You should see:

  • momentumScore: Number 0-100
  • momentumLabel: String like "VERY HIGH"
  • moneynessLabel: String like "Deep OTM (+5.2%)"
  • isGammaSqueezeSetup: Boolean
  • tradeSignal.type: May be "GAMMA_SQUEEZE_SETUP" for deep OTM calls

3. Check Frontend

  1. Open your app
  2. Look for new Momentum column (should be visible by default)
  3. Look for Moneyness column (in column selector)
  4. Try the new filters:
    • Click "🔥 High Momentum (70+)" - should filter to high momentum flows
    • Click " Gamma Squeeze" - should show only gamma setups

4. Test Gamma Squeeze Detection

Look for flows with:

  • Deep OTM calls (5%+ OTM)
  • Full badges: 🟢 + 💎 + + 💰 +
  • Should show " GAMMA BUY" in Trade Signal column
  • Should have purple " GAMMA" badge in Moneyness column

What You'll See

Momentum Column

  • Progress bar showing 0-100 score
  • Badge with icon and score number
  • Colors:
    • Green (80+): EXTREME momentum
    • Green (70-79): VERY HIGH momentum
    • Green (60-69): HIGH momentum
    • Yellow (50-59): MODERATE momentum
    • Orange (40-49): LOW momentum
    • Red (<40): VERY LOW momentum

Moneyness Column

  • Badge showing ITM/OTM status
  • Distance percentage (e.g., "+5.2%" for OTM)
  • Gamma badge (purple) if gamma squeeze detected

Trade Signal

  • " GAMMA BUY" label for gamma squeezes
  • Purple badge indicating gamma setup
  • Higher confidence (boosted by +10 points)

Expected Results

After implementation, you should:

  1. See momentum scores (0-100) for every flow
  2. See moneyness labels (ITM/OTM/etc) for every flow
  3. See gamma squeeze detection when conditions are met
  4. Be able to filter by momentum and gamma squeezes
  5. See enhanced trade signals with gamma squeeze reasoning

Troubleshooting

No momentum scores showing?

  • Check backend logs for errors
  • Verify momentumScore.js is imported correctly
  • Check that flow trend data is available

No gamma squeezes detected?

  • Gamma squeezes require:
    • Deep OTM calls (5%+ OTM)
    • Full badges (🟢 + 💎 + + 💰 + )
  • Check if you have any flows matching these criteria

Frontend not showing new columns?

  • Hard refresh browser (Ctrl+Shift+R)
  • Check browser console for errors
  • Verify column is in DEFAULT_VISIBLE_COLUMNS

Next Steps

Now that momentum and moneyness are working:

  1. Test with real data - See which flows get high momentum scores
  2. Filter by momentum - Find the strongest signals
  3. Watch for gamma squeezes - These are high-probability setups
  4. Compare signals - See how momentum correlates with price movement

Implementation Time: ~15 minutes Status: Complete and ready to test!