我想最大化 q[1](Sharpe Ratio) 的值,但要遵守 julia 中的以下约束。
- W的值元素是正的。( W[i] >0 )
W 的值之和为 1。 ( sum(W[1:5]) == 1 )
function getSharpeRatio(W,ex_mu,S) q = ( W'*ex_mu ) / sqrt((W'*S*W)) return q[1] end
参考 :: W 是 (5X1) 向量,ex_mu 是 (5x1) 向量, S 是 (5x5) 矩阵。我找到了两个使用 JuMP 和 Optim.jl 的 julia 库,但无法按照库的要求翻译函数 getSharpeRatio。
更新:到目前为止我已经完成了,但似乎在使用 JuMP 的 JuMP 库中尚未实现转置
function getSharpeRatio(W,ex_mu,S)
return dot(W', ex_mu) / sqrt(dot(W',S*W))
end
items = [1;2;3;4;5]
m = Model()
@variable(m, 0 <= W[items] <= 1)
@constraint(m, sum{ W[item] , item in items} == 1)
@objective(m, Max, getSharpeRatio(W,ex_mu,S))
solve(m)
println(getvalue(W))
任何建议如何去做。