我正在尝试为金融投资组合建设创建一个金融测试器。我导入了历史数据,并根据%& fiat (Equity_value)为股票和债券配置创建了变量。我设法在开始的一年(1975年作为一个例子)输入价值,但是我想使用计算复合回报(例如1975年的回报率是37.20%,所以在1976年应该有投资的资金,例如100,000美元* 1.372美元(去年的回报))。
我尝试过使用_(_
谢谢你的帮助。
工作代码
`
Portfolio_Value = input("Please enter your Portfolio Value in $ ")
Portfolio_Value = float(Portfolio_Value)
print("\n"+ "You'r portfolio value is $" + str(Portfolio_Value))
Equity_Allocation = input("Please enter your equity allocation in %")
Bond_Allocation = 100 - float(Equity_Allocation)
print("{:.2}".format(Equity_Allocation))
print("{:.2}".format(Bond_Allocation))
Equity_Value = float(Portfolio_Value) * float(Equity_Allocation)
Bond_Value = float(Portfolio_Value) * float(Bond_Allocation)
import datetime
start_date = datetime.datetime(1975,1,1)
end_date = datetime.datetime(2021,1,1)
df2 = df[::-1]
rowindex = df2.index[49]
df2.loc[rowindex, "Total Money Invested"] = Equity_Value
print(df2)`
破译码
df2["Total Equity Value"] = df2.cumprod(axis = 1) *df2[" Return"]打印(Df2)
发布于 2022-04-13 19:53:54
通常,复合是initial_val * (1 + r).cumprod()。
下面是一个使用每日股价(不包括股票分割和股息等调整)的例子,使用雅虎金融公司的AAPL历史:
import yfinance as yf
df = yf.Ticker('AAPL').history(period='2y', interval='1d')
df['returns'] = (df['Close'] / df['Close'].shift() - 1).fillna(0)现在,比方说,你两年前在AAPL投资了10万美元:
initial_val = 100_000
shares = initial_val / df['Close'][0]
today_val = shares * df['Close'][-1]
>>> today_val
253467.53938414634使用返回复合,您将得到相同的信息:
df['val'] = (initial_val * (1 + df['returns']).cumprod())
>>> df['val'].tail(1)
Date
2022-04-13 253467.539384
Name: val, dtype: float64
>>> df['val'].plot()
https://stackoverflow.com/questions/71862039
复制相似问题