Julia中不同相关系数下投资组合标准差计算结果一致问题求助
问题根源
你遇到的问题是两个错误共同导致的:
- 股票A的标准差设为0
你在代码中定义了sA = .00,即股票A为无风险资产。而投资组合标准差的计算公式中,和相关系数rrab绑定的交叉项为2*rrab*sA*sB .*x .* y,当sA=0时,该项的取值恒为0,因此无论相关系数取什么值,都不会影响最终标准差的计算结果,所以你得到的sab1/sab2/sab3完全一致。 - 投资组合方差公式符号错误
标准的两资产投资组合方差公式为:
σ_p² = w_A²σ_A² + w_B²σ_B² + 2ρ_AB w_A w_B σ_A σ_B
你代码中交叉项用了减号,后续如果修改sA为非0值时,这个符号错误会导致标准差计算结果不符合理论预期。
修正示例
你可以将sA修改为合理的非0值,同时修正公式符号即可得到不同相关系数对应的标准差:
rA = .05; sA = .10; lA = "A" # 把sA改成0.1这类非零值 rB = .10; sB = .38; lB = "B" rrab1 = 1 rrab2 = .5 rrab3 = 0 x = collect(0 : .05 : 1) y = 1 .-x # 修正公式符号为加号 sab1 = sqrt.(sA^2*x.^2 + sB^2*y.^2 + 2*rrab1*sA*sB .*x .* y) sab2 = sqrt.(sA^2*x.^2 + sB^2*y.^2 + 2*rrab2*sA*sB .*x .* y ) sab3 = sqrt.(sA^2*x.^2 + sB^2*y.^2 + 2*rrab3*sA*sB .*x .* y ) # 此时校验 sab1 == sab2 == sab3 会返回false
修改后你再用PGFPlotsX绘图就可以得到三条不同的曲线了。
内容的提问来源于stack exchange,提问作者user11254108
相关产品推荐
相关产品推荐

