# Parameterized Trading Signals - Complete Reference

## 📊 Foundation: 10-Year Pattern Analysis

**These 11 signals are derived from 10 years of Scott's actual trading patterns (2016-2026).**

- ✅ Extracted from real brokerage statements spanning 2016-2026
- ✅ Each signal parameter refined based on 10 years of live trading experience
- ⚠️ **Not validated against real market data.** The "2-year backtest, 214
  trades, 52.8% win rate, 1.81x profit factor" figures quoted elsewhere are
  output from a Monte Carlo simulation (`research/backtest_10year.py`) —
  randomly generated prices, randomly timed entries, no call to the signal
  engine below. They are not a proven track record. See
  [`research/README.md`](research/README.md) for the full explanation.

**Why These Parameters?** Because Scott's actual trades followed these exact patterns over a decade. These aren't theory—they're distilled from real trading behavior. Whether *following* them going forward performs the way the simulation suggests is untested; that's what paper trading is for.

---

## Signal Categories

There are **4 signal categories** that trigger actions in Scott's strategy:

1. **ENTRY SIGNALS** (When to buy calls)
2. **EXIT SIGNALS** (When to sell calls)
3. **SECTOR SIGNALS** (When to purge sectors)
4. **REBALANCE SIGNALS** (When to rebalance account)

---

## ENTRY SIGNALS (Buy Signals)

### Signal 1.1: BUY SIGNAL - Uptrend Confirmed

**Trigger Parameters:**
```
Price > 20-day Simple Moving Average
√ Entry only if uptrend is confirmed
```

**Exact Calculation:**
```
IF stock_price > SMA_20 THEN
  → Entry signal ready
  → Wait for additional confirmation
ELSE
  → No entry (skip this stock)
```

**Real Example (RCL):**
```
Stock Price: $95.50
20-day MA: $93.20
Result: $95.50 > $93.20 ✓ PASS
→ Continue to next signal
```

**False Negative Example (BA):**
```
Stock Price: $178.30
20-day MA: $181.50
Result: $178.30 < $181.50 ✗ FAIL
→ Skip this stock today
```

---

### Signal 1.2: Volume Spike Confirmation

**Trigger Parameters:**
```
Today's Volume > 1.5x × 20-day Average Volume
√ Confirmation signal for entry
```

**Exact Calculation:**
```
volume_ratio = today_volume / avg_volume_20day

IF volume_ratio > 1.5 THEN
  → Volume spike confirmed
  → This supports entry
ELSE
  → Wait for spike (or enter if other signals strong)
```

**Real Example (RCL):**
```
Today's Volume: 2,400,000 shares
20-day Avg: 1,000,000 shares
Ratio: 2,400,000 / 1,000,000 = 2.4x
Result: 2.4 > 1.5 ✓ PASS
→ Volume spike confirmed, good entry
```

---

### Signal 1.3: Breakout Signal

**Trigger Parameters:**
```
Stock Price > Previous 5-day High
√ Entry signal: technical breakout
```

**Exact Calculation:**
```
recent_high_5day = MAX(price_last_5_days)

IF current_price > recent_high_5day THEN
  → Breakout confirmed
  → Entry signal triggered
ELSE
  → No breakout (consolidating)
```

**Real Example (GOOG):**
```
Yesterday High: $192.00
2 Days Ago High: $191.50
3 Days Ago High: $190.75
...
Recent High (5-day): $192.50

Today's Price: $192.75
Result: $192.75 > $192.50 ✓ BREAKOUT
→ Breakout confirmed, buy signal active
```

---

### Signal 1.4: Pullback Entry (Within Uptrend)

**Trigger Parameters:**
```
Price dips 2-3% from recent high, then recovers
√ Entry signal: low-risk pullback
```

**Exact Calculation:**
```
recent_high = recent 5-day high
pullback_low = lowest price in pullback
pullback_pct = (recent_high - pullback_low) / recent_high

IF 0.02 < pullback_pct < 0.03 AND price_bouncing_up THEN
  → Low-risk pullback entry
  → High probability entry
ELSE
  → Not the right pullback
```

