社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

机器学习在金融量化领域的失败原因

学说平台 • 1 年前 • 247 次点击  




   

   

   

   

量化金融领域的模型失败率很高,其中的机器学习更是如此,一起读《advances in financial machine learning》


   

   

   

     


01

机器学习


       

         

机器学习正在彻底改变我们生活的方方面面。直到现在,依然是只有专家才能通过使用机器学习算法来完成任务。就金融领域而言,采用这样一个具有颠覆性的,并将改变人们坚持了几十年的投资方法的技术,令人尤为心潮澎湃。这本书将对我在过去 20 年中使用的可靠的机器学习工具进行科学解释,而这些工具也帮助我为那些需求最复杂的机构投资者管理了大规模的基金


有关投资的书大多分为两类。一类书的作者用极其简化的数学方式描述了在现实中不存在的情况,对其阐述的东西并没有实践过。只是因为在逻辑上是正确的原理,不一定意味着在现实世界中就能行得通。另类书的作者提供的解释缺乏逻辑严密的学术理论的支撑,不能使用正确的数学工具来解释实际观察,他们的模型在实现时就会出现过拟合并失败的结果。学术性的调研和报告与金融市场的实际应用脱节,很多交易或投资领域中的应用也不以正确的科学方法为基础


 作者写本书的动机源于很多投资者无法理解机器学习在投资应用中的复杂性。这一点在那些拥有完全支配权的投资公司向“量化”投资领域转型时尤为突出。我担心他们的高预期很难达到,不是因为机器学习失效了,而是因为他们用错了机器学习。在未来几年,很多公司可能会利用来自学术机构或者硅谷的现成的机器学习算法进行投资,我预测他们将赔钱(相对于更好的机器学习解决方案而言)。战胜群众的智慧比识别人脸或者驾驶汽车难得多。通过本书,我希望你能学会如何应对一些挑战,这些挑战使得金融成为机器学习算法难以攻克的领域,比如回测的过拟合问题。金融机器学习已成为一门学科,与标准机器学习既有关联又有区别,本书将为你全面介绍金融机器学习。


       

       



02

西西弗斯范式


很多公司采用全权委托投资组合管理人模式去做量化或机器学习的项目,最终结果都很糟糕。老板的心态是,全权委托投资组合管理人都在用这种方式,那我们就用这种模式做量化吧。雇用50个博士,要求他们每人在6 个月内制定一套投资策略。这个方法往往事与愿违,因为每个博士都会疯狂地寻找投资机会,结果通常是:(1) 拥有亮丽回测结果的过拟合; (2) 标准的因子投资,一种低夏普比率(SR)的过饱和投资,但至少有理论支撑。这两种结果都会让投资委员会失望,致使项目最终被取消。即使有 5 个博士发现了有效的投资策略5个人的收益也无法支付 50 个博士的费用,因此这5个博士也要另谋高就这就是所谓的让每个员工日复一日搬石头上山的西西弗斯 (Sisyphus)范式,这种范式的投入产出比极低。




03

元策略范式

个人构建一套成功机器学习策略是非常难的,你会不停的尝试   和失败,构建上百套策略,团队协作的成功率大于单打独斗。

构建一套成功机器学习策略是非常难的,你会不停的尝试   和失败,构建上百套策略,团队协作的成功率大于单打独斗。

过拟合

首先,过拟合回测可以说是数学金融领域中最重要的开放性问题。这相当于计算机科学中的“P与NP”问题。如果有一种精确的方法来防止过度拟合回测,我们就能将回测结果视为现金,而不仅仅是推辞。对冲基金会有信心地分配资金给投资组合经理。投资者风险更低,愿意支付更高的费用。这会解决很多纸上谈兵或者诈骗的情况。


第二个原因是机器学习是你研究工具箱中的一个强大武器,但也是一个危险的武器。如果回测过度拟合在计量经济学分析中是一个问题,那么机器学习的灵活性就会对你的工作产生持续威胁。在金融领域尤其如此,因为我们的数据集更短,信噪比更低,并且我们没有实验室可以在控制所有环境变量的情况下进行实验(Lopez de Prado 2015)。一本不解决这些问题的机器学习书可能对你的量化生涯造成更多的伤害而非受益。



   


