一年只做四手的量化交易策略,年化140%,你喜欢吗?

Author: ianzeng123, Created: 2023-02-17 10:21:15, Updated: 2023-11-17 21:34:29

img

注:本内容为实盘模拟,切勿直接带入市场运行:)

话说在期货市场有这样一个传说,大佬们都是长线高手,所以每天交易的次数极少,只有newbee喜欢每天捣捣鼓鼓不停地为一点的涨幅上下大呼小叫(本人),眼睛紧盯着屏幕,不停的咬牙切齿,每天忙忙呼呼做了十几笔,一看收益-250,纯纯冤种(还是本人)。期货协会统计过,每日交易次数和收益率是成反比的,所以要耐得住寂寞,胸中装的了起伏,奈何手管不住啊,时不时的脸上青红蓝靛紫的。

img

所以啊,要做一个高手,就要看得了趋势,拥抱趋势,而不是被庄家按在地上反复摩擦。但是没有市场的拷打,去哪里寻找一双火眼金睛呢?还好,身为一个统计学人,没有办法那就去和我们的好伙伴–数据,一起玩耍吧。

偶尔听到一条新闻,期货市场有些品种在一年是有固定趋势的,例如螺纹钢,和房地产市场是紧密关系的。房地产市场工地每年也有高低起伏,在夏季和冬季由于天气的原因,所以会有期货品种的价格周期起伏。哎?这不是趋势就来了吗,开干开干,寻找趋势去!

“巧妇难为无米之炊”,期货数据哪里找呢,各个API和数据接口要么要钱,要么连接很复杂,怎么办呢?不如来FMZ平台看看,选择期货品种和数据调取时间,一行代码,帮你输出数据,而且重要的是免费的!

runtime.log(close)

怎么样,一行代码,就说易不easy吧,直接在数据这里点击下载日志,2016到2023螺纹钢数据到手。

img

期货,期货,不就是时间序列数据吗,来让我做一个简单的时间序列分解。在统计学里,时间序列可通过一定的数据处理方法,进行分解,一般包括四类因素,长期趋势因素(下图2)、季节循环变动因素(下图3)和不规则变动因素(下图4)。

img

这里面“seasonal”变动(上图3)是我们的兴趣所在,因为它是一个固定的趋势,每年都会往复,所以利用这种趋势的变化去做相应的开平仓预测,不失为一种前瞻的趋势预测策略。时间序列趋势分析,Pine语言目前是不支持的,这个要转换语言,利用专业的统计软件,r语言两行代码搞定(数据处理就不算了哈)。

decomdata = decompose(ts(data$price,start = c(2016, 1),frequency = 243),type = 'multi')//时间序列分解
plot(decomdata$seasonal)//时间序列画图

利用r语言,我们将2016至2023年的期货数据进行分解,提取每年的季节循环变动趋势。

img

可以观察到,有点意思嘿,看着这江山起起伏伏,温柔的曲线。四个起伏,抓住这四个起伏,岂不是“趋势在手,多空不愁!”,话不多说,去FMZ上用Pine语言去进行策略编写。策略命名,就叫“随风而动”。

粗略估计下,开年首先来一手多仓,三月初来一个空仓,四月份我们再来个多,持有到八月份,反手做空到十一月,平仓度假去!话不多说,代码奉上:

// 1月多
for i=1 to 4
    if month==1 and dayofmonth==i
        strategy.entry("Long", strategy.long)
        i += 1

// 3月空
for i=1 to 3
    if month==3 and dayofmonth==i
        strategy.close("Long")
        strategy.entry("short", strategy.short)
        i += 1

// 4月多       
for i=3 to 5
    if month==4 and dayofmonth==i
        strategy.close("short")
        strategy.entry("Long", strategy.long)
        i += 1


// 8月空
for i=14 to 16
    if month==8 and dayofmonth==i
        strategy.close("Long")
        strategy.entry("short", strategy.short)
        i += 1
        
// 11月平
for i=7 to 10
    if month==11 and dayofmonth==i
        strategy.close("short")


因为要考虑周日的原因,所以时间点都是三日的空闲(用到for循环),如果是交易日,就进行开平仓的操作。让我们以2022-2023为回测时间段,回测一下,看看咱这四手的魔力。

img

怎么样,收益14731,是不是感觉现在看k线都温顺了起来,让你张牙舞爪,只不过还在我的手心。

拉长时间段看看,观察下策略的生态效度(上节课教过啊)。2020到2023,回测收益为25944.

img

再来,从2016到2023看看,收益率为39845,就不放图了,给你想象的空间。

正经点评:

本策略运用时间序列分析统计方法,对螺纹钢数据进行了季节的趋势分析,试图寻找到固定的趋势,并利用FMZ平台回测系统进行在线回测,取得了良好的收益,证明统计技术在期货分析中具有重要的参考意义。

怎么看起来像个论文摘要,说点人话吧,确实是听到了新闻的点评,偶尔而发利用统计分析技术做了一个策略的模拟。当然,模型还有很多可以优化的地方,比如时间序列的分解,我使用的是“multi”,但是还有“additive”可以使用。第二点,趋势起伏时间段是用肉眼判断的,可能略微有点误差,我想拿尺子去图里比划会更准一点;第三,时间段多空的选择是经过在策略回测中改进的,比如在五月份到八月份,里面的小起伏放在模型里并不是十分理想,所以去除了;第四,最重要的一点,是我们的趋势是来自于数据的,如今用数据获取的趋势去预测数据,这不相当于量身定做吗?所以在后续的模型改进中,我们需要对模型进行更多的不同时间段的交叉验证,确定模型的鲁棒性。在实盘模拟(FMZ平台也支持)里经得起摔打的策略,才是真正的好策略!

再次提醒下:本策略为教学展示用,金融有风险,入市需谨慎!


更多内容