bugfixing for bid ask midpoint ratio
This commit is contained in:
parent
afb0271e2a
commit
1479cc127c
@ -222,17 +222,23 @@ def get_historical_option_data(option_data_list, df_price):
|
|||||||
|
|
||||||
# Calculate total volume
|
# Calculate total volume
|
||||||
daily_summary['total_volume'] = daily_summary['c_vol'] + daily_summary['p_vol']
|
daily_summary['total_volume'] = daily_summary['c_vol'] + daily_summary['p_vol']
|
||||||
|
# Calculate bid/ask/midpoint ratios
|
||||||
# Calculate bid/ask/midpoint ratios
|
# Calculate bid/ask/midpoint ratios
|
||||||
try:
|
try:
|
||||||
daily_summary['bid_ratio'] = round(daily_summary['bid_vol'] / daily_summary['total_volume'] * 100, 2)
|
if daily_summary['total_volume'] > 0:
|
||||||
daily_summary['ask_ratio'] = round(daily_summary['ask_vol'] / daily_summary['total_volume'] * 100, 2)
|
daily_summary['bid_ratio'] = round(daily_summary['bid_vol'] / daily_summary['total_volume'] * 100, 2)
|
||||||
daily_summary['midpoint_ratio'] = round(daily_summary['midpoint_vol'] / daily_summary['total_volume'] * 100, 2)
|
daily_summary['ask_ratio'] = round(daily_summary['ask_vol'] / daily_summary['total_volume'] * 100, 2)
|
||||||
except ZeroDivisionError:
|
daily_summary['midpoint_ratio'] = round(daily_summary['midpoint_vol'] / daily_summary['total_volume'] * 100, 2)
|
||||||
|
else:
|
||||||
|
daily_summary['bid_ratio'] = None
|
||||||
|
daily_summary['ask_ratio'] = None
|
||||||
|
daily_summary['midpoint_ratio'] = None
|
||||||
|
except:
|
||||||
daily_summary['bid_ratio'] = None
|
daily_summary['bid_ratio'] = None
|
||||||
daily_summary['ask_ratio'] = None
|
daily_summary['ask_ratio'] = None
|
||||||
daily_summary['midpoint_ratio'] = None
|
daily_summary['midpoint_ratio'] = None
|
||||||
|
|
||||||
|
|
||||||
# Calculate OTM percentage for each date and assign it to the daily_summary
|
# Calculate OTM percentage for each date and assign it to the daily_summary
|
||||||
daily_summary['otm_ratio'] = df_summary.groupby('date').apply(lambda df: round(calculate_otm_percentage(df.to_dict('records')), 1)).values
|
daily_summary['otm_ratio'] = df_summary.groupby('date').apply(lambda df: round(calculate_otm_percentage(df.to_dict('records')), 1)).values
|
||||||
|
|
||||||
@ -242,7 +248,7 @@ def get_historical_option_data(option_data_list, df_price):
|
|||||||
daily_summary['bull_ratio'] = round(daily_summary['total_bull_prem'] / total_prem * 100, 2)
|
daily_summary['bull_ratio'] = round(daily_summary['total_bull_prem'] / total_prem * 100, 2)
|
||||||
daily_summary['bear_ratio'] = round(daily_summary['total_bear_prem'] / total_prem * 100, 2)
|
daily_summary['bear_ratio'] = round(daily_summary['total_bear_prem'] / total_prem * 100, 2)
|
||||||
daily_summary['neutral_ratio'] = round(daily_summary['total_neutral_prem'] / total_prem * 100, 2)
|
daily_summary['neutral_ratio'] = round(daily_summary['total_neutral_prem'] / total_prem * 100, 2)
|
||||||
except ZeroDivisionError:
|
except:
|
||||||
daily_summary['bull_ratio'] = None
|
daily_summary['bull_ratio'] = None
|
||||||
daily_summary['bear_ratio'] = None
|
daily_summary['bear_ratio'] = None
|
||||||
daily_summary['neutral_ratio'] = None
|
daily_summary['neutral_ratio'] = None
|
||||||
@ -355,7 +361,7 @@ etf_cursor.execute("PRAGMA journal_mode = wal")
|
|||||||
etf_cursor.execute("SELECT DISTINCT symbol FROM etfs")
|
etf_cursor.execute("SELECT DISTINCT symbol FROM etfs")
|
||||||
etf_symbols = [row[0] for row in etf_cursor.fetchall()]
|
etf_symbols = [row[0] for row in etf_cursor.fetchall()]
|
||||||
|
|
||||||
total_symbols = stock_symbols + etf_symbols
|
total_symbols = ['NUVL'] #stock_symbols + etf_symbols
|
||||||
|
|
||||||
query_template = """
|
query_template = """
|
||||||
SELECT date, close,change_percent
|
SELECT date, close,change_percent
|
||||||
@ -373,7 +379,6 @@ for ticker in total_symbols:
|
|||||||
volatility = calculate_volatility(df_price)
|
volatility = calculate_volatility(df_price)
|
||||||
|
|
||||||
ticker_data = get_data(ticker)
|
ticker_data = get_data(ticker)
|
||||||
|
|
||||||
# Group ticker_data by 'date' and collect all items for each date
|
# Group ticker_data by 'date' and collect all items for each date
|
||||||
grouped_history = defaultdict(list)
|
grouped_history = defaultdict(list)
|
||||||
for item in ticker_data:
|
for item in ticker_data:
|
||||||
@ -394,11 +399,9 @@ for ticker in total_symbols:
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
daily_historical_option_data = get_historical_option_data(ticker_data, df_price)
|
daily_historical_option_data = get_historical_option_data(ticker_data, df_price)
|
||||||
daily_historical_option_data = daily_historical_option_data.merge(df_price[['date', 'changesPercentage']], on='date', how='inner')
|
daily_historical_option_data = daily_historical_option_data.merge(df_price[['date', 'changesPercentage']], on='date', how='inner')
|
||||||
|
|
||||||
|
|
||||||
# Add "history" column containing all filtered items with the same date
|
# Add "history" column containing all filtered items with the same date
|
||||||
#daily_historical_option_data['history'] = daily_historical_option_data['date'].apply(lambda x: grouped_history.get(x, []))
|
#daily_historical_option_data['history'] = daily_historical_option_data['date'].apply(lambda x: grouped_history.get(x, []))
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user