**Real Example (META):**
```
Recent High: $450.00
Pullback Low: $438.00
Pullback %: ($450 - $438) / $450 = 2.67%
Result: 2.67% is in the 2-3% range ✓
Entry Price: $445.00 (recovering from pullback)
→ High-probability entry
```

---

### Signal 1.5: Moving Average Bullish

**Trigger Parameters:**
```
Stock Price > 20-day MA > 50-day MA
√ Trend structure bullish
```

**Exact Calculation:**
```
IF price > SMA_20 AND SMA_20 > SMA_50 THEN
  → Trend is bullish (uptrend sandwich)
  → Support structure intact
ELSE
  → Not bullish enough
```

**Real Example (GOOG):**
```
Current Price: $192.75
20-day MA: $189.30 (SMA_20)
50-day MA: $185.00 (SMA_50)

Check: $192.75 > $189.30 > $185.00
Result: ✓ Bullish structure
→ Uptrend is healthy
```

---

## Entry Checklist (All Signals)

**To enter a position, you need:**
```
[ ] Price > 20-day MA (Signal 1.1)
[ ] Volume spike > 1.5x (Signal 1.2) OR Breakout (Signal 1.3) OR Pullback (Signal 1.4)
[ ] Price > 20-day MA > 50-day MA (Signal 1.5)
[ ] Not more than 7 open positions already
[ ] 8% of account value available
[ ] <14 days to option expiry (don't enter if expired soon)
```

**Your position is ready to enter when 5/5 criteria are met.**

---

## EXIT SIGNALS (Sell Signals)

### Signal 2.1: Profit Target Hit

**Trigger Parameters:**
```
Current Call Price >= Entry Call Price × 1.40
(Call value up 40% or more)
```

**Exact Calculation:**
```
entry_call_price = price_when_bought
current_call_price = current_market_value

profit_pct = (current_call_price - entry_call_price) / entry_call_price

IF profit_pct >= 0.40 THEN
  → SELL IMMEDIATELY
  → This is your primary profit target
ELSE
  → Hold (not at target yet)
```

**Real Example:**
```
Entry Call Price: $3.50
Current Call Price: $4.90
Profit %: ($4.90 - $3.50) / $3.50 = 0.40 (40%)
Result: 0.40 >= 0.40 ✓ HIT
→ SELL IMMEDIATELY (lock in gains)
```

---

### Signal 2.2: Stop Loss Triggered

**Trigger Parameters:**
```
(Current Call Price <= Entry Call Price × 0.80) AND (Days Held >= 7)
(Call value down 20% or more, after 7+ days)
```

**Exact Calculation:**
```
entry_call_price = price_when_bought
current_call_price = current_market_value
days_held = today - entry_date

loss_pct = (current_call_price - entry_call_price) / entry_call_price

IF loss_pct <= -0.20 AND days_held >= 7 THEN
  → SELL IMMEDIATELY
  → Cut this loss
ELSE
  → Hold (too early or not at stop yet)
```

**Real Example:**
```
Entry Date: 2026-01-23
Today: 2026-02-15 (23 days held)
Entry Call Price: $3.50
Current Call Price: $2.60
Loss %: ($2.60 - $3.50) / $3.50 = -0.257 (-25.7%)

Check: -0.257 <= -0.20 ✓ AND 23 >= 7 ✓
Result: BOTH CONDITIONS MET
→ SELL IMMEDIATELY (cut loss)
```

---

### Signal 2.3: Time Decay (Expiration Approaching)

**Trigger Parameters:**
```
Days Until Option Expiration < 14 days
(Less than 2 weeks left)
```

**Exact Calculation:**
```
expiry_date = option_expiration
today = current_date
days_to_expiry = (expiry_date - today).days

IF days_to_expiry < 14 THEN
  → SELL IMMEDIATELY
  → Avoid theta decay in final 2 weeks
ELSE
  → Can hold (theta decay is minimal)
```

**Real Example:**
```
Option Expiration: 2026-06-18
Today: 2026-06-10
Days to Expiry: 8 days
Result: 8 < 14 ✓
→ SELL IMMEDIATELY (avoid decay)
```

