自助法在分散式投资策略中的应用

可以转载,禁止修改。转载请注明作者和原文链接。

先用人话来描述一下这个问题:有两个收益不固定的投资项目,如何将一笔固定的金额分开投资,才能使总投资风险最小?

再用数学语言来描述一下这个问题,对于两个收益分别为X和Y的金融资产,X、Y为随机变量,把比例为α的金额投到X上,把剩下比例为1-α的金额投到Y中,使Var(αX+(1-α)Y)最小。根据方差的性质、协方差的定义以及极值的导数意义进行转化并求导,可以很easy地得到:

其中

如果知道总体X、Y的分布,那么可以直接求出α,但事实上往往不知道,只有样本。这个时候就需要根据样本来估计α,但α的估计值真的靠谱么?显然只给出一个数字是不行的。如果α的估计值自身都很不稳定,那就这种计算方法也就不靠谱了。

这里介绍一种重抽样方法:自助法(bootstrap)。这里直接引用CSDN上老子今晚不加班 的《Bootstrap 自助法》中的定义:

在统计学中,自助法(BootstrapMethod,Bootstrapping或自助抽样法)可以指任何一种有放回的均匀抽样,也就是说,每当选中一个样本,它等可能地被再次选中并被再次添加到训练集中。自助法能对采样估计的准确性(标准误差、置信区间和偏差)进行比较好的估计,它基本上能够对任何采样分布的统计量进行估计。

Bootstrap有两种形式:非参数bootstrap和参数化的bootstrap,但基本思想都是模拟。参数化的bootstrap假设总体的分布已知或总体的分布形式已知,可以由样本估计出分布参数,再从参数化的分布中进行再采样,类似于MC。非参数化的bootstrap是从样本中再抽样,而不是从分布函数中进行再抽样。

总而言之,bootstrap是一种可放回式抽样法,当进行大量这种抽样时,可以对估计量的统计量(方差、标准差、标准误差、置信区间等)有一个较为稳定、准确的估计。

这里以R的 ISLR 包中的 Portfolio 数据集为例,以之为样本,进行自助法重抽样,观察根据样本重抽样计算的α的估计量。

老规矩,先看一下数据集:

> library(ISLR)
> str(Portfolio)
‘data.frame‘:    100 obs. of  2 variables:
 $ X: num  -0.895 -1.562 -0.417 1.044 -0.316 ...
 $ Y: num  -0.235 -0.885 0.272 -0.734 0.842 ...

可见数据框100行,两列X、Y都是数值型。

先计算一下根据样本中所有的观测数据求得的α。

> # 求α的函数
> alpha=function(x,y){
+   vx=var(x)
+   vy=var(y)
+   cxy=cov(x,y)
+   (vy-cxy)/(vx+vy-2*cxy)
+ }
> alpha(Portfolio$X,Portfolio$Y)
[1] 0.5758321

再来求α的估计值。

> # 求α估计值的函数
> alpha.fn=function(data, index){
+   with(data[index,],alpha(X,Y))
+ }
> # 检查一下是否与上面结果一致
> alpha.fn(Portfolio,1:100)
[1] 0.5758321
> # 结果一致

下面进行重抽样。

> # 设定随机数种子
> set.seed(1)
> # 可放回抽100个样本
> alpha.fn (Portfolio,sample(1:100,100,replace=TRUE))
[1] 0.5963833
> # 可放回抽1000个样本
> alpha.fn (Portfolio,sample(1:100,100,replace=TRUE))
[1] 0.5796283

可见,当抽样容量更大时,α的估计值与实际值更接近。

不过当然不必自定义函数,自己去抽样计算,R肯定有自带的bootstrap方法的函数。

> boot.out=boot(Portfolio,alpha.fn,R=1000)
> boot.out

ORDINARY NONPARAMETRIC BOOTSTRAP

Call:
boot(data = Portfolio, statistic = alpha.fn, R = 1000)

Bootstrap Statistics :
     original       bias    std. error
t1* 0.5758321 4.879587e-06  0.08872272

boot() 函数输入数据集,欲计算的估计量,以及抽样次数就可以进行bootstrap抽样。从结果上来看,对于原始数据,样本α估计值为0.5758(由于随机性,与上面的结果略有差异),标准误为0.0887。

还可以对估计量进行可视化,观察α估计量的分布。

> plot(boot.out)

可见α估计量正态性良好。

bootci() 函数可用来求估计量的置信区间。

> boot.ci(boot.out)
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 1000 bootstrap replicates

CALL :
boot.ci(boot.out = boot.out)

Intervals :
Level      Normal              Basic
95%   ( 0.4019,  0.7497 )   ( 0.3909,  0.7440 )  

Level     Percentile            BCa
95%   ( 0.4076,  0.7607 )   ( 0.4107,  0.7617 )
Calculations and Intervals on Original Scale
Warning message:
In boot.ci(boot.out) : bootstrap variances needed for studentized intervals

结果中的4种置信区间是根据不同的方法计算出来的,差别不大,按需取之即可。

这下不仅能给出α的估计值,还能给出标准误和置信区间,有理有据,令人信服。

参考文献

Gareth James et al. An Introduction to Statistical Learning.

老子今晚不加班,《Bootstrap 自助法》,CSDN.

?

时间: 2024-10-19 05:11:45

自助法在分散式投资策略中的应用的相关文章

Camel Games借助AWS在爆发式增长中提供优质游戏体验

