我正在尝试学习如何在 Python 中使用矩阵代数,为了做到这一点,我决定实现下面给出的最大夏普比率公式
这是我对公式的实现
def maximum_sharpe_ratio(cov, posterior_returns, risk_free_rate):
risk_free_vector = np.ones(len(posterior_returns)) * risk_free_rate
inv_cov = np.linalg.inv(cov)
numerator = np.dot(inv_cov, posterior_returns - risk_free_vector)
denominator = np.dot(np.ones(len(posterior_returns)), np.dot(np.linalg.inv(cov), exp_rets - risk_free_vector))
return numerator / denominator
如果有人能够告诉我这是否正确以及如何改进,我将非常感激!
您的实现看起来基本正确,但变量名称中有一个小错误。
您似乎正在使用函数中未定义的
variable exp_rets
。我假设您打算使用 posterior_returns
来代替。
import numpy as np
def maximum_sharpe_ratio(cov, posterior_returns, risk_free_rate):
risk_free_vector = np.ones(len(posterior_returns)) * risk_free_rate
inv_cov = np.linalg.inv(cov)
numerator = np.dot(inv_cov, posterior_returns - risk_free_vector)
denominator = np.dot(np.ones(len(posterior_returns)), np.dot(np.linalg.inv(cov), posterior_returns - risk_free_vector))
return numerator / denominator