Alexandru Lupa
Alexandru Lupa

Reputation: 1

pandas timezones conversion malfunction

Trying to build an algorithm for processing stocks. I'm not a dev, so basically my knowledge is limited. I'm retrieving findata with an API. Looks like it's done correctly, sorted ascending. First event is 4 AM. It has events starting with 9:30 AM NYSE time. Somehow, during these checks & conversions here, the first data point gets to be filtered to 10:26 AM and I have no idea how. ChatGPT can't figure it out either. help.

The input date doesn't seem to make a difference. Used for example 2024-08-28.

start_datetime = datetime.strptime(start_date, '%Y-%m-%d')
end_datetime = datetime.strptime(end_date, '%Y-%m-%d') + timedelta(days=1)       
current_date = start_datetime
while current_date < end_datetime:
    date_str = current_date.strftime('%Y-%m-%d')
    market_open = current_date.replace(hour=9, minute=30, second=0, microsecond=0, tzinfo=pytz.timezone('America/New_York'))
    market_close = current_date.replace(hour=16, minute=0, second=0, microsecond=0, tzinfo=pytz.timezone('America/New_York'))     
    for ticker in tickers:
        ticker_minute_data = await fetch_minute_data(session, ticker, date_str)
        if not ticker_minute_data.empty:
             ticker_minute_data = ticker_minute_data[(ticker_minute_data['t'] >= market_open) & (ticker_minute_data['t'] <= market_close)]

Fetch_minute_data works correctly. I checked ticker_minute_data dataframe and the contains are correct. Problem is after ticker_minute_data is evaluated.

market_open = datetime.datetime(2024, 8, 28, 9, 30, tzinfo=<DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>)
market_close = datetime.datetime(2024, 8, 28, 16, 0, tzinfo=<DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>)

ticker_minute_data['t'] format: 2024-08-28 04:00:00-04:00

Upvotes: 0

Views: 57

Answers (0)

Related Questions