9.6 KiB
Chapter 4: Phase Management System (Deep Dive)
Understanding Phase-Based Management
The Phase Management System is the heart of PME's adaptive protection logic. This chapter explains how it works under the hood.
The Phase Lifecycle
Initialization
When PME detects a new position:
1. Create position tracker
2. Calculate entry price from current price and profit
3. Initialize phase as PHASE_INITIAL
4. Record peak profit (current profit)
5. Set highest_phase_achieved = PHASE_INITIAL
6. Begin monitoring
Phase Determination
Every tick, PME evaluates profit to determine the appropriate phase:
if (profit_points < 40) → PHASE_INITIAL
else if (profit_points < 60) → PHASE_PROTECTION
else if (profit_points < 100) → PHASE_ACCUMULATION
else if (profit_points < 200) → PHASE_MAXIMIZATION
else if (profit_points < 400) → PHASE_RUNNER
else → PHASE_EXTREME
Phase Transitions
When a position moves to a new phase:
Forward Transition (profit increasing):
Old Phase: ACCUMULATION (60-99pts)
New Phase: MAXIMIZATION (100-199pts)
Actions:
1. Update highest_phase_achieved
2. Calculate new minimum lock (50pts)
3. Apply phase lock if > current lock
4. Log transition
5. Sound alert (optional)
Backward Transition (profit retracing):
Old Phase: MAXIMIZATION (100-199pts)
New Phase: ACCUMULATION (60-99pts)
Actions:
1. Do NOT downgrade highest_phase_achieved
2. MAINTAIN previous lock (retreat protection)
3. Optionally TIGHTEN lock (retreat multiplier: 1.2×)
4. Log retreat warning
5. Continue monitoring
Phase-Specific Behaviors
PHASE_INITIAL (0-39 points)
Philosophy: "Let it breathe"
Actions:
- ✅ Monitor position
- ✅ Track peak profit
- ✅ Check risk limits
- ❌ No stop-loss adjustments
- ❌ No profit locking
- ❌ No trailing
Rationale: Positions need room to develop. Early intervention can cut winners short.
Log Output:
[DEBUG] Position #123456 in PHASE_INITIAL (35.0 pts) - no phase lock applied
PHASE_PROTECTION (40-59 points)
Philosophy: "Protect the gain"
Minimum Lock: 10 points
Actions:
- ✅ Apply first profit lock
- ✅ Begin light trailing (2.5× ATR)
- ✅ Prepare for partial closures
- ✅ Monitor for phase advancement
Lock Calculation:
Position at 45 points profit:
├─ Base Lock: 10 points (phase minimum)
├─ Progressive: (45 - 10) × 30% = 10.5 points
├─ Total Lock: 10 + 10.5 = 20.5 points
├─ With 50% breathing: 45 × 50% = 22.5 points
└─ Effective Lock: MAX(20.5, 22.5) = 22.5 points (but min 10)
Final: 22.5 points
Log Output:
[INFO] Position #123456 transitioning from Initial to Protection (Peak: 45.0, Current: 44.0)
[INFO] Applied phase lock for #123456: Phase Protection lock: 22.5 pts (was 0.0 pts)
PHASE_ACCUMULATION (60-99 points)
Philosophy: "Build the position"
Minimum Lock: 25 points
Actions:
- ✅ Increase lock to 25pts minimum
- ✅ Active trailing (2.0× ATR)
- ✅ Consider first partial close (if enabled)
- ✅ Monitor momentum
Strategy:
- If momentum weak: Prepare to bank profits via partial close
- If momentum strong: Keep full position, trail loosely
Log Output:
[INFO] Position #123456 transitioning from Protection to Accumulation (Peak: 65.0, Current: 63.0)
[INFO] Phase Lock Calc #123456: Phase=Accumulation, Peak=65.0, Current=63.0, BaseLock=25.0, ProgLock=12.0, BreathingRoom=32.5, EffectiveLock=37.0
PHASE_MAXIMIZATION (100-199 points)
Philosophy: "Actively manage"
Minimum Lock: 50 points
Actions:
- ✅ Lock minimum 50pts
- ✅ Progressive locking at 50% of excess
- ✅ Tighter trailing (1.5× ATR)
- ✅ Second partial close opportunity
- ✅ Active retracement monitoring
Risk Check:
- Max retracement allowed: 60% from peak
- If exceeded: Warn or close position
Lock Calculation:
Position at 150 points profit:
├─ Base Lock: 50 points
├─ Progressive: (150 - 50) × 50% = 50 points
├─ Total Lock: 50 + 50 = 100 points
├─ With 50% breathing: 150 × 50% = 75 points
└─ Effective Lock: MAX(100, 75) = 100 points
Final: 100 points
PHASE_RUNNER (200-399 points)
Philosophy: "Let winners run"
Minimum Lock: 100 points
Actions:
- ✅ Lock minimum 100pts (significant profit secured)
- ✅ Very wide trailing (3.0× ATR)
- ✅ Third partial close (create runner)
- ✅ Mark as "runner_active"
- ✅ Reduce management frequency
Purpose:
- Allow position to capture rare, extended moves
- Accept wider swings for potential outsized gains
- Runner portion typically 35-50% of original size
Log Output:
[INFO] Position #123456 in RUNNER phase - 35.00% remaining
[INFO] Runners Created: 1
PHASE_EXTREME (400+ points)
Philosophy: "Protect the exceptional"
Minimum Lock: 200 points
Actions:
- ✅ Lock minimum 200pts
- ✅ Ultra-wide trailing (4.0× ATR)
- ✅ Final partial close opportunity
- ✅ Monitor for exhaustion signals
- ⚠️ Prepare for reversal
Exhaustion Detection:
- Time: Position in phase > 100 bars
- Momentum: Score < 0.3
- Retracement: > 40% from peak
Log Output:
[INFO] Position #123456 in EXTREME phase - monitoring for exhaustion
[WARNING] Position #123456 - exhaustion detected at extreme profit
[INFO] Extreme Profits: 1
Retreat Protection
What Is It?
When a position retraces from a higher phase to a lower one, PME maintains the lock from the highest phase achieved.
Example
Timeline:
T1: +110 pts → MAXIMIZATION (lock 50pts)
T2: +180 pts → Still MAXIMIZATION (lock increased to 75pts)
T3: +85 pts → Retreats to ACCUMULATION
Traditional System:
└─ Would apply ACCUMULATION lock (25pts) ❌
PME Retreat Protection:
└─ Maintains MAXIMIZATION lock (75pts) ✅
└─ Optionally tightens by 20%: 75 × 1.2 = 90pts ✅
Why It Matters
Prevents "lock downgrade" during retracements, ensuring maximum profit protection is always maintained.
Breathing Room System
Purpose
Allow natural market fluctuations without prematurely exiting profitable positions.
Default: 50% Breathing Room
Peak Profit: 100 points
Breathing Room: 50%
Calculation:
├─ Allow retracement to: 100 × (1 - 0.50) = 50 points
└─ Set SL to lock 50 points minimum
Result: Position can retrace 50% from peak before hitting SL
Dynamic Adjustment
Breathing room adapts to market conditions:
| Condition | Breathing Room | Effect |
|---|---|---|
| Strong momentum | Reduced to 40% | Tighter lock, faster banking |
| Weak momentum | Increased to 60% | Looser lock, more room |
| High volatility | Increased to 60% | Avoid whipsaw exits |
| Low volatility | Reduced to 40% | Take profits efficiently |
Lock Calculation Deep Dive
Formula Components
1. Base Lock = Phase minimum (10, 25, 50, 100, 200)
2. Progressive Lock = (Peak - Base) × Phase %
3. Total Lock = Base + Progressive
4. Breathing Room Applied = Peak × (1 - breathing_room_%)
5. Effective Lock = MAX(Total Lock, Breathing Lock)
6. Dynamic Adjustments (momentum, volatility, retreat)
7. Final Lock = MIN(Effective Lock, Peak × 0.9)
Step-by-Step Example
Position Details:
├─ Entry: 1.0850
├─ Peak: 1.0970 (+120 points)
├─ Current: 1.0960 (+110 points)
└─ Phase: MAXIMIZATION
Step 1: Base Lock
└─ MAXIMIZATION minimum = 50 points
Step 2: Progressive Lock
├─ Excess profit = 120 - 50 = 70 points
├─ MAXIMIZATION lock % = 50%
└─ Progressive = 70 × 0.50 = 35 points
Step 3: Total Lock
└─ 50 + 35 = 85 points
Step 4: Breathing Room
├─ 50% breathing room
├─ Lock from breathing = 120 × 0.50 = 60 points
└─ (Less than total lock, so total lock wins)
Step 5: Effective Lock
└─ MAX(85, 60) = 85 points
Step 6: Dynamic Adjustments
├─ Check momentum: 1.2 (strong) → Reduce by 30% = 85 × 0.7 = 59.5
├─ Check volatility: 0.9 (low) → No adjustment
├─ Check retreat: No → No adjustment
└─ After adjustments: 59.5 points
Step 7: Bounds Check
├─ Ensure >= phase minimum: 59.5 >= 50 ✓
├─ Ensure <= 90% of peak: 59.5 <= 108 ✓
└─ Final lock: 59.5 points
Step 8: Convert to Price
├─ Entry price: 1.0850
├─ Lock: 59.5 points × 0.00001 = 0.00595
└─ SL price: 1.0850 + 0.00595 = 1.09095
Result: Stop-loss set at 1.09095
Monitoring and Logs
Debug Logging
When debug logging is enabled (LOG_DEBUG level), you'll see detailed calculations:
[DEBUG] Phase Lock Calc #123456: Phase=Maximization, Peak=120.0, Current=110.0, BaseLock=50.0, ProgLock=35.0, BreathingRoom=60.0, EffectiveLock=59.5
[DEBUG] Phase Lock SL #123456: Entry=1.08500, Current=1.09600, SL=1.09095 (LONG)
Production Logging
In normal operation (LOG_INFO level), you'll see:
[INFO] Position #123456 transitioning from Accumulation to Maximization (Peak: 120.0, Current: 110.0)
[INFO] Applied phase lock for #123456: Phase Maximization lock: 59.5 pts (was 37.0 pts)
Best Practices
1. Don't Micro-Manage Phase Triggers
- Default triggers (40/60/100/200/400) are well-tested
- Adjusting too early can cut winners
- Adjusting too late reduces protection
2. Respect Breathing Room
- 50% is optimal for most strategies
- Reduce only if you have high win rate
- Increase if trading volatile instruments
3. Trust Retreat Protection
- Don't manually intervene during retracements
- PME maintains highest lock automatically
- Manual SL adjustments may conflict
4. Monitor Phase Distribution
- Dashboard shows positions by phase
- Healthy mix indicates good profit capture
- Too many in INITIAL = early exits elsewhere
- Too many in EXTREME = rare but profitable
Return to: Main README