Initial public release
This commit is contained in:
33
hydra/config/validation.py
Normal file
33
hydra/config/validation.py
Normal file
@@ -0,0 +1,33 @@
|
||||
from pydantic import BaseModel, field_validator
|
||||
|
||||
|
||||
class StrategyConfig(BaseModel):
|
||||
stop_loss_pct: float = 0.02
|
||||
take_profit_pct: float = 0.05
|
||||
position_size_pct: float = 0.10
|
||||
max_positions: int = 5
|
||||
|
||||
@field_validator("stop_loss_pct")
|
||||
@classmethod
|
||||
def validate_stop_loss(cls, v: float) -> float:
|
||||
if v <= 0:
|
||||
raise ValueError("손절은 양수여야 합니다")
|
||||
if v > 0.20:
|
||||
raise ValueError(f"손절 {v * 100:.1f}%는 너무 큽니다 (최대 20%)")
|
||||
return v
|
||||
|
||||
@field_validator("position_size_pct")
|
||||
@classmethod
|
||||
def validate_position_size(cls, v: float) -> float:
|
||||
if v > 0.50:
|
||||
raise ValueError(f"포지션 사이즈 {v * 100:.1f}%는 너무 큽니다 (최대 50%)")
|
||||
return v
|
||||
|
||||
|
||||
class RiskConfig(BaseModel):
|
||||
daily_loss_limit_pct: float = 0.03
|
||||
daily_loss_kill_pct: float = 0.05
|
||||
max_position_per_symbol_pct: float = 0.20
|
||||
max_position_per_strategy_pct: float = 0.30
|
||||
max_position_per_market_pct: float = 0.50
|
||||
consecutive_loss_limit: int = 5
|
||||
Reference in New Issue
Block a user