Я загружаю ежедневно скорректированные данные о ценах для компаний «AAPL», «BA», «GS» и индекс DJIA из yahoo finance между датами «12/31/2008» и «12/31/2018» изатем конвертировать в ежедневный доход на основе Adj.Закрыть.
# Download price data
import pandas as pd
from pandas_datareader import data as pdr
import fix_yahoo_finance as yf
yf.pdr_override()
import datetime
start_dt = datetime.datetime(2008, 12, 31)
end_dt = datetime.datetime(2018, 12, 31)
def getDataBatch(tickers, startdate, enddate):
def getData(ticker):
return (pdr.get_data_yahoo(ticker, start=startdate, end=enddate))
datas = map(getData, tickers)
return(pd.concat(datas, keys=tickers, names=['Ticker', 'Date']))
data_AAPL = pdr.get_data_yahoo('AAPL', start=start_dt, end=end_dt)
data_BA = pdr.get_data_yahoo('BA', start=start_dt, end=end_dt)
data_GS = pdr.get_data_yahoo('GS', start=start_dt, end=end_dt)
data_DJIA = pdr.get_data_yahoo('^DJI', start=start_dt, end=end_dt)
#Convert into daily return
def getReturns(tickers, start_dt, end_dt, freq):
px_data = getDataBatch(tickers, start_dt, end_dt)
px = px_data[['Adj Close']].reset_index().pivot(index='Date', columns='Ticker', values='Adj Close')
if (freq=='daily'):
px = px.resample('D').last()
ret = px.pct_change().dropna()
ret.columns = tickers
return(ret)
Ticker_List = ['AAPL','BA','GS','^DJI']
ReturnData = getReturns(Ticker_List, start_dt, end_dt, freq='daily')
ReturnData.columns = ['AAPL','BA','GS','DJIA']
Я хочу рассчитать скользящую годовую доходность по трем акциям и DJIA, используя для цикла , каждый раз просматривая 252 ежедневных точки данных и сохраняя результаты в новомПеременная.
Я знаю, как использовать функцию прокрутки, но я не уверен, как использовать цикл for, чтобы сделать то же самое.Кто-нибудь знает как это сделать?