нужно некоторое руководство. Я пытаюсь рассчитать взвешенную по времени доходность акции, которую я выделяю капитал 4 раза за 6 лет.
Предполагая, что общий капитал, который я выделил, составляет $ 10 000 с 2013 года по настоящее время. Yr 1 = $ 2K, Yr 2 = $ 2K, Yr 3 = $ 2K и Yr 4 = $ 4K. Веса - 0,2, 0,2, 0,2, 0,4.
Я создал код для расчета взвешенной по времени доходности, но я хотел бы обратиться за советом, если я собираюсь включить веса, как мне действовать?
Ниже приведен код, который я сделал.
ticker = "TOT"
df_period = [] # To store dataframes of each period
time_wgt_period = [] # To store time period values
product = 1
def absoluteReturn(DF):
absoluteReturn = ((DF["Adj Close"][-1]-DF["Adj Close"][0])/DF["Adj Close"][0])
return absoluteReturn
# Get all different investment periods
period1 = pdr.DataReader(ticker, data_source='yahoo', start=datetime.datetime(2013, 4, 26), end=datetime.datetime(2013, 6, 25))
period2 = pdr.DataReader(ticker, data_source='yahoo', start=datetime.datetime(2013, 6, 26), end=datetime.datetime(2015, 1, 8))
period3 = pdr.DataReader(ticker, data_source='yahoo', start=datetime.datetime(2015, 1, 9), end=datetime.datetime(2016, 1, 17))
period4 = pdr.DataReader(ticker, data_source='yahoo', start=datetime.datetime(2016, 2, 18), end=date.today())
#Append all dataframe periods in a list so I can loop to call the CAGR function
df_period.append(period1)
df_period.append(period2)
df_period.append(period3)
df_period.append(period4)
# Using for loop to call simple return function and plus 1 to get time weighted values
for i in df_period:
time_wgt_period.append(absoluteReturn(i)+1)
#weights = np.array([0.20, 0.20, 0.20, 0.40,])
#np.dot(annualReturn_period, weights)
# Using for loop to get nultiply each time period value
for k in time_wgt_period:
#print("Product value: " + str(product) + "*" + str(k))
product = k*product
print ("Time Weighted Return for " +ticker+": "+str(round((product-1), 2) * 100) + "%")