欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 畫有效邊界

錢浩然2年前9瀏覽0評論

Python是一種功能強大的編程語言,可以處理各種任務(wù)。其中之一就是繪制有效邊界。有效邊界指的是在給定的資源約束下,可以實現(xiàn)最大化收益或最小化風(fēng)險的點集,被稱為投資組合。本文將介紹如何使用Python繪制有效邊界。

# 導(dǎo)入所需的庫
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 讀取數(shù)據(jù)
data = pd.read_csv('data.csv')
# 計算股票收益率的均值和協(xié)方差
returns = data.pct_change().mean()
covariance = data.pct_change().cov()
# 定義一個函數(shù),用于計算投資組合收益率和風(fēng)險
def portfolio_return(weights, returns):
return np.sum(weights * returns)
def portfolio_risk(weights, covariance):
return np.sqrt(np.dot(weights.T, np.dot(covariance, weights)))
# 生成隨機權(quán)重,并計算對應(yīng)的收益率和風(fēng)險
def random_weights(n):
weights = np.random.rand(n)
weights /= np.sum(weights)
return weights
def get_portfolio(weights, returns, covariance):
portfolio_return = portfolio_return(weights, returns)
portfolio_risk = portfolio_risk(weights, covariance)
return [portfolio_return, portfolio_risk]
# 繪制有效邊界圖形
def get_efficient_frontier(returns, covariance, points):
portfolios = []
for i in range(points):
weights = random_weights(len(returns))
portfolios.append(get_portfolio(weights, returns, covariance))
portfolios = np.array(portfolios)
plt.scatter(portfolios[:,1], portfolios[:,0], marker='o', s=10, alpha=0.3)
plt.xlabel('Risk')
plt.ylabel('Return')
plt.show()
get_efficient_frontier(returns, covariance, 5000)

在以上代碼中,我們使用了numpy、pandas和matplotlib等庫。其中,data.csv包含了我們所需的數(shù)據(jù)。通過pandas庫中的pct_change()方法計算股票的收益率均值和協(xié)方差。然后,我們定義了計算投資組合收益率和風(fēng)險的兩個函數(shù)。隨機生成權(quán)重,并通過get_portfolio()函數(shù)計算相應(yīng)的投資組合收益率和風(fēng)險。最后,我們繪制了有效邊界圖形,并使用5000個點進行模擬,展示了不同收益率和風(fēng)險的投資組合。