关于Camel Games Camel Games成立于2009年,是中国首家得到google市场官方认证的顶尖开发公司.长期以来,Camel Games始终依靠于领先的技术背景,致力于成为国际一流的手机网络游戏开发商和运营商,为全球无线增值服务市场提供顶级的手机游戏娱乐产品.目前,Camel Games共推出了12款Android游戏,其中7款曾获Google推荐,Blow Up, Space Physics, Roller 等游戏曾位列Android游戏分类排行榜的前三.Roller (Li

[C#] 排除无须纳入交易的查询,避免产生不必要的分散式交易 (Distributed Transaction)

当不小心启用分散式事务机制时,且环境设定不允许时,就会产生[已停用分散式事务管理员 (MSDTC) 的网络存取.请使用组件服务系统管理工具启用 DTC,以使用 MSDTC 安全性设定中的网络存取]错误消息,此时可以透过?new TransactionScope(TransactionScopeOption.Suppress) 排除不需要纳入事务的部分,避免分散事务的情境产生. 前言 当操作不同 DB 服务器且需要在同一个事务下完成,就需要使用分散式事务(Distributed Transacti

响应式布局中的CSS相对量

一个响应式布局,要能够根据设备屏幕尺寸的改变,动态的调整页面内容,展现不同的设计风格.在进行响应式的 CSS 代码编写过程中,经常会用到一些相对尺寸,以达到相对定位的目的.例如,常见的响应式布局中需要用到"自适应的图片"."流动布局"等技术. 体现在 CSS 代码编写上,就需要前端开发人员精准掌握特定属性的相对量表示方法.然而,其中一些相对量的计算方法很容易混淆. 本文在完整梳理全部 CSS 属性基础上,将其中的"相对单位.百分比相对量.数字相对量&quo

流式数据中的数学统计量计算

在科技飞速发展的今天,每天都会产生大量新数据,例如银行交易记录,卫星飞行记录,网页点击信息,用户日志等.为了充分利用这些数据,我们需要对数据进行分析.在数据分析领域,很重要的一块内容是流式数据分析.流式数据,也即数据是实时到达的,无法一次性获得所有数据.通常情况下我们需要对其进行分批处理或者以滑动窗口的形式进行处理.分批处理也即每次处理的数据之间没有交集,此时需要考虑的问题是吞吐量和批处理的大小.滑动窗口计算表示处理的数据每次向前移N个单位,N小于要处理数据的长度.例如,在语音识别中,每个包处理

什么是虚拟存储器,在页式系统中如何实现虚拟存储?

由操作系统和硬件相配合完成主存和辅存之间的信息的动态调度,这样的计算机好像为用户提供了一个其存储容量比主存大得多的存储器,这个存储器称为虚拟存储器. (实现虚拟存储技术需要有如下物质基础,相当容量的主存,一定容量的辅存,地址变换机构) 在页式系统中采用预调方式实现虚拟存储.(也就是说,只需将作业的一部分页面装入内存即可运行,并且当运行过程中需要的页面不在内存中再将其调入.)

响应式设计中的图片处理

响应式网页设计,是一种正在流行的网页开发思想,它是利用灵活可变的栅格系统,令网页的显示模式可以根据访问设备的屏幕尺寸规格而进行自适应.预计2015年的时候,移动端的用户数量将会从目前的8亿,增长到19亿,而这也意味着目前我们为桌面浏览器而设计的网页,将会在他们的手机和平板上呈现出非常糟糕的使用体验. 但是随着实际应用状况的改变,响应式网页设计还是会出现一系列复杂的并发症.本文余下的部分,就是详细阐述如何在响应式网页中安置和处理多媒体元素,诸如图片和视频,最终的目的是帮你做出一个靠谱的网站,能让这

响应式布局中为什么要使用em设置字体大小而不用px

px像素(Pixel).相对长度单位.像素px是相对于不同设备显示器屏幕分辨率(pad/phone/pc)而言的.(引自CSS2.0手册) 1em指的是一个字体的大小,它会继承父级元素的字体大小,因此并不是一个固定的值.任何浏览器的默认字体大小都是16px. px相对的屏幕分辨率,而em相对于父级div,所以在响应式布局中使用em更合适,因为任何浏览器默认字体大小是固定的,而不同设备屏幕分辨率却各不相同. em有如下特点: 1. em的值并不是固定的: 2. em会继承父级元素的字体大小. 所以

抢占式内核与非抢占式内核中的自旋锁(spinlock)的区别

一.概括 (1)自旋锁适用于SMP系统,UP系统用spinlock是作死. (2)保护模式下禁止内核抢占的方法:1.执行终端服务例程时2.执行软中断和tasklet时3.设置本地CPU计数器preempt_count (3)自旋锁的忙等待的实际意义是:尝试获取自旋锁的另一个进程不断尝试获取被占用的自旋锁,中间只pause一下! (4)在抢占式内核的spin_lock宏中,第一次关抢占,目的是防止死锁(防止一个已经获取自旋锁而未释放的进程被抢占!!).而后又开抢占,目的是让已经释放自旋锁的进程可以

Web响应式设计中应避免的八大误区

开发一个带有响应式交互设计的网站变得非常有意义,因为其可以在不同的设备运行,因此,你可以节约针对不同平台开发不同网站的成本.但是,要做最大限度相应的网页设计,有些误区你应当避免. 不要优先为桌面版设计 开发者通常会犯的一个常见错误是,但他们设计网站时优先考虑桌面版,因为在这些人严重,将基于桌面版的网站转变为针对其他设备的响应式web设 计 是件很轻松愉快的事情.但是,这个发生在计划规划阶段的错误本身会变成一个非常巨大的问题.甚至会造成返工,当然,大量的错误也会蔓延出来. 然而,基于移动设备开发网