原帖:https://bbs.pinggu.org/thread-1818619-1-1.html
原帖:https://bbs.pinggu.org/thread-1593992-1-1.html
马尔科夫链模型具有随机性、无后效性及不过分依赖历史数据的特点,通过期货价格历史数据训练马尔科夫状态转移概率矩阵,可以根据当前价格所处的状态推断出下一步价格的状态,从而建立投资决策系统,指导买卖。
马尔科夫链是随机过程中最重要的理论之一,它对于离散序列的预测具有不可逾越的优越性,目前用国内马尔科夫链对证券价格或成交量预测的研究(或学术论文)比较少,而且用于做投资决策研究的更是甚少。但是,在国外近30年内,马尔科夫链已经被广泛的运用在金融市场,最具有意义的是在算法交易的运用中。算法交易(algorithmic trading)是指在金融市场中,投资者通过计算机程序来下达交易订单,并由计算机算法来确定交易订单的交易时机、价格、下单的数量等的交易方式。具体来说,金融界对算法交易的内容和范围似乎还没有明确的界定,其中包括了很多不同的自动化交易方式和功能。订单智能路由、程序交易、订单分割、基于规则的自动化交易等等都会在不同场合被称为算法交易。而通过利用马尔科夫链,能快速有效的预测价格的涨跌和成交量的增减,以此来指导订单智能路由、订单分割和程序化交易。
具体的投资决策是,首先定义 m个状态,用前 N时间段的K线收盘价数据作为训练数据集,训练T步状态转移概率矩阵,然后利用当前的收盘价数据预测第 T个时刻的价格,如果预测的价格大于当前的价格,则做多;如果预测的价格小于当前的价格,则做空。
一共设置五个状态1、2、3、4、5分别表示大跌、小跌、盘整、小涨、大涨,利用历史前 天至今的开盘价数据训练状态转移矩阵,根据马尔科夫模型,进行预测。入场逻辑如下:
如果当前状态处于状态4或5,而且预测下一步转移为状态5(大涨),那么做多。
如果当前状态处于状态1或2,而且预测下一步转移为状态1(大跌),那么做空。
当前持有多仓,如果预测下一步状态转移为3(盘整),则平仓;如果预测下一步状态转移为1(大跌),那么平多且反手开空。
当前持有空仓,如果预测下一步状态转移为3(盘整),则平仓;如果预测下一步状态转移为5(大涨),那么平空且反手开多。
1、九个合约的参数测试
这里我用SAS的BASE and MACRO 实现了马尔科夫链交易系统回溯程序,用SAS\GRAPH设计了策略绩效分析图形。测试了8个商品合约(橡胶、沪铜、沪铝、沪锌、PTA、白糖、郑棉)和IF300指数,结果显示所有测试的品种全部盈利。
下面是橡胶连续参数测试结果(其中的参数是时间窗口,也即用多少个Bar来训练状态转移概率矩阵)
2、投资组合回溯
将马尔科夫链交易系统的时间窗口参数设置为12(即用12个Bar来滚动训练马尔科夫链状态转移概率矩阵),投资组合包含:沪铜、橡胶、郑棉、沪铝、股指期货。分别用其连续日收盘价数据进行回溯,时间区间为:2006-01-04—2012-10-26。另外设定初始资金为1000000,分配给每个合约200000,对每次进出场只允许使用30%的资金。假定每个合约的保证金比例都为13%,双边手续费为6%%。
投资组合收益率曲线图
投资组合资金曲线图
3、橡胶连续回溯
橡胶连续2011年投资决策图(如果将7年全部展示的话,信号都挤在一起,不容易观测,这里只展示2011年度的)
橡胶连续收益分布
橡胶连续收益率曲线图
橡胶连续资金权益图
橡胶连续资金回撤率
测试平种:橡胶连续
开始时间:2006-01-04
结束时间:2012-10-26
初始资金:200000
最终资金:362042.033
保证金比例:13%
双边手续费:6%%
每次开仓使用资金:30%的资金
总交易次数:274
盈利次数:141
胜率:51.4598%
净利润:162042.033
净利润率:81.021%
最大回撤:7.294 %
平台:SAS9.1.3
交易信号及指标计算:SAS \BASE、MACRO
绩效分析图:SAS\GRAPH
这里非常感谢 davil2000 提出的宝贵的意见。欢迎各位指导,欢迎跟帖,大家一起交流学习。