期货ML策略(一)数据获取

本文探讨期货市场的机器学习策略,首先讲解如何获取期货主力合约的历史数据,包括基本信息、日线行情和分时行情。通过tushare获取主力合约数据,使用天勤API获取分时数据,并介绍了指数行情的合成方法。最后,提供了代码仓库链接。
摘要由CSDN通过智能技术生成

最近要开始研究期货上的机器学习(Machine Learning)策略了。相信关注我的朋友已经多多少少知道一些有关机器学习的基础知识了,对于机器学习的基础知识我这边不会介绍,只会简单的提一下,不懂的朋友自行网上搜索资料学习。未来一段时间里,我将会利用所学的知识开发一个期货上的ML策略。

策略思路如下:交易时间内每分钟从主力合约(可以理解为交易活跃的股票)中选取未来几分钟内极大可能有较大的涨幅或跌幅的合约,对他们进行做多或做空。非常像我之前做的股票策略一样,挑一只未来很大可能上涨的股票对它进行买入操作(送你一份年化100%+的策略)。

那我需要如何实现这个策略呢。主要分为四个步骤:(1)获取期货主力合约数据;(2)构建机器学习模型,利用数据训练机器学习模型;(3)回测检验模型;(4)模拟盘检验模型。我大概会分4块部分写期货策略的文章,并且我会开源自己的期货ML策略代码,但是核心内容我不会分享,我只会分享我的策略框架。

今天这篇文章将会讲如何获取期货主力合约数据。对于一个ML策略来说,历史数据一定要获取下来存本地,这样才会方便我们的训练。可能有些策略并不需要将数据存本地,但是我们这个ML策略是必须的。

但是期货数据的获取里面有很多坑。首先,期货的数据不像股票,期货的合约经常是变化的,每个合约大概只有1年不到的数据,而大部分股票数据基本都是有好几年或是几十年。其次,不同合约的交易时间也不同,有些合约是有夜盘交易时间,有些则没有。总之,期货的数据获取还是有很多坑的。接下来我将告诉大家如何进行获取数据。

1 主力合约基本信息获取

首先我们需要知道不同时间段哪些合约是主力合约。这里tushare提供了很好的接口获取。我们可以利用fut_basic接口获取有哪些合约类别,然后利用fut_mapping接口获取不同合约类别下不同时间内的主力合约名称。核心代码如下:


# 获取各个时段主力合约
df_list = []
for exchange in ['DCE', 'CZCE', 'SHFE', 'INE']:
    df = pro.fut_basic(exchange=exchange, fut_type='2', fields='ts_code,symbol,name')
    df['is_zhuli'] = df['name'].apply(myfun1)
    df = df[df['is_zhuli'] == True]
    df['exchange'] = exchange
    df_list.append(df[['ts_code', 'symbol', 'name', 'exchange']])
df_list = pd.concat(df_list).reset_index(drop=True)

df_zhuli = []
for i in tqdm(range(len(df_list))):
    code = df_list['ts_code'][i]
    exchange = df_list['exchange'][i]
    symbol = df_list['symbol'][i]

    # 获取主力合约TF.CFX每日对应的月合约
    df = pro.fut_mapping(ts_code=code)
    df['trade_date'] = pd.to_datetime(df['trade_date'], infer_datetime_format=True)

    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值