使用向量化以优化性能
上一篇文章中,我们使用蒙特卡洛方法,运行5000次,大约花了5.2秒。我们可以使用向量化运算方法来提升这个速度:

我们可以使用下面的算法,把部分计算移出了循环:
from empyrical import sharpe_ratio
import time
start = time.time()
num_ports = 5000
all_weights = np.random.rand(num_ports, len(stocks))
shape = (len(all_weights), -1)
all_weights = all_weights/all_weights.sum(axis=1).reshape(shape)
# got 241 daily summed returns over 5000 iters
all_port_returns = np.dot(all_weights,returns.T)
all_cov = np.cov(all_port_returns).diagonal()
# 计算波动率
all_vol = []
all_sharpe = []
annual_return = np.prod((1 + all_port_returns), axis=1) - 1
for i in range(num_ports):
all_vol.append(np.sqrt(np.dot(all_weights[i].T, np.dot(all_cov[i], all_weights[i]

本文介绍了如何通过向量化技术,如NumPy和Python库scipy.optimize,提升金融模型计算效率,从5.2秒缩短至0.65秒,讨论了蒙特卡洛方法在大量资产组合优化中的局限性,并展示了使用优化算法解决这类问题的实际应用。
最低0.47元/天 解锁文章
839

被折叠的 条评论
为什么被折叠?