04

机器学习和数据


        

         

金融市场交易可能是一项充满挑战且复杂的工作,条件不断变化,需要考虑的因素众多。随着市场竞争日益激烈,保持领先地位是一场永无休止的斗争。近年来,机器学习 (ML&DL) 取得了一些进步,尤其是GPT令人惊艳。人们可能会想在量化中使用机器学习或者深度模型,不幸的是,结果常常很糟糕,事情并不那么简单。由于金融时间序列中经常观察到许多不良特征,因此对金融时间序列进行建模可能具有挑战性。这些特征包括:

1.过拟合:金融建模中可以使用多种特征,但很难确定哪些特征能够真正预测未来的行为。这可能会导致过度拟合,即模型在训练数据上表现良好,但在测试数据上表现不佳以及部署后的实际数据。


2.非平稳性:金融时间序列通常表现出非平稳性,这意味着该序列的统计属性随时间而变化。这使得使用线性回归等传统技术(假设数据平稳)对序列进行建模变得困难。


3.异方差性:金融时间序列通常表现出异方差性,这意味着序列的方差随着时间的推移而变化。这可能会使估计序列的真实方差变得困难,并可能导致模型参数的估计有偏差。


4.自相关: 金融时间序列通常表现出自相关性,这意味着该序列在一个时间点的价值与其在另一个时间点的自身价值相关。这可能使得使用假设独立的技术(例如线性回归)对序列进行建模变得困难。


为了克服这些挑战,金融时间序列的机器学习模型的设计应考虑这些特征,无论是在模型本身还是通过转换数据。例如,我们可以使用对非平稳性和自相关性具有鲁棒性的 ML 技术,通过结合正则化来减少过度拟合,或者使用考虑异方差性的技术。

   


        

        



05

金融数据结构

金融数据包含了方方面面,Wiley总结为,基本面数据、市场数据、分析数据、另类数据,我们先不讨论使用特殊方法(例如nlp)处理的表格类或文本类数据,专注于市场数据。市场数据包含了发生在交易所的所有交易活动的数据。市场数据 (Market Data) 包含交易所有类型产品时收集到的数据,包括现货价格 (spot price)、期货价格 (futures price)、利率 (interest rate)、汇率 (exchange rate)、波动率 (volatility)······                                         


Bar

为了将机器学习算法应用到我们的未结构化数据上,我们需要对此数据进行解析,从中提取出有价值的信息,并格式化存储。大部分机器学习算法都需要对数据进行对象化特征化。这里一般我们叫做bar,我们在交易所看到的k线就是bar的一种,称之为等时bar,即按照固定的时间间隔来从交易tick中采样,比如每分钟,每小时。我们来看看其他方式的采样:


TimeBar:基于预定义的时间间隔,例如一分钟或一小时

每个条形代表该时间间隔内发生的交易活动。例如,一分钟时间柱将显示一分钟内的开盘价、收盘价、最高价和最低价。


TickBar:基于发生的交易数量。每个柱代表指定数量的交易

例如,100 个点的柱形图将显示该柱形图中发生的 100 笔交易的开盘价、收盘价、最高价和最低价。


VolumeBar :基于交易的股票总量。每个条形代表指定的股票交易量

例如,10,000 股的成交量条将显示总交易量达到 10,000 股之前发生的所有交易的开盘价、收盘价、最高价和最低价。


DollarBar :基于交易股票的总美元价值(即货币换算价值)。每个条形代表交易股票的指定美元价值。例如,10,000 美元的柱形将显示在交易股票的总美元价值达到 10,000 美元之前发生的所有交易的开盘价、收盘价、最高价和最低价。


据统计20%的时间包含了80%的价格变化,TimeBar 存在明显的问题。当市场成交活跃时,它需要等待到固定的时间才能采样,但这部分是真正有价值的数据,而市场上大部分时间都是无用的随机震荡,所以TimeBar存在欠采样


