chore: 스윙 자본 상한 70%로 상향 (스윙:DT = 70:30)
스윙이 이미 47%라 신규 매수가 swing_capital_cap 에 막혀(오늘 60건) 표본이 쌓이지 않았다. - SWING_MAX_CAPITAL_RATIO 0.50 → 0.70 - DAY_TRADE_MAX_RATIO_DT 0.50 → 0.30, DAY_TRADE_MAX_POSITIONS 8 → 5 (5×6%=30%) - 두 상한의 합이 100%를 넘지 않는지 테스트로 고정 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -219,12 +219,12 @@ class Settings(BaseSettings):
|
||||
# 데이트레이딩(5분봉) 전략 (섹션 7.3)
|
||||
# ═════════════════════════════════════════════════════════════════════════════
|
||||
DAY_TRADE_ENABLED: bool = True # 데이트레이딩 활성화
|
||||
DAY_TRADE_MAX_POSITIONS: int = 8 # 동시 최대 종목 수 (3→8, 2026-09-22 50:50 배분: 8×6%≈50%)
|
||||
DAY_TRADE_CAPITAL_RATIO: float = 0.50 # 전체 자본 대비 최대 50% (0.25→0.50, 2026-09-22)
|
||||
DAY_TRADE_MAX_POSITIONS: int = 5 # 동시 최대 종목 수 (8→5, 2026-09-23 30% 배분: 5×6%=30%)
|
||||
DAY_TRADE_CAPITAL_RATIO: float = 0.30 # 전체 자본 대비 최대 30% (0.50→0.30, 2026-09-23 스윙 70%)
|
||||
DAY_TRADE_PER_STOCK_RATIO: float = 0.06 # 종목당 최대 6% (0.04→0.06, MAX_POSITION_SIZE 상한과 동일)
|
||||
DAY_TRADE_MAX_CAPITAL_RATIO: float = 0.06 # 종목당 최대 6% 자본 (0.04→0.06, 2026-09-22)
|
||||
DAY_TRADE_MAX_RATIO_DT: float = 0.50 # 전체 데이트레이딩 최대 50% (0.25→0.50, 2026-09-22 스윙:DT = 50:50)
|
||||
SWING_MAX_CAPITAL_RATIO: float = 0.50 # 스윙 전략 합산 최대 50% (신규, 2026-09-22 — 초과 시 스윙 신규 매수 차단)
|
||||
DAY_TRADE_MAX_RATIO_DT: float = 0.30 # 전체 데이트레이딩 최대 30% (스윙:DT = 70:30, 2026-09-23)
|
||||
SWING_MAX_CAPITAL_RATIO: float = 0.70 # 스윙 전략 합산 최대 70% (0.50→0.70, 2026-09-23 — 표본 확보)
|
||||
DAY_TRADE_STOP_LOSS_PCT: float = 0.02 # 종목 손절 -2%
|
||||
DAY_TRADE_DAILY_LOSS_LIMIT: float = -0.03 # 일일 손실 한도 -3%
|
||||
DAY_TRADE_EOD_FLAT_HOUR: int = 15 # EOD 강제 청산 시간 (15시)
|
||||
|
||||
@@ -101,11 +101,15 @@ async def test_entry_no_lunch_block_and_cutoff_from_settings():
|
||||
|
||||
|
||||
def test_capital_split_settings():
|
||||
assert settings.DAY_TRADE_MAX_RATIO_DT == 0.50
|
||||
assert settings.SWING_MAX_CAPITAL_RATIO == 0.50
|
||||
assert settings.DAY_TRADE_MAX_POSITIONS * settings.DAY_TRADE_MAX_CAPITAL_RATIO >= 0.48
|
||||
# 2026-09-23: 스윙:DT = 70:30 (스윙 표본 확보)
|
||||
assert settings.DAY_TRADE_MAX_RATIO_DT == 0.30
|
||||
assert settings.SWING_MAX_CAPITAL_RATIO == 0.70
|
||||
# 두 전략 합이 100%를 넘지 않아야 현금 여력이 남는다
|
||||
assert settings.SWING_MAX_CAPITAL_RATIO + settings.DAY_TRADE_MAX_RATIO_DT <= 1.0
|
||||
# 동시 보유 한도 × 종목당 비중이 전체 한도를 채울 수 있어야 한다
|
||||
assert settings.DAY_TRADE_MAX_POSITIONS * settings.DAY_TRADE_MAX_CAPITAL_RATIO >= settings.DAY_TRADE_MAX_RATIO_DT
|
||||
assert (settings.DAY_TRADE_ENTRY_CUTOFF_HOUR, settings.DAY_TRADE_ENTRY_CUTOFF_MIN) == (15, 0)
|
||||
from app.services.day_trading_strategy import calculate_day_trade_position_size
|
||||
# 총자산 1,000만: 종목당 60만, DT 합산 500만
|
||||
# 총자산 1,000만: 종목당 60만, DT 합산 300만
|
||||
assert calculate_day_trade_position_size(10_000_000, 5_000_000, 0) == 600_000
|
||||
assert calculate_day_trade_position_size(10_000_000, 5_000_000, 4_800_000) == 200_000
|
||||
assert calculate_day_trade_position_size(10_000_000, 5_000_000, 2_800_000) == 200_000
|
||||
|
||||
Reference in New Issue
Block a user