---

### Signal 2.4: Early Profit Taking (30-50% Gains)

**Trigger Parameters:**
```
(Call value up 30-50%) AND (Position is strong)
(Optional - harvest gains before 40% target)
```

**Exact Calculation:**
```
profit_pct = (current_call_price - entry_call_price) / entry_call_price
stock_momentum = still_in_uptrend?

IF 0.30 <= profit_pct < 0.40 AND stock_momentum == strong THEN
  → CAN SELL (optional harvest)
  → Lock in gains, redeploy capital
ELSE IF 0.30 <= profit_pct < 0.40 AND stock_momentum == weak THEN
  → CONSIDER SELLING (position weakening)
ELSE
  → Hold (still building position)
```

**Real Example:**
```
Entry Call Price: $3.50
Current Call Price: $4.55
Profit %: ($4.55 - $3.50) / $3.50 = 0.30 (30%)
Stock Momentum: Still strong, uptrend intact
Result: 0.30 <= 0.30 < 0.40 ✓ AND strong ✓
→ CAN SELL if you want quick profit
→ Or hold to +40% if momentum continues
```

---

## Exit Signal Priority

When multiple signals trigger, follow this order:
```
1. PROFIT TARGET (42%)      ← Always sell (highest priority)
2. STOP LOSS (20%)           ← Always sell (cut losses)
3. TIME DECAY (<14 days)     ← Always sell (avoid decay)
4. EARLY PROFIT (30-50%)     ← Optional (redeploy or hold)
```

---

## SECTOR SIGNALS (Purge Signals)

### Signal 3.1: Sector Purge Trigger

**Trigger Parameters:**
```
3 or more losing positions in same sector
```

**Exact Calculation:**
```
for each sector:
  losing_positions = count(positions where pnl < 0)
  
  IF losing_positions >= 3 THEN
    → SECTOR PURGE SIGNAL
    → EXIT ALL positions in that sector
```

**Real Example (Cannabis Sector):**
```
Sector: Cannabis
Positions:
  ACB:  -$12,600 (loser) ✗
  CGC:  -$17,836 (loser) ✗
  CRON: -$10,043 (loser) ✗
  TLRY: -$36,316 (loser) ✗

Losing Count: 4 >= 3 ✓
Result: SECTOR PURGE TRIGGERED
→ EXIT ALL 4 positions immediately
→ Exit on same day (don't stagger)
```

---

## REBALANCE SIGNALS (Portfolio Allocation)

### Signal 4.1: Account Allocation Drift

**Trigger Parameters:**
```
Any asset class drifts > 5% from target
```

**Target Allocation:**
```
Call Options:  46% (target)
SPY Hedge:     45% (target)
Cash Buffer:    9% (target)
```

**Exact Calculation:**
```
current_allocation = (current_value / account_value) * 100
target_allocation = [46%, 45%, 9%]
drift = |current_allocation - target_allocation|

IF any drift > 5% THEN
  → REBALANCE SIGNAL
  → Adjust allocation back to target
```

**Real Example:**
```
Account Value: $4,000,000

Current:
  Calls:  $2,100,000 (52.5%) Target: 46% Drift: +6.5% ✗ OUT OF RANGE
  SPY:    $1,600,000 (40.0%) Target: 45% Drift: -5.0% ✗ OUT OF RANGE
  Cash:   $300,000   (7.5%)  Target: 9%  Drift: -1.5% ✓ OK

Result: REBALANCE TRIGGERED
→ Sell some calls to reduce to 46%
→ Use proceeds to buy SPY to raise to 45%
→ Top up cash to 9%
```

---

## Summary: All Parameterized Signals

### ENTRY SIGNALS (Need 5/5)
```
1.1: Price > SMA_20                     ✓/✗
1.2: Volume > 1.5x average             ✓/✗
1.3: Breakout above 5-day high          ✓/✗ OR
1.4: Pullback 2-3% within uptrend       ✓/✗
1.5: Price > SMA_20 > SMA_50            ✓/✗
```

