m0_66465757 2023-04-24 20:56 采纳率: 0%
浏览 48
已结题

python金融应用实验

投资者B采用的投资策略是“定投策略”,即从2020年首个交易日在每个交易日均按照当日收盘价对每只股票各购买100股,计算每个交易日投资者B持有每只股票市值的盈亏情况并可视化,再计算每个交易日投资者B投资组合的整体市值盈亏情况并可视化,对数据分析结果进行解释阐述。
现在已经得到了5只股票的每日收盘价数据框,每日以收盘价数据买入100股,然后根据当天收盘价数据表示出股票每日市值,盈亏情况就是今日收盘价减去上一日收盘价乘以股数,总手数是360手。

              jqr    ndsd   lcxx  zggj  zwzx
Date                                        
2020-01-02  14.31  107.52  28.44  9.88  4.26
2020-01-03  14.36  109.55  29.28  9.83  4.26
2020-01-06  14.63  109.09  29.03  9.75  4.38
2020-01-07  14.74  108.50  28.97  9.79  4.50
2020-01-08  14.60  109.60  27.68  9.56  4.26
          ...     ...    ...   ...   ...
2021-06-24  10.22  467.30  28.21  6.38  6.23
2021-06-25  10.55  476.23  28.38  6.45  6.25
2021-06-28  10.51  493.90  28.47  6.38  6.28
2021-06-29  10.54  508.51  28.02  6.38  6.22
2021-06-30  10.67  534.80  28.13  6.37  6.14
#已经有了5只股票收盘价数据库
shares=pd.DataFrame(0, index=data.index,columns=data.columns)#这是AI给的代码,运行了之后报AttributeError: 'DataFrame' object has no attribute 'DataFrame'错误
portfolio_value=pd.Series()
for date, prices in data.iterrows():
    shares.loc[date] += 100
    value = (shares * prices).sum(axis=1)
    pnl=value-(shares * data.iloc[0]).sum(axis=1)
    portfolio_value[date] = value.sum()
    daily_returns = pnl.sum() / (shares * data.iloc[0]).sum().sum()
print(portfolio_value)
print(daily_returns)
  • 写回答

3条回答 默认 最新

  • Zyb0627 2023-04-24 21:04
    关注

    引用chatGPT作答,根据代码的第一行shares=pd.DataFrame(0, index=data.index,columns=data.columns),看起来data应该是另一个DataFrame对象。但是在给出的问题描述中没有提供data的定义,因此我们无法确定是否存在这个DataFrame对象。根据错误信息,很可能是在data.iterrows()这一行的代码中出现了问题。

    另外,对于这种错误,通常需要查看完整的错误信息,以确定错误发生的确切位置。因此建议您提供完整的错误信息,以便更好地排查问题。

    评论

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 修改了问题 4月24日
  • 创建了问题 4月24日