hedge and auto hedger in separate folders
This commit is contained in:
256
clp_hedger/CLP_HEDGING_IMPLEMENTATION_PLAN.md
Normal file
256
clp_hedger/CLP_HEDGING_IMPLEMENTATION_PLAN.md
Normal file
@ -0,0 +1,256 @@
|
||||
# CLP Hedging Zone Strategy Implementation Plan
|
||||
*Generated: 2025-12-16*
|
||||
*Session Focus: Risk analysis and zone-based hedge optimization*
|
||||
|
||||
## Executive Summary
|
||||
This plan implements a zone-based hedging strategy for narrow CLP ranges (+/- 0.3%) with $100 position size and $10 minimum trade constraints. The strategy maintains the existing 7.5-minute hedge delay for mean reversion while adding preparation zones for potential CLP closing.
|
||||
|
||||
## Current System Analysis
|
||||
|
||||
### Scripts & Configuration
|
||||
- **uniswap_manager.py**: CLP lifecycle management (451-second interval)
|
||||
- **clp_scalper_hedger.py**: Active hedging (4-second interval)
|
||||
- **Strategy**: Mean reversion with intentional 7.5-minute unhedged period
|
||||
- **Position Size**: $100 CLP position
|
||||
- **Range Width**: +/- 0.3% (extremely narrow, requiring precise zone management)
|
||||
- **Minimum Trade**: $10 (10% of position size - significant constraint)
|
||||
|
||||
### Risk Assessment
|
||||
- **Strategic Risk**: Intentional unhedged exposure during 7.5-minute delay (accepted)
|
||||
- **Technical Risks**: JSON file corruption, price source divergence, oscillation
|
||||
- **Financial Impact**: $10 minimum trades create risk of overshooting hedge targets
|
||||
|
||||
## Proposed Zone Strategy
|
||||
|
||||
### Zone Structure
|
||||
```
|
||||
Range Position (% from bottom):
|
||||
├── TOP PREPARE ZONE (90-100%): Gradual reduction 100% → 0%
|
||||
├── TOP HYSTERESIS ZONE (85-90%): Maintain current hedge
|
||||
├── MIDDLE NORMAL ZONE (10-85%): Normal hedge (100%)
|
||||
├── BOTTOM HYSTERESIS ZONE (5-10%): Maintain current hedge
|
||||
└── BOTTOM MAX ZONE (0-5%): Enhanced over-hedge (112.5%)
|
||||
```
|
||||
|
||||
### Zone Rationale
|
||||
- **90% Preparation Start**: Adequate preparation time while minimizing whipsaw risk
|
||||
- **85-90% Hysteresis Buffer**: Prevents oscillation near top boundary
|
||||
- **5-10% Bottom Buffer**: Reduces frequency of over-hedge adjustments
|
||||
- **0-5% Enhanced Over-hedge**: Maximum protection when CLP is fully WETH
|
||||
|
||||
## Implementation Details
|
||||
|
||||
### Configuration Updates
|
||||
```python
|
||||
# Zone Boundaries for Narrow Range
|
||||
TOP_PREPARE_START = 0.90 # Start unhedging at 90%
|
||||
TOP_HYSTERESIS_START = 0.85 # Hysteresis buffer zone
|
||||
BOTTOM_HYSTERESIS_END = 0.10 # Bottom hysteresis buffer
|
||||
BOTTOM_MAX_ZONE_END = 0.05 # Enhanced over-hedge until 5%
|
||||
|
||||
# $10 Minimum Trade Controls
|
||||
MIN_PRICE_MOVEMENT_PCT = 0.10 # 10% range movement before adjustment
|
||||
MIN_TIME_BETWEEN_ADJUSTMENTS = 60 # 1 minute minimum between trades
|
||||
MIN_TRADE_SIZE_USD = 10.0 # $10 minimum trade size
|
||||
|
||||
# Hedge Multipliers
|
||||
TOP_PREPARE_MULTIPLIER = 0.0 # 0% hedge in prepare zone
|
||||
NORMAL_HEDGE_MULTIPLIER = 1.0 # 100% normal hedge
|
||||
BOTTOM_MAX_MULTIPLIER = 1.125 # 112.5% over-hedge
|
||||
|
||||
# Risk Management
|
||||
MAX_DAILY_TRADES = 3 # Maximum trades per day
|
||||
MAX_DAILY_EXPOSURE_USD = 30.0 # Maximum daily trade exposure
|
||||
OVERSHOOT_TOLERANCE_PCT = 0.05 # 5% tolerance on $10 trades
|
||||
```
|
||||
|
||||
### Core Methods to Implement
|
||||
|
||||
#### 1. Zone Calculation Method
|
||||
```python
|
||||
def calculate_zone_multiplier(self, price_pct):
|
||||
"""
|
||||
Calculate hedge multiplier based on price position within CLP range.
|
||||
Implements gradual transitions and hysteresis.
|
||||
"""
|
||||
if price_pct >= 0.90: # 90-100%: Gradual reduction
|
||||
return (1.0 - (price_pct - 0.90) / 0.10)
|
||||
elif price_pct <= 0.05: # 0-5%: Enhanced over-hedge
|
||||
return 1.0 + (0.05 - price_pct) * 0.25 # 112.5% at 0%, 100% at 5%
|
||||
else: # 5-90%: Normal hedge
|
||||
return 1.0
|
||||
```
|
||||
|
||||
#### 2. Hysteresis Control
|
||||
```python
|
||||
def should_adjust_hedge(self, current_price_pct, last_adjustment_pct, last_adjustment_time):
|
||||
"""
|
||||
Prevent frequent small adjustments due to $10 minimum trade constraint.
|
||||
"""
|
||||
# Minimum price movement (equivalent to $10 trade)
|
||||
if abs(current_price_pct - last_adjustment_pct) < self.MIN_PRICE_MOVEMENT_PCT:
|
||||
return False
|
||||
|
||||
# Minimum time between adjustments
|
||||
if time.time() - last_adjustment_time < self.MIN_TIME_BETWEEN_ADJUSTMENTS:
|
||||
return False
|
||||
|
||||
return True
|
||||
```
|
||||
|
||||
#### 3. Trade Size Optimization
|
||||
```python
|
||||
def calculate_optimal_trade_size(self, diff, position_value):
|
||||
"""
|
||||
Round trades to $10 increments and enforce minimum trade size.
|
||||
"""
|
||||
trade_value_usd = abs(diff * position_value)
|
||||
|
||||
# Skip if below minimum
|
||||
if trade_value_usd < self.MIN_TRADE_SIZE_USD:
|
||||
return 0
|
||||
|
||||
# Round to nearest $10 increment for efficiency
|
||||
rounded_trade_value = round(trade_value_usd / 10.0) * 10.0
|
||||
|
||||
# Convert back to position units
|
||||
return rounded_trade_value / position_value
|
||||
```
|
||||
|
||||
### Files to Modify
|
||||
|
||||
#### Primary: clp_scalper_hedger.py
|
||||
**Lines to Update:**
|
||||
- **44-53**: Zone configuration constants
|
||||
- **252-284**: Core `calculate_rebalance()` method
|
||||
- **255-265**: Integrate with existing over-hedge logic
|
||||
|
||||
**Methods to Add:**
|
||||
- `calculate_zone_multiplier()` - Zone-based hedge calculation
|
||||
- `should_adjust_hedge()` - $10 minimum trade logic
|
||||
- `calculate_optimal_trade_size()` - Rounding to $10 increments
|
||||
- `update_zone_state()` - Hysteresis zone management
|
||||
|
||||
#### Secondary: hedge_status.json (runtime)
|
||||
- Add zone transition tracking fields
|
||||
- Add last adjustment timestamps
|
||||
- Add daily trade count tracking
|
||||
|
||||
## Risk Management Strategy
|
||||
|
||||
### Financial Risk Controls
|
||||
- **Position Size Limit**: $100 maximum CLP position
|
||||
- **Daily Trade Limit**: Maximum 3 trades ($30 exposure)
|
||||
- **Over-hedge Cap**: 125% absolute maximum (vs 112.5% target)
|
||||
- **Transaction Cost Budget**: $5 maximum daily trading costs
|
||||
|
||||
### Technical Risk Mitigation
|
||||
- **JSON File Locking**: Prevent concurrent access corruption
|
||||
- **Hysteresis Implementation**: Prevent oscillation trading
|
||||
- **Position Validation**: Verify hedge calculations before execution
|
||||
- **Emergency Stops**: Circuit breakers on extreme market moves
|
||||
|
||||
### Operational Risk Controls
|
||||
- **Time-based Limits**: Minimum intervals between adjustments
|
||||
- **Movement Thresholds**: Minimum price changes before trading
|
||||
- **Overshoot Protection**: Tolerance bands around target hedge ratios
|
||||
- **Daily Cumulative Limits**: Maximum position change per day
|
||||
|
||||
## Implementation Sequence
|
||||
|
||||
### Phase 1: Core Zone Logic (Priority 1)
|
||||
1. **Implement zone calculation method**
|
||||
2. **Add hysteresis controls**
|
||||
3. **Integrate with existing over-hedge logic**
|
||||
4. **Update configuration constants**
|
||||
|
||||
### Phase 2: Trade Optimization (Priority 2)
|
||||
1. **Implement $10 minimum trade logic**
|
||||
2. **Add rounding to nearest $10 increment**
|
||||
3. **Add minimum time between trades**
|
||||
4. **Integrate with existing `manage_orders()` method**
|
||||
|
||||
### Phase 3: Risk Controls (Priority 3)
|
||||
1. **Add daily trade count limits**
|
||||
2. **Implement overshoot protection**
|
||||
3. **Add position validation checks**
|
||||
4. **Create monitoring/logging for zone transitions**
|
||||
|
||||
### Phase 4: Live Deployment & Optimization (Priority 4)
|
||||
1. **Deploy with $100 position**
|
||||
2. **Monitor zone transition frequency**
|
||||
3. **Adjust zone boundaries based on observations**
|
||||
4. **Optimize trade timing and size**
|
||||
|
||||
## Key Questions for Finalization
|
||||
|
||||
### Configuration Preferences
|
||||
1. **Zone Boundaries**: Are 90%/85%/10%/5% boundaries optimal, or should they be adjusted?
|
||||
2. **Trade Frequency**: Is 3 trades per day acceptable, or prefer fewer/larger trades?
|
||||
3. **Over-hedge Level**: Is 112.5% multiplier appropriate, or more/less aggressive?
|
||||
4. **Time Buffers**: Is 1-minute minimum between trades sufficient?
|
||||
|
||||
### Risk Tolerance
|
||||
5. **Maximum Daily Exposure**: Is $30 daily trade exposure acceptable?
|
||||
6. **Overshoot Tolerance**: Is 5% tolerance on $10 trades appropriate?
|
||||
7. **Position Size**: Should we start with smaller position during testing?
|
||||
|
||||
### Strategy Behavior
|
||||
8. **Zone Entry Logic**: Should we implement different thresholds for entering vs exiting zones?
|
||||
9. **Trade Timing**: Should trades occur immediately on zone entry or wait for confirmation?
|
||||
10. **Market Conditions**: Should zones adapt based on volatility or time of day?
|
||||
|
||||
## Success Metrics
|
||||
|
||||
### Primary Metrics
|
||||
- **Oscillation Frequency**: < 2 zone changes per hour
|
||||
- **Trade Efficiency**: > 80% of trades executed at optimal size ($10+)
|
||||
- **Hedge Accuracy**: Average hedge ratio within 5% of target
|
||||
- **Transaction Costs**: < 3% of position value per day
|
||||
|
||||
### Secondary Metrics
|
||||
- **Zone Transition Smoothness**: Gradual transitions without sudden jumps
|
||||
- **Risk Control Compliance**: No violations of daily limits
|
||||
- **System Stability**: No JSON corruption or sync issues
|
||||
- **Strategy Performance**: Improvement over current baseline
|
||||
|
||||
## Monitoring & Alerts
|
||||
|
||||
### Real-time Monitoring
|
||||
- Zone transition logging
|
||||
- Hedge ratio tracking
|
||||
- Trade execution verification
|
||||
- Price source divergence detection
|
||||
|
||||
### Alert Conditions
|
||||
- Excessive oscillation (> 5 zone changes/hour)
|
||||
- Approaching daily trade limits
|
||||
- Large hedge ratio deviations (> 10% from target)
|
||||
- JSON file access conflicts
|
||||
|
||||
## Rollback Plan
|
||||
|
||||
### Immediate Rollback Triggers
|
||||
- Financial losses > 15% of position value
|
||||
- System instability or crashes
|
||||
- Excessive trading frequency (> 5 trades/hour)
|
||||
- Hedge calculation errors
|
||||
|
||||
### Rollback Procedure
|
||||
1. Stop both scripts
|
||||
2. Restore original configuration
|
||||
3. Verify position status
|
||||
4. Resume with baseline strategy
|
||||
5. Analyze failure causes
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. **Confirm Final Configuration**: Zone boundaries, trade limits, risk tolerances
|
||||
2. **Implement Core Logic**: Zone calculation and hysteresis methods
|
||||
3. **Integrate with Existing Code**: Update calculate_rebalance() method
|
||||
4. **Test with Small Position**: Validate with $100 position
|
||||
5. **Monitor and Optimize**: Adjust based on observed behavior
|
||||
|
||||
---
|
||||
|
||||
*This plan serves as the complete technical specification for implementing zone-based hedging strategy with $10 minimum trade constraints. The solution maintains the existing mean reversion strategy while adding sophisticated preparation zones for CLP closing scenarios.*
|
||||
Reference in New Issue
Block a user