基于时间加权svm的指数优化复制策略

1 引言

指数追踪,利用某些金融资产组合去追踪某一股票指数,指数型基金核心技术。  目前主要有两种指数复制方法 基于两种假设 一:历史能够重演,在过去一段时间能构造历史追踪误差最小的,未来也将是最优,现在大多数指数复制类型为此类。二:从统计角度,找到与目标指数具有最大相关 具有协整关系的股票组合,保证未来表现与未来尽可能一致。

从股票数量复制角度,分为两种,完全复制和不完全复制,完全复制按照指数构造方式购买成分证券,但市场时序上变化迅速,造成成本高,逐渐不被使用。不完全复制根据优化方法寻找成分证券及其投资权重。

2模型

先引入模型变量

模型的构建:

至此,我们就可以得到了如下的一个回归问题

w(it)表示第i支股票t时刻的权重,如果将其处理为与时间有关的,则此线性回归问题将变得非常复杂,难以处理,为对此优化,我们采用固定比率策略,即w(it)=w(i)。这样有两个好处,一,从策略角度,为一个追涨杀跌策略,保证组合的流动性。二,模型简化为一个二次规划问题,能够很容易的求解。

至此,将指数追踪转为了一个多元线性回归问题。

传统线性回归方法为最小二乘回归,将损失函数选择为均方误差:

                                                                           (*)

(*)式表示了学习过程的经验风险,传统理论认为,经验风险最小,即模型未来预测能力越强,但现在考虑过拟合情况,使用传统机器学习中的svm,其具有较好泛化能力,采用结构风险最小策略,即参数量越少越好,同时参数越接近0越好,重新定义我们的损失函数:

其中ε为松弛变量,是一个接近于0但大于0的数,它的大小控制了svm中支持向量的个数,为一个超参数,需要人手工设计。

现在我们的目标函数即为:

最小化第一项,代表最小化结构风险,同时能代表svm中的间隔最大化,即有最好的预测能力;最小化第二项表示最小化经验损失,其中 λ为不同时期的经验损失的权重,金融中,越接近现在的,认为其含有较多未来信息,需要对现在的经验损失提高权重,为此我们采用基于指数加权方式来计算 λ

其中α同样为一个超参数,需要人为设计,再次,我们设定为1。

至此我们的目标函数已经建立起来,接下来,就是对约束条件的讨论:

自然有的两个边界为资本预算以及投资比例:

           

从管理方面需要考虑股票的数目,数目越大,管理成本和难度越大,同样选取一个超参数k,其代表投资组合内最大股票种类

同时限制 z 为0 1变量,为0即不进入组合,为1即进入组合。

以上讨论了约束条件和目标函数,最终我们得到了我们的指数复制模型:

3 实验验证

从鲁棒性和样本外追踪效果来看,优于Ruiz-Torrubiano模型

4 思考与探索

一,借助于svm中松弛变量以及支持向量的思想,进一步提高了模型泛化性能;

二,时间加权,更加准确

想法:

1 svm中更为强大的是核技巧,怎么将核函数应用于其中,去更好的提高泛化能力

2 模型中有几个需要人为去指定和设计的超参数,依赖于人的经验,如何去智能调参,可能参考现在深度学习的重要方向 元学习 对其的经验损失中的超参数 怎么类比到深度学习中的正则化项

3指数复制中一个重要问题为基金按模型执行策略时,自身参加到了市场中,自己也对市场产生了影响,如同得到了解析解,但实际计算数值解时,发现其数据有噪声,导致数值解不稳定,最终成为了一个不适当问题,如何将这种行为考虑进入模型中,可以参考一下我之前讲解的GNN的思想,通过寻找稳定解去解决一部分问题

4不同时期,市场有着不同风格,可以认为数据不是同种分布,而机器学习模型都假设数据有着同一分布,可以将市场分割为不同周期,每个周期有着不同的参数,以往数据更多是去验证模型的优越性,而模型参数更多依赖于近期数据。

以上就是我对徐凤敏教授《基于时间加权svm指数复制模型和实证分析》的浅解,期望做她的研究生,做更深一步的研究!!

原文地址:https://www.cnblogs.com/shenliao/p/9104433.html

时间: 2024-10-10 12:34:56

基于时间加权svm的指数优化复制策略的相关文章

Tair LDB基于Prefixkey的范围查找性能优化项目中期总结

"Tair LDB基于Prefixkey的范围查找性能优化"这个项目刚好进行了一个月,这一个月主要是熟悉项目.掌握项目和提出设计方案的过程,下面从几个方面总结下个人在该项目上所做的工作及自己的个人所得所感. 项目工作简单总结 下面是对阶段性的成果进行总结,并附有每个阶段的总结报告. 1. 项目实施计划的确定 不管什么类型的项目(大.小,难.易),在项目开展之前都应该有个可实施的计划,一方面能够确保项目的进度,另一方面也能防止有些人三天打鱼两天晒网的心态.在导师的细心指导下,我们确定了下

