python - 如何修复 TypeError: *: 'method' 和 'float' 不支持的操作数类型
问题描述
尝试运行此代码时,我不断收到此错误。我不是 CS 学生,也没有编码背景,但我的教授认为给我们一个需要高水平编码知识的项目是个好主意。我不知道我能做些什么来解决这个问题。
TypeError Traceback (most recent call last)
<ipython-input-11-851da82dbe8c> in <module>()
18 weights /= np.sum(weights)
19 portfolio_return = np.sum(mean_returns * weights) * 252
---> 20 portfolio_std_dev = np.sqrt(np.dot(weights.T,np.dot(cov_matrix, weights))) * np.sqrt(252)
21 results[0,i] = portfolio_return
22 results[1,i] = portfolio_std_dev
TypeError: unsupported operand type(s) for *: 'method' and 'float'
编辑:这是更完整的代码:
import pandas_datareader.data as web
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
stocks = ['AMZN','V','K','GOOG','MSFT','JPM','GS','C','AMD','LOW','VZ','GE',
'FB','AXP','AAPL','TSLA','PSX','NFLX','DG','BABA']
num_stocks = len(stocks)
data = web.DataReader(stocks,data_source='yahoo',start='01/01/2010')['Adj Close']
data = data.pct_change()
mean_returns = data.mean()
cov_matrix = data.cov
num_portfolios = 25000
results = np.zeros((3+num_stocks,num_portfolios))
for i in range(num_portfolios):
weights = np.array(np.random.random(num_stocks))
weights /= np.sum(weights)
portfolio_return = np.sum(mean_returns * weights) * 252
portfolio_std_dev = np.sqrt(np.dot(weights.T,np.dot(cov_matrix, weights))) * np.sqrt(252)
results[0,i] = portfolio_return
results[1,i] = portfolio_std_dev
results[2,i] = results[0,i] / results[1,i]
results[3:,i] = weights
解决方案
推荐阅读
- sql - 如何修复 SQL Server 中创建内存优化表中的错误消息 41337、级别 16、状态 100
- reactjs - Material UI:样式闪烁并消失
- react-native - React Native 将视频上传到 YouTube(卡在处理中)
- ios - UITableView 插入行装饰
- haskell - 类型推断算法如何解决受保护的方程?
- javascript - 无论您使用什么设备或屏幕尺寸,如何使 svg 高度与屏幕高度匹配
- reactjs - 来自 Postgres 数据库的反应复选框
- javascript - 选择器 " 不匹配任何元素
- runtime-error - 翻转列表中的元组时,方案错误显示“尝试应用非程序”
- javascript - 为什么我在 React 中收到无效的 Hook 调用?