我正在尝试使用以下代码来计算某个股票池的个人投资组合的加班价值。 stockOwnership.csv文件非常简单,只列出了股票以及每个人拥有多少股票。看起来像这样:
Ticker, NameA, NameB, NameC
ALXN, 10, , 100
AMZN, 12, 15,
BABA, , 150, 12
BCRX, , , 175
然后,我使用以下代码导入csv,并使用Yahoo Finance提取库存数据。价格看似是一个MultiIndex,但我能够隔离每日收盘价并“压缩”(不确定正确的术语),使其不再是prices_2中的MultiIndex。
import yfinance as yf
import pandas as pd
stock_list ='ALXN AMZN BABA BCRX'
ownership = pd.read_csv('stockOwnership.csv', index_col='Ticker')
prices = yf.download(stock_list, start="2020-03-20", end="2020-06-30",
group_by='ticker')
idx=pd.IndexSlice
prices_2 = prices.loc[idx[:], idx[:,'Close']]
prices_2.columns = prices_2.columns.get_level_values(0)
Prices_3只是P_2换位,因为我的意图是与所有权结合并按日期为每个人计算投资组合价值。
prices_3 = prices_2.T
prices_3.index = prices_3.index.rename("Ticker")
在此之后,我有点迷茫。我想将两个数据框相乘,我想我的理想结果将是一个multiIndex,显示在日期范围内每个人的每个股票的价值。这将使我能够按日期汇总总价值。我尝试了一个简单的mul(),但它只是将与每个人相关联的列添加到末尾,每个值似乎都是NaN。