Add risk management features: implement loss limits, trade limits, and pre-trade validation; update settings and tests
This commit is contained in:
@@ -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})
|
||||
Reference in New Issue
Block a user