Add risk management features: implement loss limits, trade limits, and pre-trade validation; update settings and tests

This commit is contained in:
2026-06-01 11:16:37 +02:00
parent 9d8a8a8a45
commit 45e219d103
14 changed files with 718 additions and 20 deletions
+37
View File
@@ -0,0 +1,37 @@
from __future__ import annotations
import pytest
from arbitrade.risk.pre_trade import PreTradeValidator
def test_pre_trade_validator_accepts_when_balance_and_min_size_pass() -> None:
validator = PreTradeValidator(min_order_size_by_asset={"USD": 50.0})
assert validator.validate(
balances_by_asset={"USD": 100.0},
required_by_asset={"USD": 75.0},
)
def test_pre_trade_validator_rejects_when_balance_insufficient() -> None:
validator = PreTradeValidator(min_order_size_by_asset={"USD": 50.0})
assert not validator.validate(
balances_by_asset={"USD": 40.0},
required_by_asset={"USD": 75.0},
)
def test_pre_trade_validator_rejects_when_below_min_size() -> None:
validator = PreTradeValidator(min_order_size_by_asset={"USD": 50.0})
assert not validator.validate(
balances_by_asset={"USD": 100.0},
required_by_asset={"USD": 30.0},
)
def test_pre_trade_validator_rejects_invalid_min_order_size_config() -> None:
with pytest.raises(ValueError, match="minimum order size"):
PreTradeValidator(min_order_size_by_asset={"USD": 0.0})