基于页面染色技术的内存数据库访问优化方法

本发明公开了一种基于页面染色技术的内存数据库访问优化方法.该方法首先将弱局部性数据集的所有数据页面的访问顺序按页面颜色进行排序,并将所有数据页面按页面颜色进行分组,然后按页面颜色分组的顺序扫描弱局部性数据集的所有数据页面.进一步地,预设若干具有相同页面颜色的内存页面作为页面颜色队列,该页面颜色队列用作内存页面被加载入CPU缓存之前的内存缓存:弱局部性数据集的数据页面首先通过异步方式进入页面颜色队列,然后再被加载到CPU缓存中完成数据处理.本发明能够解决内存数据库应用中无法依赖页面颜色为进程.线程

Tair LDB基于Prefixkey的范围查找性能优化项目测试及完成总结报告

项目这周就截止了,这算是我第一个有导师指导的真正意义上的C++项目,项目基本完成,想要实现的功能也已经实现,并做了大量的性能测试.不过这对于业界来说,可能完成的还不够成熟,还有许多待改进的地方,还不能马上投入使用,还需要进行严格的考验,毕竟tair的应用场景太重要了,不容一丝疏忽.但于我个人而言,帮助还是挺大的,不仅是多了一次有价值的项目经验,更是学到了一些项目之外的东西,比如计划的重要性,惰性的控制,时间的分配管理(找工作与项目进度产生冲突)等.好了,不多说了,在这最后一篇总结报告里首先给出性

Tair LDB基于Prefixkey的范围查找性能优化项目之后续问题解决记录

项目是按照"Tair LDB基于Prefixkey的范围查找性能优化项目提议方案"的步骤一步步完成的,目前方案中提出的三个重点问题已经全部解决,如下所示: 如何获取key的prefix_size问题:Tair LDB基于Prefixkey的范围查找性能优化项目之如何提取key的prefix_size 如何建立prefix bloomfilter:Tair LDB基于Prefixkey的范围查找性能优化项目之如何建立prefix bloomfilter 如何在get_range过程中使用

机器学习经典算法详解及Python实现--基于SMO的SVM分类器

原文:http://blog.csdn.net/suipingsp/article/details/41645779 支持向量机基本上是最好的有监督学习算法,因其英文名为support vector machine,简称SVM.通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解. (一)理解SVM基本原理 1,SVM的本质--分类 给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些

Tair LDB基于Prefixkey的范围查找性能优化项目之如何使用prefix bloomfilter进行过滤

项目是按照"Tair LDB基于Prefixkey的范围查找性能优化项目提议方案"的步骤一步步完成的,目前已经解决了前面两个问题: 如何获取key的prefix_size问题"Tair LDB基于Prefixkey的范围查找性能优化项目之如何提取key的prefix_size". 如何建立prefix bloomfilter"Tair LDB基于Prefixkey的范围查找性能优化项目之如何建立prefix bloomfilter" 今天来继续解

OpenCV中的SVM參数优化

SVM(支持向量机)是机器学习算法里用得最多的一种算法.SVM最经常使用的是用于分类,只是SVM也能够用于回归,我的实验中就是用SVM来实现SVR(支持向量回归). 对于功能这么强的算法,opencv中自然也是有集成好了,我们能够直接调用.OpenCV中的SVM算法是基于LibSVM软件包开发的,LibSVM是台湾大学林智仁(Lin Chih-Jen)等开发设计的一个简单.易于使用和高速有效的SVM模式识别与回归的软件包. 网上讲opencv中SVM使用的文章有非常多,但讲SVM參数优化的文章却

基于时间的 SQL注入研究

SQL注入攻击是业界一种非常流行的攻击方式,是由rfp在1998年<Phrack>杂志第54期上的"NT Web Technology Vulnerabilities"文章中首次提出的.时过境迁,相关SQL注入的技术和工具都进行了不断的发展和演化.目前 SQL注入漏洞已经是信息安全的一大领域,无论是小到个人网站,还是大到电子商务网站,都或多或少的存在SQL注入漏洞.为什么SQL注入漏洞会屡禁不止,原因就在于要想防御SQL注入漏洞,需要对SQL语句.业务流程行为.各种主流数据

基于实验六对基于时间抽取随机不同数的算法研究

实验报告链接: https://www.cnblogs.com/nnn13579/p/10992122.html 对于基于时间抽取不同数,容易出现: 这是某位同学的实验结果. 当中使用了这样的语句: srand((unsigned)time(NULL)); 和下面这条是一个效果: srand((int)time(0)); 问题就出在这里. 原因很简单,计算机运算速度很快,精确到秒对于计算机来说太大了. 那么将int改成double是否有效解决呢? No,除非你用的是Linux系统的php,精确到