我在 Spyder (Python 3.7) 中运行以下代码并且没有错误消息,但为什么我看不到生成的图表?任何人都可以帮忙吗?图形后端设置已经“内联”了。
import statsmodels.api as sm
import numpy as np
import plotly.graph_objs as go
import matplotlib.pyplot as plt
import plotly.offline as pyo
import warnings
warnings.filterwarnings('ignore')
n_assets = 5
n_simulation = 500
returns = np.random.randn(n_assets, n_simulation)
rand = np.random.rand(n_assets)
weights = rand/sum(rand)
def port_return(returns):
rets = np.mean(returns, axis=1)
cov = np.cov(rets.T, aweights=weights, ddof=1)
portfolio_returns = np.dot(weights, rets.T)
portfolio_std_dev = np.sqrt(np.dot(weights, np.dot(cov, weights)))
return portfolio_returns, portfolio_std_dev
portfolio_returns, portfolio_std_dev = port_return(returns)
portfolio = np.array([port_return(np.random.randn(n_assets, i))for i in range(1, 101)])
best_fit = sm.OLS(portfolio[:, 1], sm.add_constant(portfolio[:, 0]))\.fit().fittedvalues
fig = go.Figure()
fig.add_trace(go.Scatter(name='Risk-Return Relationship', x=portfolio[:,0],y=portfolio[:,1], mode='markers'))`
fig.add_trace(go.Scatter(name='Best Fit Line', x=portfolio[:,0],y=best_fit, mode='lines'))
fig.update_layout(xaxis_title = 'Return', yaxis_title = 'Standard Deviation', width=900, height=470)
plotly.offline.iplot(fig, filename="images/risk_return.png")
fig.show()
我期待在图中看到一些名为“风险回报关系”的点和一条名为“最佳拟合线”的直线,自变量是 portfolio_std_dev,因变量是 portfolio_returns