| monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x12736e900>
|
|
|
| def test_time_review_fails_closed_to_hold_on_a_dead_consult(monkeypatch):
|
| """THE SAFETY ARGUMENT. There is no mechanical exit candidate on the table — nothing wanted this
|
| leg closed — so a hung or dead consult must leave the position untouched. At a 15-minute cadence
|
| the opposite posture would let a provider outage liquidate the book, which is this session's
|
| token-runaway wearing a costume that reaches money."""
|
| from rtrader.services import signal_sim_engine as se
|
|
|
| closed = []
|
|
|
| class _Decider:
|
| def decide_exit(self, *a, **k):
|
| raise RuntimeError("provider down")
|
|
|
| class _Leg:
|
| gen, direction, source, vehicle, entry_px = 1, "short", "rollover", "TZA", 40.0
|
|
|
| class _State:
|
| open_legs = [_Leg()]
|
| transitions = []
|
| direction = "short"
|
|
|
| class _Ctx:
|
| day = None
|
| def price_at(self, v, et): return 41.0
|
|
|
| class _Ev:
|
| et = "11:00:00"
|
| payload = {"gen": 1}
|
|
|
| monkeypatch.setattr(se, "_close_leg", lambda *a, **k: closed.append(1))
|
| > se._on_time_review(_State(), _Ev(), None, _Ctx(), object(), _Decider())
|
| ^^^^^^^^^^^^^^^^^^
|
| E AttributeError: module 'rtrader.services.signal_sim_engine' has no attribute '_on_time_review'
|
|
|
| tests/services/test_decision_layers_and_house_rule.py:321: AttributeError
|