### EXIT SIGNALS (Any one triggers)
```
2.1: Profit target +40%                 ✓ → SELL
2.2: Stop loss -20% (after 7d)          ✓ → SELL
2.3: Time decay <14 days to expiry      ✓ → SELL
2.4: Early profit 30-50% (optional)     ✓ → CONSIDER
```

### SECTOR SIGNALS (Any one triggers)
```
3.1: 3+ losses in same sector           ✓ → PURGE ALL
```

### REBALANCE SIGNALS (If triggered)
```
4.1: Account allocation drifts >5%      ✓ → REBALANCE
```

---

## Implementation Examples

### Example 1: Real Entry Decision

**Stock**: RCL  
**Today**: 2026-08-20

**Check Entry Signals:**
```
1.1 Price > SMA_20?
    Current: $95.50, SMA_20: $93.20
    Check: $95.50 > $93.20 ✓

1.2 Volume > 1.5x?
    Today: 2,400,000, Avg: 1,000,000
    Check: 2.4x > 1.5x ✓

1.3 Breakout?
    Recent High: $93.00, Current: $95.50
    Check: $95.50 > $93.00 ✓

1.4 Pullback?
    Recent High: $96.00, Low: $93.60
    Pullback: ($96-$93.60)/$96 = 3.5%
    Check: 2-3% range? NO (too deep) ✗
    But Breakout signal satisfied ✓

1.5 Bullish MA structure?
    Price: $95.50, SMA_20: $93.20, SMA_50: $92.00
    Check: $95.50 > $93.20 > $92.00 ✓

RESULT: 4/5 signals (acceptable)
→ ENTER POSITION

Size Calculation:
- Account: $4,000,000
- Target %: 8%
- Position $: $320,000
- Call Price: $3.50
- Contracts: $320,000 / $3.50 = 91,428 contracts
- Actual Contracts: Round to 90,000

Entry:
- Symbol: RCL
- Contracts: 90,000
- Call Price: $3.50
- Cost: $315,000
- Entry Date: 2026-08-20
- Expiry: 2027-02-20 (6 months)
```

### Example 2: Real Exit Decision

**Position**: Same RCL from above  
**Today**: 2026-09-20 (30 days later)

**Check Exit Signals:**
```
Current Stock Price: $105.50
Current Call Price: $5.25
Entry Call Price: $3.50

2.1 Profit target +40%?
    Gain: ($5.25 - $3.50) / $3.50 = 50%
    Check: 50% >= 40% ✓ YES

2.2 Stop loss -20%?
    Loss: N/A (we're up 50%)
    Check: NO ✗

2.3 Time decay <14 days?
    Days held: 30, Days to expiry: 150
    Check: 150 < 14? NO ✗

2.4 Early profit 30-50%?
    Gain: 50%
    Check: 30-50% range? YES ✓

RESULT: EXIT SIGNAL 2.1 HIT
→ SELL IMMEDIATELY

Exit:
- Symbol: RCL
- Contracts: 90,000
- Exit Call Price: $5.25
- Proceeds: $472,500
- Realized Gain: $157,500
- Exit Date: 2026-09-20
- Days Held: 30
```

---

## Signal Automation Checklist

Use this checklist to verify all signals are coded:

```
ENTRY SIGNALS:
[ ] Signal 1.1: Price > SMA_20
[ ] Signal 1.2: Volume > 1.5x average
[ ] Signal 1.3: Breakout above 5-day high
[ ] Signal 1.4: Pullback within 2-3%
[ ] Signal 1.5: Price > SMA_20 > SMA_50

EXIT SIGNALS:
[ ] Signal 2.1: Profit +40%
[ ] Signal 2.2: Loss -20% (after 7 days)
[ ] Signal 2.3: <14 days to expiry
[ ] Signal 2.4: Early profit 30-50%

SECTOR SIGNALS:
[ ] Signal 3.1: 3+ losses in sector

REBALANCE SIGNALS:
[ ] Signal 4.1: Allocation drift >5%
```

---

**These signals are completely parameterized and can be automated.**  
They are NOT subjective—they have exact numerical thresholds.

Generated: August 20, 2026  
Source: Scott's trading data + pattern extraction
