据我所知,已经用的很多了,虽然还不到泛滥的程度,但是不管是Top10的量化私募还是很小的迷你量化私募。多多少少涉及到这一块,比如像我们这个只有几个人迷你小量化私募,已经用机器学习三年了。我认识的几家管理规模在1-5亿的小量化私募用的比我们还久,最早的一家(我朋友开的,是他带我入的量化与机器学习的门)15年就开始用了,18年跑了一年,正收益,远远跑赢很多公募。
我们今年初开始的一个账号,上半年收益12,回撤2%不到。
下半年发了产品,从八月开始用1/3仓位做安全垫,然后九月份回撤较大,达到了5%,安全垫被打漏了,之后慢慢爬坡重新出发,现在回到净值1.038。
看了很多答案,感觉都好牛逼,都好懂机器学习,文章中到处都是英文,我们啥都不懂,只会调用下库。我们的团队都是很普通的开发人员,我们没有985,也没有高学历,也没有人得过什么国际大奖,也不太懂数学,很low的草根团队,仅仅就是使用人家已经做好的工具。
我们能做的就是就是在数据上,策略上做文章,相对来说,这是我们能控制的。我觉得这就是一个实验学科,大家都是摸着石头过河,就是不断去尝试。保持客观,不带入主观的想法,有疑问,就去试,用数据说话。
我们测试了很多的模型做出来的正确率其实都差不多,不会有明显的差距,到最后我们发现,真正的关键是在如何使用模型上。在学习的时候做别的项目的练习题可以做到80,90的准确率,结果跑到股票上就低得太多了,但是我们很快不纠结了,能用就行了,模型能帮我们赚钱就行了,管它准确率是60,70还是50,40,能用就行。很幸运,这是一条正确的思路。
-------------- 2021年11月25日更新 --------------
正好前几天和一位量化基金公司老板吃饭,我觉得席间讨论的内容也可以拿过来更新一下。
他们管理的资金规模和我们差不多,都是5亿一下,都是小鱼,所以互相也没有什么敬畏之心,席间对是否要去研究算法的内核中的数学原理,做数学方面的优化做了“激烈的讨论”,他的观点是这是最重要的,模型准确率低就是因为我们不去做这方面的工作。我的观点是我承认其重要,但是从成本上来说,我们招不起也养不起能做这方面优化工作的大佬。我们的特征值,数据,策略,工程方面,都有大量需要优化的地方,这些地方的优化成本更低,也能起到一定的效果,至少现在效果还在可见的提升中。事实上我觉得,我们对现有的(工具)库的使用和熟悉程度之低,还轮不到去拼优化数学内核的程度。
这位老板以前是做人工交易的,现在刚找了个人做机器学习,他不知道,要做出一套完整的工程需要多少工作量,需要多少优化的地方,过去两年,我们从0开始开发了一整套系统,光我就写了7万多行python代码。当然,含金量是很低的,因为我的PYthon水平很差,基本上就是调用一下库的水平。从未看过任何库的源代码,更别说一点都不懂设计模式。但是一套自动化系统要跑起来,真的需要很多的工作。连个框架都没有,就在那里空谈优化数学,这实在可笑。
相比写代码,最令人崩溃的就是训练,我们的系统一共有48组模型需要训练,每组模型训练时间为2-4小时(GPU为2080s)。每N组模型可以共用一套样本数据集,构造一套样本数据集需要8-10小时,但是每组模型的特征值是不一样的。手工训练就太累了,需要开发一套分布式自动训练系统,安排任务之后自动做样本,自动训练,自动评估,自动做各种回测,自动上线。
所以我跟这位老板说,你要做好打持久战的准备啊~~我估计他是没有听懂我说得这句话。
要解释机器学习能否以及怎样应用于量化交易,是一个反复以不同面貌出现在我的时间线的题目,同时也注定是个充满争议的题目。我们先把问题简化,设定市场上总共有三种视角:
所以楼上各位提到的过拟合是广泛存在的问题,但这个锅不应该让机器学习来背,而是你设定的训练目标与相差太远。机器学习只是帮助你做优化和计算而已。
再回头谈一下我对机器学习的理解。机器学习经过了这么多年,我自己概括下来也就分这么几块内容:模型表示,目标,优化求解,泛化证明。由于过去的机器学习领域重点关注多在目标和求解上,也就是为了实现计算而牺牲了模型表示。而事实上我觉得模型表示和优化计算本来就是个互相trade-off的关系,比如作为机器学习里非主流的一支,概率图模型就恰好反过来,为了实现模型表示而牺牲了计算。
而量化交易是对模型表示和计算都是有要求的,所以机器学习在量化交易的应用上始终面临着两难。但这绝不是一个无解的两难,因为你既可以设计一套白箱的交易模型,而只让黑箱的机器学习算法承担其中部分环节的优化工作,也可以用一个长于表示的机器学习模型作为交易引擎,而计算方面采用一些针对具体问题的启发式算法,至少能让一部分参数免于费时费力的暴力优化。
所以每当我们试图运用机器学习做交易时,上帝一定会发笑。可还能怎么办呢?我们只能把机器不停地训练下去。这就像是《西西弗斯的神话》,这个经加缪演绎过的隐喻无非就是告诉我们,在量化交易上使用机器学习真的没有意义,除非我们自己亲手去构建一个意义。
在我看来, ML用于金融数据最大的问题是信噪比太低,“同分布”的数据量太少。 其他领域ml效果好的往往都有比较确定的模式, 只是模式很难规则化而已。 比如人脸识别, 虽然很难通过规则话程序语言描述人脸,但100个普通人来识别人脸,错误率非常低。说明这里是有一个规律性pattern的。这样的话,只要给出足够数量的数据,模型性能会显著提高。另外一个例子是智能驾驶,你并
不需要if else编程遍历到所有可能情况,只需要让传感器采集到足够长时间多地域的数据,自动驾驶能够很好的处理这些情况。 以上的例子从数据角度来说,都符合pattern相对固定,数据充足的,信噪比高的特征。这也是ML方法最适合的地方。
而即使是这样,在做预测的时候也需要主动选取特征,feature engineering也是一门巨大的学问。有人也许会说最近很火的cnn/deep learning, 不是可以by pass feature engineering这些,直接靠数据和计算力暴力撸么。 我是这样理解的, 人类识别特征和模式的能力远高于计算机, 如果需要让计算机逼近取代人的调参和feature engineering经验,那么你所需要的数据量是非线性增长的。很多通常运用ML的场所,数据量本身不是制约,或说,数据量的制约取决于你有多大的决心去获取数据。而机器运算能力的同步增长让更是让模型能够处理的数据大大提升。在这种情况下,deep learning才火起来。
然而金融世界里,事情并没有这么美好,最大的制约,在我看来数据是不足的。有人可能会笑,说tick level data,哪怕国内3秒一跳的股市也有4000多行一天,怎么能算是数据不足呢。
这里假设也用之前开车的例子来解释。金融世界里,如果你想训练出这么一个老司机,那么你会发现这辆车一会在人行道上, 一会倒开,一会儿飞起来, 前一刻有用的规律不一定能够稳定到下一刻。 又好比给一张股票k线图,100个人可能有100个说法, 语音识别,图像识别领域,不会出现这么低的识别度的。 所以,对一个正常开车的老司机,你坐副驾驶一个月能够总结出他开车方法,那么对于金融世界里这种逗逼老司机,又要积累多长时间的数据才能总结出它的行为模式呢。
也就是说金融时间序列里,训练集发现的pattern可能并不稳定, 也许只是过拟合的噪音, 哪怕确定不是噪音,pattern本身也会演化。这两个月的市场,和前两个月的市场,明显性状不一样。有个东东叫regime switch...哪怕你做的日内中高频,相对统计性状不受基本面太大影响,日度的波动率的变化也会有明显的变化,而这对你的pnl影响是非常直接的。
目前为止,在金融数据这块我个人还是偏好线性的描述,规则化的描述,因为这样即使错了,我知道错误在哪里,利润来源在哪里。 哪怕需要更复杂的信号组合,我也偏向random forest 或者svm 这种相对不那么容易过拟合的模型. 当然,这只是我个人的看法, 如果有其他的思路,也欢迎指出。
这是我看到的最准确的总结。
总的来说,就是中国的高考相对公平,所以性价比极高,所以其他活动都可以适当让步。
这是我看到的最准确的总结。
总的来说,就是中国的高考相对公平,所以性价比极高,所以其他活动都可以适当让步。
这是我看到的最准确的总结。
总的来说,就是中国的高考相对公平,所以性价比极高,所以其他活动都可以适当让步。
这是我看到的最准确的总结。
总的来说,就是中国的高考相对公平,所以性价比极高,所以其他活动都可以适当让步。