2023-07-25 20:14发布
中国股市创立以来的二十多年间,股市从公开的投融资平台,变成了许多股民一夜暴富的梦境。股市沦为赌场,散户们被当作韭菜。抛开牛市的狂热和股灾的哀嚎,我们需要静下
你还在看电脑面前盯盘看K线吗? 你还在为一次亏损寝食难安,为一次盈利欣喜若狂吗? 如果是,那也许你就OUT了。随着量化交易的蓬勃发展,一群统计狗、程序猿们已经开始使用计算机模型进行交易了,这些程序用不休眠,无人值守,24小时为你监控市场,产生利润。真有那么好的事吗?这不就是印钞机了吗? 请看下面分解。
一、你是否坚信市场的有效性?
量化交易的获利来源于市场的无效性。如果市场服从随机游走,那大部分金融机构都可以关门了,还炒什么股啊。如果市场是有效的,那可能一个人一辈子都碰不到大牛市。持续不断的上涨的K线排列,概率该有多小啊。一个比较现实的假设是,市场在一定程度上是无效的,单纯的价格序列中存在大量的获利机会。
二、概率的游戏
量化交易是概率的游戏,一个交易策略是否能够盈利,关键看胜率和盈亏比。胜率是盈利次数占总交易数的百分比,盈亏比是平均盈利和平均亏损的倍数关系。这两者需要平衡,也很难兼顾。例如,玩彩票盈亏比很高,胜率很低,所以总体是亏损的。
三、一个概率取胜的例子
上图是个高盈亏比低胜率策略的策略。虽然盈利的交易很稀疏,但是却远离零点,亏损交易很密集,但紧贴零点,所以从右边的资金曲线上看,策略总体上是盈利的。所以,量化交易者会坦然的接受亏损,也会正确的看待盈利,它们只是交易系统的一个部分。
四、量化交易策略的构建
4.1思路部分
下面用一个例子来说明一个交易策略的生产过程。某交易员发现,价格突破了一些关键点位后,会向着突破的方向持续发展。于是我们设计一个简单的突破策略:当价格突破近期高低点时,相应的做多或做空。
4.2准备条件
接下来,就要进行进一步细化,做成一个模型。需要回答这么几个问题:1、时间框架是怎样的? 小时线、日线还是周线?
2、如何定义高低点? 往回看几跟K线?
3、进场后如何止损? 固定点位止损还是ATR(平均真实波动)止损?
4.3代码实现
将上述问题具体化以后,就用程序代码将它们予以实现。国内比较普遍使用的是tradeblazer和multicharts。当然,技术实力较强的交易者也可以选择自行开发交易平台,用java,python等语言予以实现。
4.4参数优化
在策略构建的初期,一些参数是待定的。如均线的K线条数,止损点位,止盈点位等。这些参数都可以用遍历的方法进行优化,也就是说,穷举各种参数的组合,找到使盈利最大化的那一套参数。
4.5继续优化
这里,我们对止盈点位和止损点位进行了优化,绘制了一副3D优化图。X和Y轴分别代表被优化的参数,即止盈点和止损点,Z轴代表目标函数,即盈利。我们可以看到,盈利在不同的参数组合情况下高低起伏,呈现出了一个个山峰、平原和低谷。那么,我们是否应该选择那些山峰呢?其实不是。因为选择这些山峰可能会带来一个问题,就是过度拟合。表现过好的参数组合满足了过去市场的某种特殊情况,只要参数发生微小变化,策略表现就会急剧下降,这就是”山峰”的含义。相比而言,目标函数的“平原”区是更为稳定的参数,因为参数在这个范围内变化,策略表现是稳定的。所以我们要选择平原。下面这幅图是参数经过优化后的策略表现,资金曲线图表现出剧烈的波动,这反应了策略思路本身存在缺陷,高低点的突破并不能对价格起到很好的预测作用,参数优化并不能解决策略思路本身的问题。
五、回测
5.1样本内回测
5.2样本外回测
如果我们找到了一个可行的策略,又选择了合适的参数,策略回测表现让人满意,下一步就是样本外测试了。样本外测试的目的,是用新的数据对策略进行检验,考验策略的盈利能力。在之前的测试中,我们已经使用了一部分的历史数据。策略是在这些历史数据中被“训练”出来的,很容易出现过度拟合的问题。极端情况下,只要参数数量足够多,我们是可以轻易的通过历史数据训练出100%胜率的策略。但这样的策略并不具有通用性,如果用新的数据测试这样的策略,结果一定是糟糕的。
这就是我们进行样本外测试的原因。样本外数据也是历史数据,只是我们在测试初期预留出来的,没有碰过,是“干净”的数据。如果策略在新数据下的表现不好,那么这样的策略仅仅是过度拟合的结果。上图就是一个过度拟合的例子,策略盈利在样本外数据中急剧下降。
5.3蒙特卡罗测试
下一个测试是蒙特卡洛实验。在试验中,我们模拟未来市场可能出现的各种变化,考察策略是否足够健壮。这些变化可能是价格的变化,也可能是参数的变化,还有可能是交易顺序的重新排序,不一而足。借助实验软件,我们可以进行上千次的重复实验,看看策略是否还能生存下来。上图是蒙特卡罗的实验结果,红线代表原市场条件的测试结果,绿 {MOD}代表最恶劣的5%的市场条件,紫 {MOD}代表实验平均结果。可以看到,策略在最差的5%情况下,仍然能够维持盈利,说明策略是健壮的。
六、策略举例
6.1三均线策略
下面分别介绍一下策略的种类。从策略的交易思路看,大致可分为趋势策略(动量策略)和逆势策略(均值回转策略)。两种策略分别适应于不同的品种和市场条件。趋势策略的常见例子是均线交叉策略。短均向上突破长均做多,向下突破做空。趋势策略捕捉了市场的冲动情绪,当价格上涨时,大量交易者非理性的跟进,价格下跌时,人们又急剧恐慌。趋势策略者就可以“顺应趋势”,追涨杀跌,让“趋势成为朋友”。
6.2布林带策略
逆势策略则相反,逢高卖出,逢低买入。在某些市场的某些时段中,价格确实存在这样的高低震荡的情况,逆势者容易利用这样的价格属性频繁的积累微小利润。但是,市场总是趋势与震荡并存,我们很难判断市场何时震荡,何时趋势,有没有解决办法呢?当然有,如下策略。
6.3跨期套利策略
我们要把思路打开,将目光从单个品种转向多个品种的组合价差上,也就是常说的配对交易。例如不同到期日的期货合约价差就存在高度的相关性。例如,我们将两个不同到期日橡胶合约的价格序列放在一张图上,就可以看到他们之间的高度相关性。虽然两个合约各自的价格呈现出趋势属性,但它们的价差是稳定的震荡属性。
我们通过震荡策略,交易两者的价差,就可以获得比较稳定的收益。价差组合的方式有很多,并不局限于两个品种,我们可以通过下列通用公式,配置出无数个可能盈利的价差组合。哪个组合式可以盈利的呢?需要我们自己去挖掘。而目前我们量化家的策略超市,直接把有效的策略提供给选择使用。
七、风控管理
7.1马丁格尔仓位管理
一个优秀的策略不仅能给我们带来持续稳定的收益,同时在风控上的把握也是极为关键。正如一辆汽车在量产之前需要持续不断的测试同样的道理。而在投资市场中,只要超出无风险利率,就会存在波动,存在波动,就有可能带来亏损,所以你会发现,哪怕你投资一个极为优秀的基金或是股票,每年所带给你的年化回报也并非一成不变的,甚至有时候,行情不好,遇到熊市还会出现不小的亏损。
事实是任何投资项目都应该首先关注风险。
而量化交易对于风控的把握会着重从仓位的管理出发。仓位管理,就是决定某一策略分配多少资金的问题,初学者往往过分执迷于策略思路本身的盈利,而忽略了仓位管理。实际上,仓位是量化交易最重要的环节。即使拥有了盈利的策略,如果仓位管理不当,完全可能爆仓出局。下面我们来探讨一个有趣的仓位管理方法,叫martingale.这是一种死扛型的仓位管理机制,每经历一次亏损,我们在下次交易时就把仓位放大一倍,一旦盈利,我们就把仓位恢复到初始值。例如,当经历了3次连续亏损之后,仓位数分别是,1,2,4。如果第4次交易盈利了,我们就把仓位恢复到1.martingale的资金曲线很好看,几乎是一条直线,因为通过仓位的放大,只要获得一次盈利,就可以把之前所有的亏损全部扳回。资金曲线迅速恢复。我们看看上面这幅图,是不是很让人兴奋呢?
不幸的是,天下没有免费的午餐。交易者的资金永远是有限的,但martingale的亏损却是无限的,假设连续亏损次数进一步放大,变成5次,10次,那么仓位也会急剧放大,变成32和1024,最后,因为交易者资金不足,而出现爆仓。上图是10000次martingale后出现的爆仓现象。随着交易频率增高,爆仓的几率也逐渐增大。那我们能否继续优化呢?答案是肯定的。
上图是影响爆仓概率的因素,而影响爆仓概率的参数有这么几个:
1、策略思路本身的胜率。
2、策略的盈亏比。
3、每次亏损后翻倍的倍数。
4、盈亏交易的概率分布。
5、可以想见,胜率越高,连续亏损的概率越小;盈亏比越大,每次亏损的回撤就越小;翻倍数量越大,亏损分布越集中,越容易爆仓。
我们将翻倍系数从2降低为1.6后,用在一个胜率50%,盈亏比为1.2的策略上之后,经过10000次交易。仍然没有爆仓。
总结:一个优秀的策略从逻辑的建立再到回测,再到风控的管理都是经过千百万次的回测得出的。一个看似简单的策略,全套代码几千上万多行。6个程序猿,3个金融、数学建模师,1个风控专员。还需要万次计算机寻优,回测执行,系统风险排查,模拟盘交易测试,累计收益率评测,模型定性,参数设定调优。量化交易,简约但并不简单!
八、关于人工智能
我们再来说说量化交易的新趋势----人工智能。手工交易者的技术分析,甚至是基本面分析,未来都有可能被机器所取代。这在计算机领域,叫做模式识别,通俗的讲,叫找规律。技术分析的本质就是寻找价格规律,基本面分析又何尝不是呢?有了计算机的帮助,这些找规律的事情完全可以由计算机完成,人工神经网络就是一个典型的应用案例。在上图中,我们用一些简单的数学函数,模拟出一个个的神经元。这些神经元能够从外界接受价格信息和基本面数据,经过函数转换变成输出,反射到下一个神经元,最后从右边输出。这些转换函数的初始参数是随机的,但当我们进行成千上万次训练后,这些参数得到逐渐的优化,最后生成一个准确率较高的预测模型。模型的具体原理,是我们无法从参数的数值去理解的,这相当于一个黑盒。这样的黑盒,可能可以找到我们人脑无法发现的一些数据规律,也许只是参数拟合的结果,需要一系列的测试去加以验证。
但它相比人脑而言,能够更加细致的发现一些隐秘的规律。
最多设置5个标签!
你还在看电脑面前盯盘看K线吗? 你还在为一次亏损寝食难安,为一次盈利欣喜若狂吗? 如果是,那也许你就OUT了。随着量化交易的蓬勃发展,一群统计狗、程序猿们已经开始使用计算机模型进行交易了,这些程序用不休眠,无人值守,24小时为你监控市场,产生利润。真有那么好的事吗?这不就是印钞机了吗? 请看下面分解。
一、你是否坚信市场的有效性?
量化交易的获利来源于市场的无效性。如果市场服从随机游走,那大部分金融机构都可以关门了,还炒什么股啊。如果市场是有效的,那可能一个人一辈子都碰不到大牛市。持续不断的上涨的K线排列,概率该有多小啊。一个比较现实的假设是,市场在一定程度上是无效的,单纯的价格序列中存在大量的获利机会。
二、概率的游戏
量化交易是概率的游戏,一个交易策略是否能够盈利,关键看胜率和盈亏比。胜率是盈利次数占总交易数的百分比,盈亏比是平均盈利和平均亏损的倍数关系。这两者需要平衡,也很难兼顾。例如,玩彩票盈亏比很高,胜率很低,所以总体是亏损的。
三、一个概率取胜的例子
上图是个高盈亏比低胜率策略的策略。虽然盈利的交易很稀疏,但是却远离零点,亏损交易很密集,但紧贴零点,所以从右边的资金曲线上看,策略总体上是盈利的。所以,量化交易者会坦然的接受亏损,也会正确的看待盈利,它们只是交易系统的一个部分。
四、量化交易策略的构建
4.1思路部分
下面用一个例子来说明一个交易策略的生产过程。某交易员发现,价格突破了一些关键点位后,会向着突破的方向持续发展。于是我们设计一个简单的突破策略:当价格突破近期高低点时,相应的做多或做空。
4.2准备条件
接下来,就要进行进一步细化,做成一个模型。需要回答这么几个问题:1、时间框架是怎样的? 小时线、日线还是周线?
2、如何定义高低点? 往回看几跟K线?
3、进场后如何止损? 固定点位止损还是ATR(平均真实波动)止损?
4.3代码实现
将上述问题具体化以后,就用程序代码将它们予以实现。国内比较普遍使用的是tradeblazer和multicharts。当然,技术实力较强的交易者也可以选择自行开发交易平台,用java,python等语言予以实现。
4.4参数优化
在策略构建的初期,一些参数是待定的。如均线的K线条数,止损点位,止盈点位等。这些参数都可以用遍历的方法进行优化,也就是说,穷举各种参数的组合,找到使盈利最大化的那一套参数。
4.5继续优化
这里,我们对止盈点位和止损点位进行了优化,绘制了一副3D优化图。X和Y轴分别代表被优化的参数,即止盈点和止损点,Z轴代表目标函数,即盈利。我们可以看到,盈利在不同的参数组合情况下高低起伏,呈现出了一个个山峰、平原和低谷。那么,我们是否应该选择那些山峰呢?其实不是。因为选择这些山峰可能会带来一个问题,就是过度拟合。表现过好的参数组合满足了过去市场的某种特殊情况,只要参数发生微小变化,策略表现就会急剧下降,这就是”山峰”的含义。相比而言,目标函数的“平原”区是更为稳定的参数,因为参数在这个范围内变化,策略表现是稳定的。所以我们要选择平原。下面这幅图是参数经过优化后的策略表现,资金曲线图表现出剧烈的波动,这反应了策略思路本身存在缺陷,高低点的突破并不能对价格起到很好的预测作用,参数优化并不能解决策略思路本身的问题。
五、回测
5.1样本内回测
5.2样本外回测
如果我们找到了一个可行的策略,又选择了合适的参数,策略回测表现让人满意,下一步就是样本外测试了。样本外测试的目的,是用新的数据对策略进行检验,考验策略的盈利能力。在之前的测试中,我们已经使用了一部分的历史数据。策略是在这些历史数据中被“训练”出来的,很容易出现过度拟合的问题。极端情况下,只要参数数量足够多,我们是可以轻易的通过历史数据训练出100%胜率的策略。但这样的策略并不具有通用性,如果用新的数据测试这样的策略,结果一定是糟糕的。
这就是我们进行样本外测试的原因。样本外数据也是历史数据,只是我们在测试初期预留出来的,没有碰过,是“干净”的数据。如果策略在新数据下的表现不好,那么这样的策略仅仅是过度拟合的结果。上图就是一个过度拟合的例子,策略盈利在样本外数据中急剧下降。
5.3蒙特卡罗测试
下一个测试是蒙特卡洛实验。在试验中,我们模拟未来市场可能出现的各种变化,考察策略是否足够健壮。这些变化可能是价格的变化,也可能是参数的变化,还有可能是交易顺序的重新排序,不一而足。借助实验软件,我们可以进行上千次的重复实验,看看策略是否还能生存下来。上图是蒙特卡罗的实验结果,红线代表原市场条件的测试结果,绿 {MOD}代表最恶劣的5%的市场条件,紫 {MOD}代表实验平均结果。可以看到,策略在最差的5%情况下,仍然能够维持盈利,说明策略是健壮的。
六、策略举例
6.1三均线策略
下面分别介绍一下策略的种类。从策略的交易思路看,大致可分为趋势策略(动量策略)和逆势策略(均值回转策略)。两种策略分别适应于不同的品种和市场条件。趋势策略的常见例子是均线交叉策略。短均向上突破长均做多,向下突破做空。趋势策略捕捉了市场的冲动情绪,当价格上涨时,大量交易者非理性的跟进,价格下跌时,人们又急剧恐慌。趋势策略者就可以“顺应趋势”,追涨杀跌,让“趋势成为朋友”。
6.2布林带策略
逆势策略则相反,逢高卖出,逢低买入。在某些市场的某些时段中,价格确实存在这样的高低震荡的情况,逆势者容易利用这样的价格属性频繁的积累微小利润。但是,市场总是趋势与震荡并存,我们很难判断市场何时震荡,何时趋势,有没有解决办法呢?当然有,如下策略。
6.3跨期套利策略
我们要把思路打开,将目光从单个品种转向多个品种的组合价差上,也就是常说的配对交易。例如不同到期日的期货合约价差就存在高度的相关性。例如,我们将两个不同到期日橡胶合约的价格序列放在一张图上,就可以看到他们之间的高度相关性。虽然两个合约各自的价格呈现出趋势属性,但它们的价差是稳定的震荡属性。
我们通过震荡策略,交易两者的价差,就可以获得比较稳定的收益。价差组合的方式有很多,并不局限于两个品种,我们可以通过下列通用公式,配置出无数个可能盈利的价差组合。哪个组合式可以盈利的呢?需要我们自己去挖掘。而目前我们量化家的策略超市,直接把有效的策略提供给选择使用。
七、风控管理
7.1马丁格尔仓位管理
一个优秀的策略不仅能给我们带来持续稳定的收益,同时在风控上的把握也是极为关键。正如一辆汽车在量产之前需要持续不断的测试同样的道理。而在投资市场中,只要超出无风险利率,就会存在波动,存在波动,就有可能带来亏损,所以你会发现,哪怕你投资一个极为优秀的基金或是股票,每年所带给你的年化回报也并非一成不变的,甚至有时候,行情不好,遇到熊市还会出现不小的亏损。
事实是任何投资项目都应该首先关注风险。
而量化交易对于风控的把握会着重从仓位的管理出发。仓位管理,就是决定某一策略分配多少资金的问题,初学者往往过分执迷于策略思路本身的盈利,而忽略了仓位管理。实际上,仓位是量化交易最重要的环节。即使拥有了盈利的策略,如果仓位管理不当,完全可能爆仓出局。下面我们来探讨一个有趣的仓位管理方法,叫martingale.这是一种死扛型的仓位管理机制,每经历一次亏损,我们在下次交易时就把仓位放大一倍,一旦盈利,我们就把仓位恢复到初始值。例如,当经历了3次连续亏损之后,仓位数分别是,1,2,4。如果第4次交易盈利了,我们就把仓位恢复到1.martingale的资金曲线很好看,几乎是一条直线,因为通过仓位的放大,只要获得一次盈利,就可以把之前所有的亏损全部扳回。资金曲线迅速恢复。我们看看上面这幅图,是不是很让人兴奋呢?
不幸的是,天下没有免费的午餐。交易者的资金永远是有限的,但martingale的亏损却是无限的,假设连续亏损次数进一步放大,变成5次,10次,那么仓位也会急剧放大,变成32和1024,最后,因为交易者资金不足,而出现爆仓。上图是10000次martingale后出现的爆仓现象。随着交易频率增高,爆仓的几率也逐渐增大。那我们能否继续优化呢?答案是肯定的。
上图是影响爆仓概率的因素,而影响爆仓概率的参数有这么几个:
1、策略思路本身的胜率。
2、策略的盈亏比。
3、每次亏损后翻倍的倍数。
4、盈亏交易的概率分布。
5、可以想见,胜率越高,连续亏损的概率越小;盈亏比越大,每次亏损的回撤就越小;翻倍数量越大,亏损分布越集中,越容易爆仓。
我们将翻倍系数从2降低为1.6后,用在一个胜率50%,盈亏比为1.2的策略上之后,经过10000次交易。仍然没有爆仓。
总结:一个优秀的策略从逻辑的建立再到回测,再到风控的管理都是经过千百万次的回测得出的。一个看似简单的策略,全套代码几千上万多行。6个程序猿,3个金融、数学建模师,1个风控专员。还需要万次计算机寻优,回测执行,系统风险排查,模拟盘交易测试,累计收益率评测,模型定性,参数设定调优。量化交易,简约但并不简单!
八、关于人工智能
我们再来说说量化交易的新趋势----人工智能。手工交易者的技术分析,甚至是基本面分析,未来都有可能被机器所取代。这在计算机领域,叫做模式识别,通俗的讲,叫找规律。技术分析的本质就是寻找价格规律,基本面分析又何尝不是呢?有了计算机的帮助,这些找规律的事情完全可以由计算机完成,人工神经网络就是一个典型的应用案例。在上图中,我们用一些简单的数学函数,模拟出一个个的神经元。这些神经元能够从外界接受价格信息和基本面数据,经过函数转换变成输出,反射到下一个神经元,最后从右边输出。这些转换函数的初始参数是随机的,但当我们进行成千上万次训练后,这些参数得到逐渐的优化,最后生成一个准确率较高的预测模型。模型的具体原理,是我们无法从参数的数值去理解的,这相当于一个黑盒。这样的黑盒,可能可以找到我们人脑无法发现的一些数据规律,也许只是参数拟合的结果,需要一系列的测试去加以验证。
但它相比人脑而言,能够更加细致的发现一些隐秘的规律。
一周热门 更多>