首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python进行财务分析-返回值错误

用Python进行财务分析-返回值错误
EN

Stack Overflow用户
提问于 2020-07-01 01:12:24
回答 1查看 82关注 0票数 0

我希望使用python来分析金融数据。我正在使用下面的函数,但是我继续遇到一个值错误,到目前为止,我很难解释为什么我会遇到这个问题。

这个函数的预期结果是df_1包含5000个可能的投资组合,然后下一个函数将优化这些结果,然后我将绘制出有效的边界。

这就是问题所在..。

#定义回报投资组合

代码语言:javascript
复制
def return_portfolios(expected_returns, cov_matrix):
    port_returns = []
    port_volatility = []
    stock_weights = []

selected = (expected_returns.axes)[0]

num_assets = len(selected)
num_portfolios = 5000

for single_portfolio in range(num_portfolios):
    weights = np.random.random(num_assets)
    weights /= np.sum(weights)
    returns = np.dot(weights, expected_returns)
    volatility = np.sqrt(np.dot(weights.T,np.dot(cov_matrix, weights)))
    port_returns.append(returns)
    port_volatility.append(volatility)

    stock_weights.append(weights)

portfolio = {'Returns': port_returns, 'Volatility': port_volatility}

for counter, symbol in enumerate(selected):
    portfolio[symbol + 'Weight'] = [Weight [counter] for Weight in stock_weights]

    df = pd.Dataframe(portfolio)

    column_order = ['Returns', 'Volatility'] + [stock +' Weight' for stock in selected]

    df = df[column_order]

    return df

*我继续得到这个值错误。我不知道为什么。*

代码语言:javascript
复制
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    <ipython-input-9-f1e87857141b> in <module>
          1 #Plot Efficient Frontier
    ----> 2 df_1 = return_portfolios(daily_ER, covariance)
          3 
          4 weights, returns, risks = optimal_portfolio(daily_ER[1:])
          5 

    <ipython-input-3-d248522d6f87> in return_portfolios(expected_returns, cov_matrix)
         14         weights /= np.sum(weights)
         15         returns = np.dot(weights, expected_returns)
    ---> 16         volatility = np.sqrt(np.dot(weights.T,np.dot(cov_matrix, weights)))
         17         port_returns.append(returns)
         18         port_volatility.append(volatility)

    <__array_function__ internals> in dot(*args, **kwargs)

    ValueError: shapes (11,11) and (254,) not aligned: 11 (dim 1) != 254 (dim 0)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-01 01:18:18

看起来你试图在两个矩阵之间执行点积。然而,一个具有(11,11)的形状,另一个具有形状(254,)。您需要确保第一个矩阵的列数等于第二个矩阵的raws数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62668228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档