Files
FX-ML-Trading-Engine/QuantTrader/tests/test_risk_engine.py
T
2025-11-14 22:56:44 +00:00

35 lines
1.1 KiB
Python

import unittest
from QuantTrader.core.risk.risk_engine import RiskEngine, RiskLimits
class RiskEngineTest(unittest.TestCase):
def setUp(self):
limits = RiskLimits(
max_position_notional=100000,
max_gross_leverage=2.0,
max_daily_loss=5000,
max_drawdown=0.1,
)
self.engine = RiskEngine(limits=limits, starting_equity=50000)
def test_exposure_limit(self):
ok, _ = self.engine.evaluate_order("EURUSD", "buy", 90000)
self.assertTrue(ok)
self.engine.record_fill("EURUSD", "buy", 90000, pnl=0)
ok, reason = self.engine.evaluate_order("EURUSD", "buy", 20000)
self.assertFalse(ok)
self.assertEqual(reason, "symbol_exposure_limit:EURUSD")
def test_daily_loss_limit(self):
ok, _ = self.engine.check_loss_limits()
self.assertTrue(ok)
self.engine.record_fill("USDJPY", "sell", 50000, pnl=-6000)
ok, reason = self.engine.check_loss_limits()
self.assertFalse(ok)
self.assertEqual(reason, "daily_loss_limit")
if __name__ == "__main__":
unittest.main()