Fix exchange minimum sizing for buys
This commit is contained in:
@@ -129,6 +129,35 @@ def test_paper_broker_raises_small_signal_to_exchange_min_notional(make_settings
|
||||
assert position.notional_usdt <= settings.max_position_usdt
|
||||
|
||||
|
||||
def test_paper_broker_rounds_small_order_up_to_exchange_qty_step(make_settings, tmp_path) -> None:
|
||||
settings = make_settings(
|
||||
tmp_path,
|
||||
min_position_usdt=1,
|
||||
max_position_usdt=20,
|
||||
max_symbol_exposure_usdt=20,
|
||||
max_total_exposure_usdt=80,
|
||||
max_open_positions=20,
|
||||
max_positions_per_symbol=20,
|
||||
max_entries_per_minute=0,
|
||||
)
|
||||
storage = Storage(settings.database_path)
|
||||
broker = PaperBroker(settings, storage)
|
||||
ticker = Ticker("HYPEUSDT", 39.6, 39.59, 39.61, 10_000_000, 100, 0)
|
||||
instrument = Instrument("HYPEUSDT", "HYPE", "USDT", "Trading", 0.001, 0.01, 0.01, 1)
|
||||
|
||||
position = broker.buy(
|
||||
Signal("HYPEUSDT", "BUY", 0.8, "small torch edge", {"position_notional_usdt": 1.05}),
|
||||
ticker,
|
||||
instrument,
|
||||
{"HYPEUSDT": 39.6},
|
||||
)
|
||||
|
||||
assert position is not None
|
||||
assert position.qty == 0.03
|
||||
assert position.notional_usdt >= instrument.min_notional_value
|
||||
assert position.notional_usdt <= settings.max_position_usdt
|
||||
|
||||
|
||||
def test_paper_broker_respects_adaptive_exposure_target(make_settings, tmp_path) -> None:
|
||||
settings = make_settings(
|
||||
tmp_path,
|
||||
|
||||
Reference in New Issue
Block a user