Q461157910
今天遇到一個小的需求,類似于實證金融中常用的投資組合排序方法,但相比起來更簡單一些,比較適合learn the hard way。
需求描述如下:
有量級可比擬的兩列數(shù)據(jù)p和ps(比如一支股票的收益率和滯后一期收益率),需要用ps的20%分位點將p分成5份,再統(tǒng)計每一份的均值,并畫出每一份的核密度曲線。
代碼如下,作為一個簡單示意,此處的p和ps分別來自兩個參數(shù)不同的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函數(shù)完成,然而不屬于hard way范圍,不再贅述。