拓端tecdat|R语言对股票风险“溃疡指数”( Ulcer Index)曲面图可视化
原文链接:http://tecdat.cn/?p=18240
目标函数的平滑度对于优化的成功至关重要。
可视化目标函数是一种检查平滑度的简便方法。
例如,让我们检查“溃疡指数”( Ulcer Index) ,这是一种风险度量,类似于“标准偏差”。
溃疡指数尝试通过衡量价格回撤来衡量持有交易或投资的压力。溃疡指数基于下降波动性有害、上升拨动性有利的概念。
不像金融行业通常用来衡量股票风险的标准差那样使用同样的权重来衡量上行波动和下行波动,溃疡指数使用了更加明智的方法。它声明投资者们往往只在乎股票的下行风险,并不在乎上行风险(因为在投资者做多的情况下,上行风险是有利的,相当于盈利)。
如果 Ulcer指数 是平滑函数,则可以使用例如非线性求解器轻松地将其用于优化。
-
#*****************************************************************
-
# 模拟数据
-
#*****************************************************************
-
load.packages('quantmod')
-
-
s = c(120,135,10) # 现货价格
-
r = c(0.15, 0.21,0.3) # 预期回报
-
sig = c(0.12,0.36,0.17) # 预期标准差矩阵
-
r12 = 0.33 # 第一和第二资产之间的相关性
-
r13 = 0.3 # 第一和第三资产之间的相关性
-
r23 = 0.79 #第二和第三资产之间的相关性
-
-
# 构造相关矩阵
-
r = matrix(1,nr=3,nc=3)
-
r[upper.tri(rho)] = c(r12,r13,r23)
-
-
-
# 确保相关矩阵为正定义矩阵
-
-
rho = as.matrix(nearPD(rho, T)$mat)
-
-
-
#*****************************************************************
-
# 查看模拟价格
-
#*****************************************************************
-
-
plota.matplot(scale.one(xts.prices),main='Asset Perfromance')
-
#*****************************************************************
-
# 计算溃疡指数
-
#*****************************************************************
-
apply(cho,1, function(x) {
-
if(sum(x) > 1) NA
-
else
-
last(ulcer(x[1]*prices[,1] + x[2]*prices[,2] + 1-sum(x)*prices[,3])
-
}
-
)
-
-
-
#*****************************************************************
-
#可视化曲面 - 静态 3D 绘图
-
#*****************************************************************
-
persp(tem, tem, z,col='green',xlab='x',ylab='y'
上面的代码创建了一个很难研究的静态曲面图。
要创建可以用鼠标旋转的交互式3D图,使用:
-
#*****************************************************************
-
# 可视化曲面 - 交互式 3D 绘图,使用鼠标旋转
-
#*****************************************************************
-
-
persp3d(temp, temp, z,col='green',xlab='x',ylab='y')
溃疡指数 曲面光滑,是优化合适的选择。
最受欢迎的见解
1.用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)的应用
▍关注我们
【大数据部落】第三方数据服务提供商,提供全面的统计分析与数据挖掘咨询服务,为客户定制个性化的数据解决方案与行业报告等。
▍咨询链接:http://y0.cn/teradat
▍联系邮箱:3025393450@qq.com