31 lines
732 B
Python
31 lines
732 B
Python
from src.strategy.position_state_machine import (
|
|
PositionState,
|
|
StateTransitionInput,
|
|
promote_state,
|
|
)
|
|
|
|
|
|
def test_gap_jump_promotes_to_armed_directly() -> None:
|
|
state = promote_state(
|
|
PositionState.HOLDING,
|
|
StateTransitionInput(
|
|
unrealized_pnl_pct=4.0,
|
|
be_arm_pct=1.2,
|
|
arm_pct=2.8,
|
|
),
|
|
)
|
|
assert state == PositionState.ARMED
|
|
|
|
|
|
def test_exited_has_priority_over_promotion() -> None:
|
|
state = promote_state(
|
|
PositionState.HOLDING,
|
|
StateTransitionInput(
|
|
unrealized_pnl_pct=5.0,
|
|
be_arm_pct=1.2,
|
|
arm_pct=2.8,
|
|
hard_stop_hit=True,
|
|
),
|
|
)
|
|
assert state == PositionState.EXITED
|