수정본
Some checks failed
CI/CD Pipeline / test-backend (push) Has been cancelled
CI/CD Pipeline / test-frontend (push) Has been cancelled
CI/CD Pipeline / build-and-push (push) Has been cancelled

This commit is contained in:
2026-03-27 14:47:49 +09:00
parent 844ee8944f
commit c818810667
25 changed files with 2708 additions and 266 deletions

View File

@@ -124,23 +124,28 @@ class TestVolumeRegime:
class TestTradingMode:
def test_crisis_high_atr(self):
result = _determine_trading_mode(atr_percentile=96.0, adx_value=20.0, recent_5d_return=0.0, mdd_current=0.0)
# CLAUDE.md 8.5: ATR백분위 > 90 → Crisis
result = _determine_trading_mode(atr_percentile=91.0, adx_value=20.0, recent_5d_return=0.0, mdd_current=0.0)
assert result == TradingMode.CRISIS.value
def test_crisis_deep_loss(self):
result = _determine_trading_mode(atr_percentile=50.0, adx_value=20.0, recent_5d_return=-9.0, mdd_current=0.0)
# CLAUDE.md 8.5: 5일수익 < -5% → Crisis
result = _determine_trading_mode(atr_percentile=50.0, adx_value=20.0, recent_5d_return=-6.0, mdd_current=0.0)
assert result == TradingMode.CRISIS.value
def test_crisis_mdd(self):
result = _determine_trading_mode(atr_percentile=50.0, adx_value=20.0, recent_5d_return=0.0, mdd_current=-16.0)
# CLAUDE.md 8.5: MDD < -10% → Crisis
result = _determine_trading_mode(atr_percentile=50.0, adx_value=20.0, recent_5d_return=0.0, mdd_current=-11.0)
assert result == TradingMode.CRISIS.value
def test_defensive_high_atr(self):
result = _determine_trading_mode(atr_percentile=85.0, adx_value=20.0, recent_5d_return=0.0, mdd_current=0.0)
# CLAUDE.md 8.5: ATR백분위 > 70 → Defensive (but < 90 so not Crisis)
result = _determine_trading_mode(atr_percentile=75.0, adx_value=20.0, recent_5d_return=0.0, mdd_current=0.0)
assert result == TradingMode.DEFENSIVE.value
def test_defensive_moderate_loss(self):
result = _determine_trading_mode(atr_percentile=50.0, adx_value=20.0, recent_5d_return=-6.0, mdd_current=0.0)
# CLAUDE.md 8.5: 5일수익 < -3% → Defensive (but > -5% so not Crisis)
result = _determine_trading_mode(atr_percentile=50.0, adx_value=20.0, recent_5d_return=-4.0, mdd_current=0.0)
assert result == TradingMode.DEFENSIVE.value
def test_aggressive(self):
@@ -157,8 +162,8 @@ class TestTradingMode:
assert result == TradingMode.NORMAL.value
def test_crisis_takes_priority_over_defensive(self):
# ATR=96 triggers both crisis (>95) and defensive (>80), crisis wins
result = _determine_trading_mode(atr_percentile=96.0, adx_value=30.0, recent_5d_return=3.0, mdd_current=0.0)
# ATR=92 triggers both crisis (>90) and defensive (>70), crisis wins
result = _determine_trading_mode(atr_percentile=92.0, adx_value=30.0, recent_5d_return=3.0, mdd_current=0.0)
assert result == TradingMode.CRISIS.value