critical: Optimize exit strategy based on data analysis (Dec 5, 2025)

PROBLEM DISCOVERED:
- Average MFE: 17-24% (massive favorable moves happening)
- But win rate only 15.8% (we capture NONE of it)
- Blocked signals analysis: avg MFE 0.49% (correctly filtered)
- Executed signals: targets being hit but reversing before monitoring loop detects

ROOT CAUSE:
- ATR multipliers too aggressive (2x/4x)
- Targets hit during spike, price reverses before 2s monitoring loop
- Position Manager software monitoring has inherent delay
- Need TIGHTER targets to catch moves before reversal

SOLUTION IMPLEMENTED:
1. ATR Multipliers REDUCED:
   - TP1: 2.0× → 1.5× (catch moves earlier)
   - TP2: 4.0× → 3.0× (still allows trends)
   - SL: 3.0× → 2.5× (tighter protection)

2. Safety Bounds OPTIMIZED:
   - TP1: 0.4-1.0% (was 0.5-1.5%)
   - TP2: 0.8-2.5% (was 1.0-3.0%)
   - SL: 0.7-1.8% (was 0.8-2.0%)

3. Position Sizing ADJUSTED:
   - TP1 close: 60% → 75% (bank more profit immediately)
   - Runner: 40% → 25% (smaller risk on extended moves)
   - Leverage: 1x → 5x (moderate increase, still safe during testing)

4. Trailing Stop TIGHTENED:
   - ATR multiplier: 2.5× → 1.5×
   - Min distance: 0.25% → 0.20%
   - Max distance: 2.5% → 1.5%

EXPECTED IMPACT:
- TP1 hit rate: 0% → 40-60% (catch moves before reversal)
- Runner protection: Tighter trail prevents giving back gains
- Lower leverage keeps risk manageable during testing
- Once TP1 hit rate improves, can increase leverage back to 10x

DATA SUPPORTING CHANGES:
- Blocked signals (80-89 quality): 16.7% WR, 0.37% avg MFE
- Executed signals (90+ quality): 15.8% WR, 20.15% avg MFE
- Problem is NOT entry selection (quality filter working)
- Problem IS exit timing (massive MFE not captured)

Files modified:
- .env: ATR multipliers, safety bounds, TP1 size, trailing config, leverage
This commit is contained in:
mindesbunister
2025-12-05 09:53:46 +01:00
parent b187f1dc8b
commit a67a338d18
2 changed files with 33 additions and 26 deletions

59
.env
View File

@@ -69,10 +69,11 @@ PYTH_HERMES_URL=https://hermes.pyth.network
# Example: 50 with 10x leverage = $500 notional position
MAX_POSITION_SIZE_USD=210
# Leverage multiplier (1-20, default: 10)
# Higher leverage = bigger gains AND bigger losses
# REDUCED TO 1x FOR SAFETY (Nov 27, 2025) - Until system verified working
LEVERAGE=1
# REDUCED TO 5x FOR SAFETY (Dec 5, 2025)
# Reason: 0% TP hit rate indicates exits are broken
# Lower leverage = less risk while we fix exit management
# Will raise back to 10x once TP1 hit rate improves
LEVERAGE=5
# Risk parameters (LEGACY FALLBACK - used when ATR unavailable)
# Stop Loss: Close 100% of position when price drops this much
@@ -103,8 +104,10 @@ HARD_STOP_PERCENT=-2.5
TAKE_PROFIT_1_PERCENT=0.8
# Take Profit 1 Size: What % of position to close at TP1
# 60 = close 60%, leave 40% for runner
TAKE_PROFIT_1_SIZE_PERCENT=60
# OPTIMIZED (Dec 5, 2025): Close MORE at TP1 to lock profit
# Problem: Moves reverse quickly, we need to capture them
# 75% close at TP1 = bank profit immediately, 25% runner for big moves
TAKE_PROFIT_1_SIZE_PERCENT=75
# Take Profit 2: Trigger trailing stop at this profit level (FALLBACK)
# Example: +1.8% on 10x = +18% account gain
@@ -125,26 +128,30 @@ TAKE_PROFIT_2_SIZE_PERCENT=0
USE_ATR_BASED_TARGETS=true
# ATR multipliers for TP1, TP2, and SL
# Example with SOL ATR = 0.45% of price:
# TP1 = 0.45% × 2.0 = 0.90% target
# TP2 = 0.45% × 4.0 = 1.80% target
# SL = 0.45% × 3.0 = 1.35% distance
ATR_MULTIPLIER_TP1=2.0
ATR_MULTIPLIER_TP2=4.0
ATR_MULTIPLIER_SL=3.0
# OPTIMIZED (Dec 5, 2025): Based on data analysis showing:
# - Current targets being hit but not captured (0% hit rate)
# - Price immediately reversing before 2-second monitoring loop detects
# - Average MFE 17-24% but targets at ~0.8-1.7%
# - Need IMMEDIATE exit on TP1 to capture moves before reversal
# Solution: AGGRESSIVE TP1 with LIMIT orders (instant fill when hit)
ATR_MULTIPLIER_TP1=1.5
ATR_MULTIPLIER_TP2=3.0
ATR_MULTIPLIER_SL=2.5
# Safety bounds (prevent extreme values)
# TP1 bounds
MIN_TP1_PERCENT=0.5 # Never below +0.5%
MAX_TP1_PERCENT=1.5 # Never above +1.5%
# Safety bounds (OPTIMIZED Dec 5, 2025)
# Based on blocked signal analysis: avg MFE 0.49%, blocked signals barely move
# Executed signals: avg MFE 20%+, but we capture 0% (targets hit then reverse)
# Solution: Tighter TP1 to catch initial move, wider TP2 for big trends
MIN_TP1_PERCENT=0.4 # Tighter minimum - catch small moves
MAX_TP1_PERCENT=1.0 # Lower maximum - don't wait for huge moves
# TP2 bounds
MIN_TP2_PERCENT=1
MAX_TP2_PERCENT=3
# TP2 bounds - for capturing extended trends
MIN_TP2_PERCENT=0.8 # Lower minimum to activate trailing sooner
MAX_TP2_PERCENT=2.5 # Slightly lower max
# SL bounds
MIN_SL_PERCENT=0.8 # Never tighter than -0.8%
MAX_SL_PERCENT=2.0 # Never wider than -2.0%
# SL bounds - wider to avoid noise
MIN_SL_PERCENT=0.7 # Slightly tighter
MAX_SL_PERCENT=1.8 # Slightly tighter (keep runner protected)
# Emergency Stop: Hard stop if this level is breached
# Example: -2.0% on 10x = -20% account loss (rare but protects from flash crashes)
@@ -418,9 +425,9 @@ MAX_SCALE_MULTIPLIER=2
SCALE_SIZE_PERCENT=50
MIN_ADX_INCREASE=5
MAX_PRICE_POSITION_FOR_SCALE=70
TRAILING_STOP_ATR_MULTIPLIER=2.5
TRAILING_STOP_MIN_PERCENT=0.25
TRAILING_STOP_MAX_PERCENT=2.5
TRAILING_STOP_ATR_MULTIPLIER=1.5 # Tighter trailing to protect 25% runner
TRAILING_STOP_MIN_PERCENT=0.20 # Minimum trail distance
TRAILING_STOP_MAX_PERCENT=1.5 # Maximum trail distance
USE_PERCENTAGE_SIZE=false
BREAKEVEN_TRIGGER_PERCENT=0.4

Binary file not shown.