| tests/services/test_tide_etf_reasoning.py:654: in test_reason_event_bad_decision_coerced_no_trade
|
| out = TR.reason_tide_event(date(2026, 7, 6), ev, _timeline())
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ev = {'direction': 'up', 'et': '10:00:00', 'kind': 'rollover_up', 'via': 'mt3'}
|
| monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x1256edd90>
|
| rtrader/services/tide_etf_reasoning.py:4535: in reason_tide_event
|
| prefix = _morning_prefix(day, str(event.get("et") or ""))
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| attempts = 3
|
| conf = None
|
| day = datetime.date(2026, 7, 6)
|
| entry_facts = None
|
| event = {'direction': 'up', 'et': '10:00:00', 'kind': 'rollover_up', 'via': 'mt3'}
|
| max_tokens = 5000
|
| model = None
|
| struct_ctx = None
|
| system_prompt = None
|
| timeline = {'day': '2026-07-06', 'fake_up_peak': {'et': '11:03', 'mean_pct': 0.813}, 'gap_down': (False, None, None), 'gap_up': (True, '09:30:00', '11:30:00'), ...}
|
| rtrader/services/tide_etf_reasoning.py:4315: in _morning_prefix
|
| return morning_prefix_for_consult(day, event_et)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| day = datetime.date(2026, 7, 6)
|
| event_et = '10:00:00'
|
| morning_prefix_for_consult = <function morning_prefix_for_consult at 0x11f7b6020>
|
| rtrader/services/morning_prior_day.py:336: in morning_prefix_for_consult
|
| return morning_prior_day_block(day, db_factory=db_factory) + "\n\n"
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| day = datetime.date(2026, 7, 6)
|
| db_factory = None
|
| et = '10:00'
|
| event_et = '10:00:00'
|
| rtrader/services/morning_prior_day.py:278: in morning_prior_day_block
|
| late_turns = load_late_turns(d1)
|
| ^^^^^^^^^^^^^^^^^^^
|
| d1 = datetime.date(2026, 7, 2)
|
| d1_iso = '2026-07-02'
|
| day = datetime.date(2026, 7, 6)
|
| db_factory = None
|
| late_turns = None
|
| ledger_rows = None
|
| profile = {'blocks': [BlockStory(direction='DOWN', start_et='09:30', end_et='09:42', duration_min=12, size=7.95, share_of_day=0....de. One side never got answered — the band goes home loaded on the TNA-below-crowd side.', 'close_stretch': 3.037, ...}
|
| rtrader/services/morning_prior_day.py:82: in load_late_turns
|
| for o in compute_rollover_onsets(day) or []:
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| after_et = '14:00'
|
| compute_rollover_onsets = <function compute_rollover_onsets at 0x11f623560>
|
| day = datetime.date(2026, 7, 2)
|
| out = []
|
| rtrader/services/market_turn_algo_sim.py:459: in compute_rollover_onsets
|
| km_up = _km60_up(s, anchor, i, km_win=km_win, _cache=_picks_cache)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| _gu_gate = True
|
| _km_min_bars = 30
|
| _picks_cache = {0: None, 1: None, 2: None, 3: None, ...}
|
| _trs = <module 'rtrader.services.tide_rollover_store' from '/Users/cao/robinhood-pm-91f24405f0d7/rtrader/services/tide_rollover_store.py'>
|
| anchor = datetime.datetime(2026, 7, 2, 9, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York'))
|
| day = datetime.date(2026, 7, 2)
|
| db_factory = None
|
| direction = 'down'
|
| dn = False
|
| end = None
|
| f = {'direction': 'up', 'fire_et': '18:45:46', 'fire_ts': datetime.datetime(2026, 7, 2, 22, 45, 46, 342000, tzinfo=datetime.timezone.utc), 'min_ticks': 3, ...}
|
| fires = {'down': False, 'up': False}
|
| gap_down_gate = True
|
| gap_fired = True
|
| gap_hi = datetime.datetime(2026, 7, 2, 11, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York'))
|
| gap_lo = datetime.datetime(2026, 7, 2, 9, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York'))
|
| gap_up_gate = True
|
| gapdn_fired = False
|
| gapdn_hi = None
|
| gapdn_lo = None
|
| i = 36
|
| in_gap = True
|
| in_gapdn = False
|
| km_dn = False
|
| km_up = False
|
| km_win = None
|
| mt3_dn_hit = False
|
| mt3_down_min = {datetime.datetime(2026, 7, 2, 10, 1, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), datetime.datetime(2026, 7, 2,...(key='America/New_York')), datetime.datetime(2026, 7, 2, 11, 2, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), ...}
|
| mt3_up_hit = False
|
| mt3_up_min = set()
|
| out = [{'direction': 'down', 'down_vol': 250002957018.0, 'fire_et': '10:01:00', 'fire_ts': datetime.datetime(2026, 7, 2, 14, 1, tzinfo=datetime.timezone.utc), ...}]
|
| prev = {'down': False, 'up': False}
|
| regime_gap_up = False
|
| s = _Series(T=[datetime.datetime(2026, 7, 2, 9, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), datetime.datetime(2...685.0, 629945847137.0, 628191442895.0, 625621870356.0, 621362542811.0, 619078640240.0, 613987424600.0, 616034921743.0])
|
| t = datetime.datetime(2026, 7, 2, 10, 6, tzinfo=zoneinfo.ZoneInfo(key='America/New_York'))
|
| tmin = datetime.datetime(2026, 7, 2, 10, 5, tzinfo=zoneinfo.ZoneInfo(key='America/New_York'))
|
| up = False
|
| via = {'down': 'mt3-accel', 'up': 'mt3-accel'}
|
| rtrader/services/market_turn_algo_sim.py:223: in _km60_up
|
| picks = _km60_picks(s, anchor_ts, i, km_win=km_win, _cache=_cache)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| _cache = {0: None, 1: None, 2: None, 3: None, ...}
|
| anchor_ts = datetime.datetime(2026, 7, 2, 9, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York'))
|
| i = 36
|
| km_win = None
|
| s = _Series(T=[datetime.datetime(2026, 7, 2, 9, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), datetime.datetime(2...685.0, 629945847137.0, 628191442895.0, 625621870356.0, 621362542811.0, 619078640240.0, 613987424600.0, 616034921743.0])
|
| rtrader/services/market_turn_algo_sim.py:204: in _km60_picks
|
| km = KMeans(n_clusters=3, n_init=4, random_state=0).fit(vv)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| KMeans = <class 'sklearn.cluster._kmeans.KMeans'>
|
| _cache = {0: None, 1: None, 2: None, 3: None, ...}
|
| anchor_ts = datetime.datetime(2026, 7, 2, 9, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York'))
|
| i = 36
|
| idx = [0, 1, 2, 3, 4, 5, ...]
|
| km_win = None
|
| lo_t = datetime.datetime(2026, 7, 2, 9, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York'))
|
| s = _Series(T=[datetime.datetime(2026, 7, 2, 9, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), datetime.datetime(2...685.0, 629945847137.0, 628191442895.0, 625621870356.0, 621362542811.0, 619078640240.0, 613987424600.0, 616034921743.0])
|
| vv = array([[1.01190654e+12],
|
| [1.01223976e+12],
|
| [1.00849544e+12],
|
| [1.01282098e+12],
|
| [1.01186873... [1.01439202e+12],
|
| [1.01379674e+12],
|
| [1.01416832e+12],
|
| [1.01403242e+12],
|
| [1.01201824e+12]])
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/sklearn/base.py:1365: in wrapper
|
| return fit_method(estimator, *args, **kwargs)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| args = (array([[1.01190654e+12],
|
| [1.01223976e+12],
|
| [1.00849544e+12],
|
| [1.01282098e+12],
|
| [1.0118687...1.01439202e+12],
|
| [1.01379674e+12],
|
| [1.01416832e+12],
|
| [1.01403242e+12],
|
| [1.01201824e+12]]),)
|
| estimator = KMeans(n_clusters=3, n_init=4, random_state=0)
|
| fit_method = <function KMeans.fit at 0x119fa47c0>
|
| global_skip_validation = False
|
| kwargs = {}
|
| partial_fit_and_fitted = False
|
| prefer_skip_nested_validation = True
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/sklearn/cluster/_kmeans.py:1510: in fit
|
| labels, inertia, centers, n_iter_ = kmeans_single(
|
| X = array([[-1.26780769e+09],
|
| [-9.34587541e+08],
|
| [-4.67890271e+09],
|
| [-3.53365130e+08],
|
| [-1.305...21767304e+09],
|
| [ 6.22393848e+08],
|
| [ 9.93973010e+08],
|
| [ 8.58076565e+08],
|
| [-1.15610387e+09]])
|
| X_mean = array([1.01317434e+12])
|
| best_centers = array([[-8.46664155e+08],
|
| [ 6.81979858e+08],
|
| [-4.67890271e+09]])
|
| best_inertia = 7.207561672318747e+18
|
| best_labels = array([0, 0, 2, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1,
|
| 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0], dtype=int32)
|
| best_n_iter = 5
|
| centers = array([[ 8.61204081e+08],
|
| [-1.97613869e+09],
|
| [-1.98831231e+08]])
|
| centers_init = array([[-4.67890271e+09],
|
| [ 7.13490929e+08],
|
| [-7.86992695e+08]])
|
| i = 2
|
| inertia = 1.2523184073298803e+19
|
| init = 'k-means++'
|
| init_is_array_like = False
|
| kmeans_single = <function _kmeans_single_lloyd at 0x119f73920>
|
| labels = array([1, 2, 1, 2, 1, 0, 2, 0, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, 1, 2,
|
| 0, 0, 0, 2, 2, 0, 1, 2, 2, 2, 0, 0, 0, 0, 1], dtype=int32)
|
| n_iter_ = 7
|
| random_state = RandomState(MT19937) at 0x125B9BA40
|
| sample_weight = array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
|
| 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
|
| 1., 1., 1.])
|
| self = KMeans(n_clusters=3, n_init=4, random_state=0)
|
| x_squared_norms = array([1.60733634e+18, 8.73453872e+17, 2.18921306e+19, 1.24866915e+17,
|
| 1.70463649e+18, 6.08362786e+17, 9.307720...744e+17, 2.70738284e+17,
|
| 1.48272764e+18, 3.87374102e+17, 9.87982344e+17, 7.36295391e+17,
|
| 1.33657616e+18])
|
| y = None
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/sklearn/utils/parallel.py:173: in wrapper
|
| return func(*args, **kwargs)
|
| ^^^^^^^^^^^^^^^^^^^^^
|
| args = (array([[-1.26780769e+09],
|
| [-9.34587541e+08],
|
| [-4.67890271e+09],
|
| [-3.53365130e+08],
|
| [-1.30...., 1., 1., 1., 1.,
|
| 1., 1., 1.]), array([[-4.67890271e+09],
|
| [ 7.13490929e+08],
|
| [-7.86992695e+08]]))
|
| controller = <threadpoolctl.ThreadpoolController object at 0x125e88770>
|
| func = <function _kmeans_single_lloyd at 0x119f73880>
|
| kwargs = {'max_iter': 300, 'n_threads': 8, 'tol': np.float64(132745499570201.9), 'verbose': 0}
|
| limits = 1
|
| user_api = 'blas'
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/sklearn/cluster/_kmeans.py:700: in _kmeans_single_lloyd
|
| lloyd_iter(
|
| X = array([[-1.26780769e+09],
|
| [-9.34587541e+08],
|
| [-4.67890271e+09],
|
| [-3.53365130e+08],
|
| [-1.305...21767304e+09],
|
| [ 6.22393848e+08],
|
| [ 9.93973010e+08],
|
| [ 8.58076565e+08],
|
| [-1.15610387e+09]])
|
| _inertia = <cyfunction _inertia_dense at 0x119f98450>
|
| center_shift = array([ 0. , 28303394.20129859, 60407489.69523799])
|
| center_shift_tot = np.float64(4450146934594387.5)
|
| centers = array([[-4.67890271e+09],
|
| [ 7.13490929e+08],
|
| [-7.86992695e+08]])
|
| centers_init = array([[-4.67890271e+09],
|
| [ 7.13490929e+08],
|
| [-7.86992695e+08]])
|
| centers_new = array([[-4.67890271e+09],
|
| [ 1.56855367e+10],
|
| [-1.10066340e+10]])
|
| i = 2
|
| labels = array([2, 2, 0, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 2, 1,
|
| 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 1, 1, 1, 1, 2], dtype=int32)
|
| labels_old = array([2, 2, 0, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 2, 2,
|
| 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 1, 1, 1, 1, 2], dtype=int32)
|
| lloyd_iter = <cyfunction lloyd_iter_chunked_dense at 0x119f99970>
|
| max_iter = 300
|
| n_clusters = 3
|
| n_threads = 8
|
| sample_weight = array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
|
| 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
|
| 1., 1., 1.])
|
| strict_convergence = False
|
| tol = np.float64(132745499570201.9)
|
| verbose = 0
|
| weight_in_clusters = array([ 1., 23., 13.])
|
| sklearn/cluster/_k_means_lloyd.pyx:164: in sklearn.cluster._k_means_lloyd.lloyd_iter_chunked_dense
|
| ???
|
| sklearn/cluster/_k_means_common.pyx:284: in sklearn.cluster._k_means_common._average_centers
|
| ???
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:1341: in argmax
|
| return _wrapfunc(a, 'argmax', axis=axis, out=out, **kwds)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| a = <MemoryView of 'ndarray' at 0x1257e2a80>
|
| axis = None
|
| keepdims = <no value>
|
| kwds = {}
|
| out = None
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:54: in _wrapfunc
|
| return _wrapit(obj, method, *args, **kwds)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| args = ()
|
| bound = None
|
| kwds = {'axis': None, 'out': None}
|
| method = 'argmax'
|
| obj = <MemoryView of 'ndarray' at 0x1257e2a80>
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:46: in _wrapit
|
| result = getattr(arr, method)(*args, **kwds)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| E Failed: Timeout (>60.0s) from pytest-timeout.
|
| args = ()
|
| arr = array([ 1., 23., 13.])
|
| conv = <numpy._core._multiarray_umath._array_converter object at 0x126102190>
|
| kwds = {'axis': None, 'out': None}
|
| method = 'argmax'
|
| obj = <MemoryView of 'ndarray' at 0x1257e2a80>
|