期货ML策略(二)构建机器学习模型

接上一篇文章(期货ML策略(一)数据获取),这篇文章开始构建机器学习模型。

如何构建一个机器学习模型,其最本质还是要看你需要机器学习为你做什么贡献。我这边希望能够利用机器学习帮助我预测未来一段时间上涨还是下跌,这样我就可以对应进行做多或者做空。太高频的策略一般会比较耗费手续费,太低频的策略又容易出现很多意想不到的巨额损失,因此需要设置一个合理的预测时间,这个时间我设置的是20分钟(期货是T+0操作)。通过模型预测20分钟后的涨跌情况,策略进行相应的做多或做空(有点像我之前的超短策略)。

训练一个传统的机器学习的模型主要有如下步:(1)数据获取;(2)标签制作;(3)特征构建;(4)模型选择及模型训练;(5)结果分析。对于数据获取,上一篇文章(期货ML策略(一)数据获取)已经简要的阐述过了,这篇文章将会介绍后面四步。

1. 标签制作

因为我是需要知道20分钟后的涨跌情况。所以我的标签制作规则为:如果20分钟后的价格大于等于当前价格,标签为1否则为0。但是考虑到实际情况中,当我们计算完涨跌之后,往往并不能马上买入,因此这边我加了1分钟的延迟时间,即20分钟后的价格大于等于下一分钟的价格,标签为1否则为0。

核心代码如下:


def get_label(df_min):
    # 20 分钟后的涨幅,且日内交易
    delta_t = 20
    df_label = []
    tmp_col = ['ts_code', 'trade_date', 'datetime', 'mean', 'low', 'high']
    for i, g in tqdm(df_min[tmp_col].groupby(['ts_code', 'trade_date'])):
        g = g.sort_values('datetime', ascending=True).reset_index(drop=True)
        g['mean_shift1'] = g['mean'].shift(-1)
        g['mean_latter'] = g['mean'].shift(-delta_t)
        g['lowest'] = g.rolling(delta_t)['low'].min().shift(-delta_t)
        g['highest'] = g.rolling(delta_t)['high'].max().shift(-delta_t)
        df_label.append(g)
    df_label = pd.concat(df_label)
    return df_label

if os.path.exists(os.path.join(base_path, 'label.csv')):
    df_label = pd.read_csv(os.path.join(base_path, 'label.csv'))
else:
    df_label = get_label(df_min)
    df_label.to_csv(os.path.join(base_path, 'label.csv'), index=None)
df_label['datetime'] = pd.to_datetime(df_label['datetime'], infer_datetime_form
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值