这个问题可以用TickBar解决,当市场成交活跃时,TickBar会更频繁地采样,但是TickBar存在的噪音更多,并且存在高频欺骗,我们暂时不讨论高频交易,我们可以用DollarBar来替代Tickbar来规避一些问题。


但是DollarBar的采样阈值应该怎么确定呢,我们可以使用动态的窗口历史均值来确定我们想要的阈值。


06

统计学检验


        

        


在机器学习中,数据贴近正态分布(也称为高斯分布)通常是有益的,因为许多机器学习算法和一些统计推断假设数据服从正态分布。


Jarque-Bera 检验是一种拟合优度检验,用于检验数据的偏度和峰度是否符合正态分布。它通常用于检验回归分析中残差的正态性假设。检验统计量计算为样本量与样本偏度和峰度的乘积。

Shapiro-Wilk 检验是另一种常用的正态性检验。它通过将观察到的分布与正态分布的预期分布进行比较来测试数据是否呈正态分布。检验统计量计算为在正态性假设下观测值与预期值之间的平方差之和

另外我们可以直接可视化来观察数据的分布:

可以看到红色的DollarBar和蓝色VolumeBar更接近虚线的正态分布。


         



07

information-driven


       

         

要了解信息驱动,就要明白信息是什么,信息意味着informed traders-知情交易者 进场了,市场微观结构发生了变化,比如买方和卖方之间imbalance,宏观上体现为趋势,微观上体现为orderbook(盘口)和trade(成交单)分布发生了改变,而信息驱动线的目的是在新信息进入市场时进行更加频繁的采样。


       

       



08

imbalance

  假设有一个价格时间序列   其中  是与时刻  t  的价格, 是与时刻  t  有关的成交量。“分时规则” 定义了一个序列 其中:


这个就是衡量买卖不平衡的一个序列, 公式意思就是如果这个tick价格比前一次交易价格高,我们把这个tick设为1,低就是-1,如果一样那么就等于就是上一次判断的结果,我们把结果累计加起来就得到了当前的不平衡度: 


如果考虑成交量或者货币价值便可得到下式:


我们可以计算的期望值:




是每个 bar 含有 tick 数的期望

是该 tick 是买方的无条件概率

是该 tick 卖方的无条件概率

除了买卖不平衡,我们还可以分别对买卖进行计数,这是因为我们希望在任意一方的量价超出预期时都能够进行线采样,比如大户大单进行操作时很有可能会进行冰山指令或者拆单方法对盘口扫货,这样采样能够及时发现大户的操作。那么采样触发方式如下:


考虑量价,则:



即任意一方超出设置预期就开始采样。



09

变点理论


       

       


书中讲了这么多采样方法,其背后的原理就是统计学中的变点理论:

变点是指在一个序列或过程中,当某个统计特性(分布类型、分布参数)在某时间点发生变化,随机过程异质,称该时间点即为变点。金融市场不同时期的分布是不一样的,因此检测变点是个重要的问题。

CUSUM

CUSUM 过滤器是一种质量控制方法, 用于对偏离目标值的测量所得质量的平均值的变化进行检测。对于由一个局部平稳过程中产生的 IID 观察 , 我们设累积和为:



原理:如果一个时间序列有固定的零均值,那累计和(cumulative sum)也趋向于一个零均值正态分布,如果累计和越来越偏离零均值正态分布,则一个change point发生了。一般会先把时间序列转化为标准正态分布。

举一个例子:假设我要观测一个随机变量 ,它的均值为 ,在正常情况下,随机变量的观测值 应该在 附近上下浮动,那 就也会在0附近浮动(因为 可能有正有负),但是当 大于某个阈值 后,说明观测值总是偏大,可能出现了异常,使得被观测的变量不再服从以前的分布。当出现异常后,需要对异常进行处理,然后 ,重新开始统计累积和。



       

         



来源:sigma -量化与自由职业






为了我们不走散,学说请你加星标


疯狂暗示↓↓↓↓↓↓↓↓↓↓↓


   





Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/166445
 
247 次点击