Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016DvdRZkyCy9NJpHYDdPqmS
29 lines
864 B
Python
29 lines
864 B
Python
"""Pure tests for bracket level math (long + short). No network."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
from execution.broker import bracket_levels
|
|
|
|
|
|
def test_long_levels_ordered():
|
|
side, entry, stop, take = bracket_levels(100.0, 0.07, 0.15, "long")
|
|
assert side == "buy"
|
|
assert stop < entry < take
|
|
assert (stop, take) == (93.0, 115.0)
|
|
|
|
|
|
def test_short_levels_inverted_and_ordered():
|
|
side, entry, stop, take = bracket_levels(100.0, 0.07, 0.15, "short")
|
|
assert side == "sell"
|
|
# short: profit below (take), loss above (stop)
|
|
assert take < entry < stop
|
|
assert (take, stop) == (85.0, 107.0)
|
|
|
|
|
|
def test_tiny_take_does_not_invert_long():
|
|
# adaptive buffer keeps entry inside the band even when take_pct is small
|
|
side, entry, stop, take = bracket_levels(100.0, 0.10, 0.03, "long")
|
|
assert stop < entry < take
|