tests/test_c1_c2_c3_computation.py:47: in test_c1_c2_c3_computation_matches_chart_rendering chart_path = cmf_service.render_chart( cmf_service = symbol = 'ETHD' test_date = datetime.date(2025, 8, 1) rtrader/services/cmf_service.py:901: in render_chart analysis = analyse_volume_trend_for_day( _ = [5.62, 5.63, 5.57, 5.59, 5.69, 5.69, ...] _resolve_trading_window = ._resolve_trading_window at 0x12c993740> analyse_volume_trend_for_day = analysis = VolumeTrendAnalysis(session_day=datetime.date(2025, 7, 31), times=[datetime.datetime(2025, 7, 31, 13, 30, tzinfo=TzInf...'daily_rsi_value': None, 'daily_rsi_condition': False, 'daily_rsi_detail': 'daily_rsi14=n/a', 'is_trending_up': False}) analysis_by_day = {datetime.date(2025, 7, 30): VolumeTrendAnalysis(session_day=datetime.date(2025, 7, 30), times=[datetime.datetime(2025...daily_rsi_value': None, 'daily_rsi_condition': False, 'daily_rsi_detail': 'daily_rsi14=n/a', 'is_trending_up': False})} analysis_time_to_close = {datetime.datetime(2025, 7, 31, 13, 30, tzinfo=TzInfo(0)): 5.62, datetime.datetime(2025, 7, 31, 13, 45, tzinfo=TzInfo(...tetime(2025, 7, 31, 14, 1, tzinfo=TzInfo(0)): 5.57, datetime.datetime(2025, 7, 31, 14, 2, tzinfo=TzInfo(0)): 5.59, ...} analysis_time_to_volume = {datetime.datetime(2025, 7, 31, 13, 30, tzinfo=TzInfo(0)): 300.0, datetime.datetime(2025, 7, 31, 13, 45, tzinfo=TzInfo...time(2025, 7, 31, 14, 1, tzinfo=TzInfo(0)): 100.0, datetime.datetime(2025, 7, 31, 14, 2, tzinfo=TzInfo(0)): 510.0, ...} bars = [{'close': 5.74, 'high': 5.74, 'low': 5.74, 'open': 5.74, ...}, {'close': 5.67, 'high': 5.67, 'low': 5.67, 'open': 5.6...': 5.7, 'high': 5.7, 'low': 5.7, 'open': 5.7, ...}, {'close': 5.71, 'high': 5.71, 'low': 5.71, 'open': 5.71, ...}, ...] bucket_bars_by_session = chart_end = datetime.datetime(2025, 8, 1, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) chart_start = datetime.datetime(2025, 8, 1, 9, 15, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) close_value = 5.825 cmf_float = 0.2652973898160034 cmf_map = {datetime.datetime(2025, 7, 31, 9, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')): 0.0, datetime.datetime(2025,...ca/New_York')): 0.0, datetime.datetime(2025, 7, 31, 10, 2, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')): 0.0, ...} cmf_val = 0.2652973898160034 cmf_value = 0.2652973898160034 day_buckets = {datetime.date(2025, 7, 30): [(datetime.datetime(2025, 7, 30, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='America/New_York'))...time(2025, 7, 31, 10, 32, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), 5.69, -0.06487889273356401, 1314.0), ...]} day_cmf_values = [0.0, 0.0, 0.0, 0.0, -0.09063444108761329, -0.06487889273356401, ...] days = 1 end = datetime.datetime(2025, 8, 1, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) fetch_end = datetime.datetime(2025, 8, 1, 16, 5, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) full_cmf_timestamps = [datetime.datetime(2025, 7, 31, 13, 30, tzinfo=TzInfo(0)), datetime.datetime(2025, 7, 31, 13, 45, tzinfo=TzInfo(0)), d...atetime.datetime(2025, 7, 31, 14, 28, tzinfo=TzInfo(0)), datetime.datetime(2025, 7, 31, 14, 32, tzinfo=TzInfo(0)), ...] full_cmf_values = [0.0, 0.0, 0.0, 0.0, -0.09063444108761329, -0.06487889273356401, ...] full_market_hours_cmf_for_chart = {datetime.datetime(2025, 7, 31, 9, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')): 0.0, datetime.datetime(2025,...ca/New_York')): 0.0, datetime.datetime(2025, 7, 31, 10, 2, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')): 0.0, ...} full_market_hours_cmf_times_for_chart = [datetime.datetime(2025, 7, 31, 9, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), datetime.datetime(2025, 7, 3...ey='America/New_York')), datetime.datetime(2025, 7, 31, 10, 32, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), ...] grouped_records = defaultdict(, {datetime.date(2025, 7, 30): [{'symbol': 'ETHD', 'timestamp': datetime.datetime(2025, 7, 3...Info(0)), 'open': 6.51, 'high': 6.51, 'low': 6.51, 'close': 6.51, 'volume': 133.0, 'vwap': 6.51, 'trade_count': 1.0}]}) in_hours_records = [{'close': 6.1, 'high': 6.1, 'low': 6.1, 'open': 6.1, ...}, {'close': 6.12, 'high': 6.12, 'low': 6.12, 'open': 6.12, .....21, 'high': 6.21, 'low': 6.21, 'open': 6.21, ...}, {'close': 6.21, 'high': 6.21, 'low': 6.21, 'open': 6.21, ...}, ...] indicator_annotations = {} output_path = None points = [(datetime.datetime(2025, 7, 31, 9, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), 5.62, 0.0, 300.0), (datetim...etime(2025, 7, 31, 10, 32, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), 5.69, -0.06487889273356401, 1314.0), ...] record = {'close': 5.825, 'high': 5.825, 'low': 5.825, 'open': 5.825, ...} records = [{'close': 6.11, 'high': 6.11, 'low': 6.11, 'open': 6.11, ...}, {'close': 6.1, 'high': 6.1, 'low': 6.1, 'open': 6.1, .....08, 'high': 6.08, 'low': 6.08, 'open': 6.08, ...}, {'close': 6.12, 'high': 6.12, 'low': 6.12, 'open': 6.12, ...}, ...] rsi_override = None self = session_day = datetime.date(2025, 8, 1) start = datetime.datetime(2025, 7, 30, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) symbol = 'ETHD' ts = datetime.datetime(2025, 7, 31, 19, 59, tzinfo=TzInfo(0)) ts_ny = datetime.datetime(2025, 7, 31, 15, 59, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) updated_day_cmf = [0.0, 0.0, 0.0, 0.0, -0.09063444108761329, -0.06487889273356401, ...] volume_value = 2100.0 window_minutes = 30 rtrader/indicators/volume_trend.py:546: in analyse_volume_trend_for_day ) = service._analyze_volume_clusters_for_day( buyer_volume = 66.5 buyer_volumes = [82.0, 50.0, 280.0081466395112, 900.0, 253.0, 900.0, ...] clone = {'close': 6.55, 'high': 6.55, 'low': 6.55, 'open': 6.55, ...} close_value = 6.55 closes = [6.1, 6.12, 6.14, 6.16, 6.21, 6.21, ...] cmf_fetcher = . at 0x12c9927a0> cmf_provider = None day_cmf = [0.0, 0.0, 0.6024096385542169, 0.16233766233766234, 0.13468013468013468, 0.08385744234800839, ...] day_records = [{'close': 6.1, 'high': 6.1, 'low': 6.1, 'open': 6.1, ...}, {'close': 6.12, 'high': 6.12, 'low': 6.12, 'open': 6.12, .....21, 'high': 6.21, 'low': 6.21, 'open': 6.21, ...}, {'close': 6.21, 'high': 6.21, 'low': 6.21, 'open': 6.21, ...}, ...] high_value = 6.55 highs = [6.1, 6.12, 6.14, 6.16, 6.21, 6.21, ...] low_value = 6.55 lows = [6.1, 6.12, 6.13, 6.16, 6.21, 6.21, ...] normalized_records = [{'close': 6.1, 'high': 6.1, 'low': 6.1, 'open': 6.1, ...}, {'close': 6.12, 'high': 6.12, 'low': 6.12, 'open': 6.12, .....21, 'high': 6.21, 'low': 6.21, 'open': 6.21, ...}, {'close': 6.21, 'high': 6.21, 'low': 6.21, 'open': 6.21, ...}, ...] open_session_minutes = 45 open_value = 6.55 opens = [6.1, 6.12, 6.13, 6.16, 6.21, 6.21, ...] raw_cmf = [0.0, 0.0, 0.6024096385542169, 0.16233766233766234, 0.13468013468013468, 0.08385744234800839, ...] record = {'close': 6.55, 'high': 6.55, 'low': 6.55, 'open': 6.55, ...} seller_volume = 66.5 seller_volumes = [82.0, 50.0, 119.99185336048879, 900.0, 253.0, 900.0, ...] service = session_day = datetime.date(2025, 8, 1) symbol = 'ETHD' symbol_key = 'ETHD' times = [datetime.datetime(2025, 8, 1, 13, 30, tzinfo=TzInfo(0)), datetime.datetime(2025, 8, 1, 13, 33, tzinfo=TzInfo(0)), dat... datetime.datetime(2025, 8, 1, 13, 46, tzinfo=TzInfo(0)), datetime.datetime(2025, 8, 1, 13, 47, tzinfo=TzInfo(0)), ...] timestamp = datetime.datetime(2025, 8, 1, 20, 0, tzinfo=TzInfo(0)) volumes = [164.0, 100.0, 400.0, 1800.0, 506.0, 1800.0, ...] window_minutes = 30 rtrader/services/cmf_service.py:5236: in _analyze_volume_clusters_for_day cmf_30d_2h_value = self._compute_multi_timeframe_cmf( DM_spot = KMeans = _base_diagnostics = ._base_diagnostics at 0x12cc889a0> _direction_label = ._direction_label at 0x12cc885e0> analysis_index_set = {16, 17, 18, 19, 20, 21, ...} analysis_indices = [16, 17, 18, 19, 20, 21, ...] analysis_volumes = array([[ 200.], [ 200.], [1600.], [3385.], [ 200.], [2202.], [ 100.], ...100.], [ 300.], [ 200.], [ 400.], [ 200.], [ 500.], [ 200.], [ 200.]]) avg_cluster_price = 6.303333333333334 avg_price = 6.315531914893618 baseline = 2920.0 cache_key = ('ETHD', '2025-08-01', '30d/2H') cached_entry = None candidate_idx = np.int64(59) candidate_indices = [19, 40, 66] candidate_pos = 59 candidate_value = -0.4517795637198622 cluster_centers = array([ 248.90909091, 1995.6 , 3192.5 ]) cluster_count = 3 cluster_labels = array([0, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32) cluster_prices = [6.25, 6.28, 6.38] cluster_prices_after_cmf_start = [6.25, 6.28, 6.38] cluster_volumes = [3385.0, 3000.0, 2375.0] cmf_30d_2h_condition = False cmf_30d_2h_detail = 'cmf_30d_2h=n/a' cmf_30d_2h_value = None cmf_array = array([[ 0.36531848], [ 0.37393133], [ 0.23938059], [ 0.02666937], [ 0.02662078], [...534371], [-0.10304391], [-0.1027491 ], [-0.03863017], [-0.01493068], [-0.01529312]]) cmf_centers = array([-0.41963634, -0.06750618, 0.32621013]) cmf_cluster_indices = [34, 40, 58] cmf_direction = cmf_float_series = [0.0, 0.0, 0.6024096385542169, 0.16233766233766234, 0.13468013468013468, 0.08385744234800839, ...] cmf_idx = 93 cmf_indices = (16, 17, 18, 19, 20, 21, ...) cmf_kmeans = KMeans(n_clusters=3, n_init=10, random_state=42) cmf_labels = array([2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int32) cmf_numeric = (0.3653184757188059, 0.37393133396661693, 0.2393805851389399, 0.02666937078537748, 0.026620780403866593, -0.07666620923105073, ...) cmf_start_index = 16 cmf_value = -0.16065521410808067 day_cmf = [0.0, 0.0, 0.6024096385542169, 0.16233766233766234, 0.13468013468013468, 0.08385744234800839, ...] day_prices = [6.1, 6.12, 6.14, 6.16, 6.21, 6.21, ...] day_volumes = [164.0, 100.0, 400.0, 1800.0, 506.0, 1800.0, ...] diagnostics = {'checklist_items': [], 'checklist_table': '', 'cluster_volumes': [3385.0, 3000.0, 2375.0], 'cmf_cluster_indices': [34, 40, 58], ...} diff_ratio = 0.3458904109589041 end_candidate = datetime.datetime(2025, 8, 1, 20, 0, tzinfo=TzInfo(0)) end_time = datetime.datetime(2025, 8, 1, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) first_volume = 3385.0 high_volume_label = 2 idx = 93 idx_segment = array([50, 51, 52, 53, 54, 55, 56, 57, 58, 59]) index_array = array([30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59]) index_segments = [array([30, 31, 32, 33, 34, 35, 36, 37, 38, 39]), array([40, 41, 42, 43, 44, 45, 46, 47, 48, 49]), array([50, 51, 52, 53, 54, 55, 56, 57, 58, 59])] is_trending_up = False kmeans = KMeans(n_clusters=3, n_init=10, random_state=42) last_idx = 93 last_price_value = 6.55 last_volume = 2375.0 localized_times = [datetime.datetime(2025, 8, 1, 9, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), datetime.datetime(2025, 8, 1,...(key='America/New_York')), datetime.datetime(2025, 8, 1, 9, 47, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), ...] marker_indices = [34, 40, 58] max_volume = 3385.0 mean_volume = 2920.0 min_cluster_label = 0 min_volume = 2375.0 now_ny = datetime.datetime(2026, 6, 27, 7, 33, 45, 364746, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) np = numeric_value = -0.015293118096856415 position_in_range = 0.5470085470085475 price_direction = price_entry = 6.55 price_max_from_start = 6.48 price_min_from_start = 6.09 price_range_from_start = 0.39000000000000057 price_value = 6.55 price_within_avg_buffer = True prices_from_cmf_start = [6.31, 6.375, 6.33, 6.25, 6.25, 6.2, ...] regular_session_indices = [0, 1, 2, 3, 4, 5, ...] segment_means = [-0.5294376260573674, -0.37217765191317154, -0.3572937354030752] selected_cluster_index = None selected_cluster_price = None selected_cluster_volume = None selected_pairs = [(30, -0.357476486019579), (31, -0.3583247819394561), (32, -0.5207975986277873), (33, -0.5997530864197531), (34, -0.7213215859030837), (35, -0.6178867924528302), ...] self = session_day = datetime.date(2025, 8, 1) session_day_str = '2025-08-01' session_day_value = datetime.date(2025, 8, 1) session_start_dt = datetime.datetime(2025, 8, 1, 9, 30, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) simple_direction_down = True simple_direction_up = False sorted_indices = [19, 40, 66] sorted_pairs = [(19, 3385.0), (40, 3000.0)] symbol = 'ETHD' time_span_hours = 4.3 times = [datetime.datetime(2025, 8, 1, 13, 30, tzinfo=TzInfo(0)), datetime.datetime(2025, 8, 1, 13, 33, tzinfo=TzInfo(0)), dat... datetime.datetime(2025, 8, 1, 13, 46, tzinfo=TzInfo(0)), datetime.datetime(2025, 8, 1, 13, 47, tzinfo=TzInfo(0)), ...] top_indices = [19, 40, 66] total_count = 94 total_points = 94 total_price = 593.6600000000001 trough_index = 58 trough_value = -0.4517795637198622 valid_cmf_entries = [(16, 0.3653184757188059), (17, 0.37393133396661693), (18, 0.2393805851389399), (19, 0.02666937078537748), (20, 0.026620780403866593), (21, -0.07666620923105073), ...] value_array = array([-0.35747649, -0.35832478, -0.5207976 , -0.59975309, -0.72132159, -0.61788679, -0.62258555, -0.64268199, ...271871, -0.29592451, -0.3012159 , -0.29886456, -0.37016575, -0.39037698, -0.37637494, -0.45177956, -0.42153187]) value_segment = array([-0.33398458, -0.33271871, -0.29592451, -0.3012159 , -0.29886456, -0.37016575, -0.39037698, -0.37637494, -0.45177956, -0.42153187]) value_segments = [array([-0.35747649, -0.35832478, -0.5207976 , -0.59975309, -0.72132159, -0.61788679, -0.62258555, -0.64268199,...71871, -0.29592451, -0.3012159 , -0.29886456, -0.37016575, -0.39037698, -0.37637494, -0.45177956, -0.42153187])] volume_direction = window_minutes = 30 rtrader/services/cmf_service.py:2991: in _compute_multi_timeframe_cmf bars = self._fetch_bars(symbol, start_ny, end_ny, timeframe=timeframe or self.timeframe) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ buffer_days = 3 end = datetime.datetime(2025, 8, 1, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) end_ny = datetime.datetime(2025, 8, 1, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) lookback = 30 lookback_days = 30 self = start_ny = datetime.datetime(2025, 6, 29, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) symbol = 'ETHD' timeframe = '2H' rtrader/services/cmf_service.py:5992: in _fetch_bars result = list(source) ^^^^^^^^^^^^ _cache_key = ('ETHD', '2025-06-29 16:00', '2025-08-01 16:00', '2H') best_result = [] cached = None end = datetime.datetime(2025, 8, 1, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) end_ny = datetime.datetime(2025, 8, 1, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) feed = 'iex' feeds_to_try = ['iex', 'sip'] self = source = start = datetime.datetime(2025, 6, 29, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) start_ny = datetime.datetime(2025, 6, 29, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')) symbol = 'ETHD' tf = '2H' tf_lower = '2h' timeframe = '2H' use_fmp = False rtrader/replay_framework/sources.py:375: in __iter__ for bar in self._fetch(): ^^^^^^^^^^^^^ self = rtrader/replay_framework/sources.py:211: in _fetch response = client.get_stock_bars(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ attempt = 0 client = get_alpaca_key_manager = key_manager = last_error = None max_retries = 3 request = { 'adjustment': None, 'asof': None, 'currency': None, 'end': datetime.datetime(2025, 8, 1, 20, 0), '... 29, 20, 0), 'symbol_or_symbols': 'ETHD', 'timeframe': } request_kwargs = {'end': datetime.datetime(2025, 8, 1, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), 'feed': 'iex', 'start'...etime.datetime(2025, 6, 29, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), 'symbol_or_symbols': 'ETHD', ...} response = None self = /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/site-packages/alpaca/data/historical/stock.py:87: in get_stock_bars raw_bars = self._get_marketdata( request_params = { 'adjustment': None, 'asof': None, 'currency': None, 'end': datetime.datetime(2025, 8, 1, 20, 0), '... 29, 20, 0), 'symbol_or_symbols': 'ETHD', 'timeframe': } self = /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/site-packages/alpaca/common/rest.py:393: in _get_marketdata response = self.get(path=path, data=params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ actual_limit = 10000 d = defaultdict(, {}) limit = None no_sub_key = False page_limit = 10000 page_size = 10000 page_token = None params = {'end': '2025-08-01T20:00:00+00:00', 'feed': , 'limit': 10000, 'page_token': None, ...} path = '/stocks/bars' self = total_items = 0 /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/site-packages/alpaca/common/rest.py:225: in get return self._request("GET", path, data, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ data = {'end': '2025-08-01T20:00:00+00:00', 'feed': , 'limit': 10000, 'page_token': None, ...} kwargs = {} path = '/stocks/bars' self = /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/site-packages/alpaca/common/rest.py:131: in _request return self._one_request(method, url, opts, retry) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ api_version = None base_url = data = {'end': '2025-08-01T20:00:00+00:00', 'feed': , 'limit': 10000, 'page_token': None, ...} headers = {'APCA-API-KEY-ID': 'AKPSRCFPYXA451NUGGEO', 'APCA-API-SECRET-KEY': 'xlXam2VrFow35mZzii8tKpf5gnYLq4EjSGWmtZO7', 'User-Agent': 'APCA-PY/0.43.2'} method = 'GET' opts = {'allow_redirects': False, 'headers': {'APCA-API-KEY-ID': 'AKPSRCFPYXA451NUGGEO', 'APCA-API-SECRET-KEY': 'xlXam2VrFow3...'params': {'end': '2025-08-01T20:00:00+00:00', 'feed': , 'limit': 10000, 'page_token': None, ...}} path = '/stocks/bars' retry = 3 self = url = 'https://data.alpaca.markets/v2/stocks/bars' version = 'v2' /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/site-packages/alpaca/common/rest.py:195: in _one_request response = self._session.request(method, url, **opts) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method = 'GET' opts = {'allow_redirects': False, 'headers': {'APCA-API-KEY-ID': 'AKPSRCFPYXA451NUGGEO', 'APCA-API-SECRET-KEY': 'xlXam2VrFow3...'params': {'end': '2025-08-01T20:00:00+00:00', 'feed': , 'limit': 10000, 'page_token': None, ...}} retry = 3 self = url = 'https://data.alpaca.markets/v2/stocks/bars' /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/site-packages/requests/sessions.py:592: in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ allow_redirects = False auth = None cert = None cookies = None data = None files = None headers = {'APCA-API-KEY-ID': 'AKPSRCFPYXA451NUGGEO', 'APCA-API-SECRET-KEY': 'xlXam2VrFow35mZzii8tKpf5gnYLq4EjSGWmtZO7', 'User-Agent': 'APCA-PY/0.43.2'} hooks = None json = None method = 'GET' params = {'end': '2025-08-01T20:00:00+00:00', 'feed': , 'limit': 10000, 'page_token': None, ...} prep = proxies = {} req = self = send_kwargs = {'allow_redirects': False, 'cert': None, 'proxies': OrderedDict(), 'stream': False, ...} settings = {'cert': None, 'proxies': OrderedDict(), 'stream': False, 'verify': True} stream = None timeout = None url = 'https://data.alpaca.markets/v2/stocks/bars' verify = None /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/site-packages/requests/sessions.py:749: in send r.content adapter = allow_redirects = False elapsed = 0.2761521339416504 history = [] hooks = {'response': []} kwargs = {'cert': None, 'proxies': OrderedDict(), 'stream': False, 'timeout': None, ...} r = request = self = start = 1782560025.365483 stream = False /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/site-packages/requests/models.py:904: in content self._content = b"".join(self.iter_content(CONTENT_CHUNK_SIZE)) or b"" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ self = /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/site-packages/requests/models.py:822: in generate yield from self.raw.stream(chunk_size, decode_content=True) chunk_size = 10240 self = /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/site-packages/urllib3/response.py:1250: in stream yield from self.read_chunked(amt, decode_content=decode_content) amt = 10240 decode_content = True self = /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/site-packages/urllib3/response.py:1418: in read_chunked self._update_chunk_length() amt = 10240 chunk = b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03l\xd2=N\xc40\x10\x05\xe0\xbbL\x9dD3\xb6g\xfcS\x83\xb4\x07\xd8\n*\xa0\xa1@ \x...k\xf4]8\x1f|3\xac\xc8\xben\x8e\xac\x83\xc4Vx\x19D\x9f\xad\xbd\x83\xf4\x85\x88\xc3\xf6l\xd9 \xb1W\xe4\n\x00\x00\xff\xff' decode_content = True decoded = b'{"bars":{"ETHD":[{"c":15.7,"h":15.7,"l":15.68,"n":4,"o":15.68,"t":"2025-06-30T12:00:00Z","v":1198,"vw":15.693356},{"...5.336671},{"c":15.595,"h":15.595,"l":15.3,"n":14,"o":15.31,"t":"2025-07-01T18:00:00Z","v":6408,"vw":15.520157},{"c":15' self = /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/site-packages/urllib3/response.py:1333: in _update_chunk_length line = self._fp.fp.readline() # type: ignore[union-attr] ^^^^^^^^^^^^^^^^^^^^^^ self = /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/socket.py:720: in readinto return self._sock.recv_into(b) ^^^^^^^^^^^^^^^^^^^^^^^ b = self = /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/ssl.py:1251: in recv_into return self.read(nbytes, buffer) ^^^^^^^^^^^^^^^^^^^^^^^^^ __class__ = buffer = flags = 0 nbytes = 8192 self = view = /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/ssl.py:1103: in read return self._sslobj.read(len, buffer) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E Failed: Timeout (>60.0s) from pytest-timeout. buffer = len = 8192 self =