| 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 = <rtrader.services.cmf_service.CMFService object at 0x12cc8efc0>
|
| 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 = <function CMFService.render_chart.<locals>._resolve_trading_window at 0x12c993740>
|
| analyse_volume_trend_for_day = <function analyse_volume_trend_for_day at 0x1239dec00>
|
| 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 = <function bucket_bars_by_session at 0x1239deca0>
|
| 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(<class 'list'>, {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 = <rtrader.services.cmf_service.CMFService object at 0x12cc8efc0>
|
| 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 = <function analyse_volume_trend_for_day.<locals>.<lambda> 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 = <rtrader.services.cmf_service.CMFService object at 0x12cc8efc0>
|
| 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 = <class 'rtrader.prediction.algo.dm_spot.DM_spot'>
|
| KMeans = <class 'sklearn.cluster._kmeans.KMeans'>
|
| _base_diagnostics = <function CMFService._analyze_volume_clusters_for_day.<locals>._base_diagnostics at 0x12cc889a0>
|
| _direction_label = <function CMFService._analyze_volume_clusters_for_day.<locals>._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 = <Series_Direction.UP: 1>
|
| 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 = <module 'numpy' from '/Users/cao/.pyenv/versions/3.12.12/lib/python3.12/site-packages/numpy/__init__.py'>
|
| numeric_value = -0.015293118096856415
|
| position_in_range = 0.5470085470085475
|
| price_direction = <Series_Direction.DOWN: 2>
|
| 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 = <rtrader.services.cmf_service.CMFService object at 0x12cc8efc0>
|
| 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 = <Series_Direction.DOWN: 2>
|
| 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 = <rtrader.services.cmf_service.CMFService object at 0x12cc8efc0>
|
| 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 = <rtrader.services.cmf_service.CMFService object at 0x12cc8efc0>
|
| source = <rtrader.replay_framework.sources.AlpacaHistoricalSource object at 0x12cc740b0>
|
| 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.AlpacaHistoricalSource object at 0x12cc740b0>
|
| rtrader/replay_framework/sources.py:211: in _fetch
|
| response = client.get_stock_bars(request)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| attempt = 0
|
| client = <alpaca.data.historical.stock.StockHistoricalDataClient object at 0x12cc9a5d0>
|
| get_alpaca_key_manager = <function get_alpaca_key_manager at 0x12c68fe20>
|
| key_manager = <rtrader.utils.alpaca_key_manager.AlpacaKeyManager object at 0x12cc980b0>
|
| 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': <alpaca.data.timeframe.TimeFrame object at 0x12cc9b830>}
|
| 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 = <rtrader.replay_framework.sources.AlpacaHistoricalSource object at 0x12cc740b0>
|
| /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': <alpaca.data.timeframe.TimeFrame object at 0x12cc9b830>}
|
| self = <alpaca.data.historical.stock.StockHistoricalDataClient object at 0x12cc9a5d0>
|
| /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(<class 'list'>, {})
|
| 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': <DataFeed.IEX: 'iex'>, 'limit': 10000, 'page_token': None, ...}
|
| path = '/stocks/bars'
|
| self = <alpaca.data.historical.stock.StockHistoricalDataClient object at 0x12cc9a5d0>
|
| 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': <DataFeed.IEX: 'iex'>, 'limit': 10000, 'page_token': None, ...}
|
| kwargs = {}
|
| path = '/stocks/bars'
|
| self = <alpaca.data.historical.stock.StockHistoricalDataClient object at 0x12cc9a5d0>
|
| /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 = <BaseURL.DATA: 'https://data.alpaca.markets'>
|
| data = {'end': '2025-08-01T20:00:00+00:00', 'feed': <DataFeed.IEX: 'iex'>, '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': <DataFeed.IEX: 'iex'>, 'limit': 10000, 'page_token': None, ...}}
|
| path = '/stocks/bars'
|
| retry = 3
|
| self = <alpaca.data.historical.stock.StockHistoricalDataClient object at 0x12cc9a5d0>
|
| 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': <DataFeed.IEX: 'iex'>, 'limit': 10000, 'page_token': None, ...}}
|
| retry = 3
|
| self = <alpaca.data.historical.stock.StockHistoricalDataClient object at 0x12cc9a5d0>
|
| 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': <DataFeed.IEX: 'iex'>, 'limit': 10000, 'page_token': None, ...}
|
| prep = <PreparedRequest [GET]>
|
| proxies = {}
|
| req = <Request [GET]>
|
| self = <requests.sessions.Session object at 0x12c9fd280>
|
| 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 = <requests.adapters.HTTPAdapter object at 0x12cc9a4b0>
|
| allow_redirects = False
|
| elapsed = 0.2761521339416504
|
| history = []
|
| hooks = {'response': []}
|
| kwargs = {'cert': None, 'proxies': OrderedDict(), 'stream': False, 'timeout': None, ...}
|
| r = <Response [200]>
|
| request = <PreparedRequest [GET]>
|
| self = <requests.sessions.Session object at 0x12c9fd280>
|
| 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 = <Response [200]>
|
| /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 = <Response [200]>
|
| /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 = <urllib3.response.HTTPResponse object at 0x12cc77100>
|
| /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 = <urllib3.response.HTTPResponse object at 0x12cc77100>
|
| /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 = <urllib3.response.HTTPResponse object at 0x12cc77100>
|
| /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/socket.py:720: in readinto
|
| return self._sock.recv_into(b)
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
| b = <memory at 0x12c8fbd00>
|
| self = <socket.SocketIO object at 0x12cc943d0>
|
| /Users/cao/.pyenv/versions/3.12.12/lib/python3.12/ssl.py:1251: in recv_into
|
| return self.read(nbytes, buffer)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| __class__ = <class 'ssl.SSLSocket'>
|
| buffer = <memory at 0x12c8fbd00>
|
| flags = 0
|
| nbytes = 8192
|
| self = <ssl.SSLSocket [closed] fd=-1, family=2, type=1, proto=0>
|
| view = <released memory at 0x12c8fbc40>
|
| /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 = <memory at 0x12c8fbd00>
|
| len = 8192
|
| self = <ssl.SSLSocket [closed] fd=-1, family=2, type=1, proto=0>
|