Okay so here's my code so far
import time
import datetime
import pandas as pd
import matplotlib.pyplot as plt
import yfinance as yf
import ssl
from scipy.stats import skew
ssl._create_default_https_context = ssl._create_unverified_context
tables = pd.read_html('https://en.wikipedia.org/wiki/List_of_S%26P_500_companies')
symbolslist=tables[0]['Symbol'].to_list()
my_data=yf.download(symbolslist, start=None, end=None, actions=False)
open_high_data = my_data[['Open','High','Close','Volume']]
open_high_data.index = pd.to_datetime(open_high_data.index)
between = open_high_data.loc['2010-01-01':'2023-12-31']
stacked_data = between.stack()
rearranged_data = stacked_data.reset_index()
rearranged_data.columns = ['Date', 'Symbol', 'Open', 'High', 'Close',' Volume']
print(rearranged_data)
rearranged_data['Daily_Return'] = rearranged_data.groupby('Symbol')['Open'].pct_change()
monthly_avg_daily_returns = rearranged_data.groupby(['Symbol', pd.Grouper(key='Date', freq='M'))['Daily_Return'].mean()
monthly_std_daily_returns = rearranged_data.groupby(['Symbol', pd.Grouper(key='Date', freq='M')])['Daily_Return'].std()
monthly_skew_daily_returns = rearranged_data.groupby(['Symbol', pd.Grouper(key='Date', freq='M')])['Daily_Return'].apply(skew)
rearranged_data['Avg_Daily_Return'] = rearranged_data.set_index(['Symbol','Date']).index.map(monthly_avg_daily_returns)
rearranged_data['Std_Daily_Return'] = rearranged_data.set_index(['Symbol', 'Date']).index.map(monthly_std_daily_returns)
rearranged_data['Skewness_Daily_Return'] = rearranged_data.set_index(['Symbol','Date']).index.map(monthly_skew_daily_returns)
print(rearranged_data)
All this? Working so far. Here's the part that's causing issues.
rearranged_data['Dollar_Trade_Volume'] = rearranged_data['Close'] * rearranged_data['Volume']
For whatever reason, it keeps giving me a error saying "Keyerror: Volume"
This assignment is due at midnight EST. I could really use some quick help here.