Cook RR语言与统计分析

类似投资组合排序的R实现

2020-02-28  本文已影响0人  六胜一平

今天遇到一个小的需求,类似于实证金融中常用的投资组合排序方法,但相比起来更简单一些,比较适合learn the hard way。

需求描述如下:

有量级可比拟的两列数据p和ps(比如一支股票的收益率和滞后一期收益率),需要用ps的20%分位点将p分成5份,再统计每一份的均值,并画出每一份的核密度曲线。

代码如下,作为一个简单示意,此处的p和ps分别来自两个参数不同的Vasicek模型的蒙特卡洛模拟。

sp=function(x,q){

  res=max(which(q<=x))

  if(res==length(q))

    res=res-1

  return(res)

}

mc=function(r0,T,deltaT,a,b,sigma){

  path=rep(r0,T/deltaT)

  for(i in 2:length(path)){

    path[i]=path[i-1]+a*(b-path[i-1])+sigma*rnorm(1,0,1)

  }

  path

}

p=mc(0.03,10,0.0001,0.1,0.04,0.02)

ps=mc(0.05,10,0.0001,0.15,0.05,0.10)

q=quantile(ps,seq(0,1,0.2))

c=apply(X=as.array(p), MARGIN = 1, FUN=sp,q)

m=tapply(p,c,mean)

co=tapply(p,c,length)
Rplot.jpeg

PS:这个小需求还可以用base里面的cut函数完成。

上一篇 下一篇

猜你喜欢

热点阅读