期货市场基础:从合约到数据,一个量化人的实战笔记
做统计套利,第一步不是写代码,而是搞懂你交易的东西到底是什么。
期货市场,说白了就是一张张标准化合约的战场。我刚开始接触量化时,总觉得这些基础概念太简单,结果在实盘里吃过亏——有一次因为没搞懂保证金规则,差点被强平。嗯,从那以后,我再也不敢跳过基础了。
期货合约的基本要素
每一张期货合约,都像一份标准化的「买卖合同」。你想想看,如果没有统一标准,螺纹钢的规格五花八门,那还怎么交易?
我个人习惯把合约要素拆成五个核心点:
- 交易标的:到底交易什么?是螺纹钢、沪深300指数,还是原油?
- 合约单位:每手代表多少数量。比如螺纹钢是10吨/手,黄金是1000克/手。
- 报价单位:元/吨、元/克、指数点……不同品种不一样。
- 最小变动价位:价格跳动的最小单位。螺纹钢是1元/吨,一跳就是10块钱(1元×10吨)。
- 交割月份:合约到期的月份。比如RB2305,就是2023年5月交割。
期货交易机制:保证金与逐日盯市
这两个机制,是期货和股票最大的区别。搞不懂它们,你的资金管理就是瞎搞。
保证金制度
说白了就是「杠杆」。你不需要付全款,只需要交一部分保证金就能控制整个合约价值。
举个例子:螺纹钢4000元/吨,一手10吨,合约价值4万元。如果保证金比例是10%,你只需要4000元就能开一手。
我在项目中遇到过最头疼的事,就是不同品种的保证金比例不一样,而且交易所还会临时调整。比如临近节假日,保证金比例可能从10%提到15%,你的仓位可能瞬间就不够了。
| 品种 | 合约单位 | 保证金比例(参考) | 一手保证金(约) |
|---|---|---|---|
| 螺纹钢 | 10吨 | 10% | 4000元 |
| 沪深300股指 | 每点300元 | 12% | 约15万元 |
| 原油 | 1000桶 | 15% | 约6万元 |
逐日盯市
这个机制,我建议每个做量化的人都把它刻在脑子里。
逐日盯市,就是每天收盘后,交易所根据当天的结算价重新计算你的盈亏,然后直接划转资金。赚了,钱进账户;亏了,从保证金里扣。
为什么会这样?因为期货是「零和博弈」,你的盈利就是别人的亏损。交易所不想等到交割日才算总账,万一中间有人跑路了呢?
期货品种分类:商品期货 vs 金融期货
做统计套利,你得知道哪些品种可以配对。我个人习惯把期货分成两大类:
商品期货
- 能源化工:原油、甲醇、PTA、沥青等
- 黑色系:螺纹钢、铁矿石、焦煤、焦炭等
- 有色金属:铜、铝、锌、镍等
- 农产品:豆粕、玉米、白糖、棉花等
- 贵金属:黄金、白银
金融期货
- 股指期货:IF(沪深300)、IC(中证500)、IH(上证50)
- 国债期货:2年期、5年期、10年期国债期货
你想想看,螺纹钢和热卷板,它们的价差就很有规律,因为生产工艺相近。但螺纹钢和白糖?八竿子打不着,做统计套利就是瞎搞。
期货数据获取:tushare 和 akshare 实战
数据是量化交易的血液。我最早用tushare,后来发现akshare更轻量,现在两个都备着。
用 tushare 获取期货数据
tushare需要注册获取token,我个人习惯把它存在环境变量里。
import tushare as ts
# 设置token(建议用环境变量)
ts.set_token('你的token')
pro = ts.pro_api()
# 获取螺纹钢主力合约日线数据
df = pro.fut_daily(
ts_code='RB9999.XSGE', # 9999代表主力合约
start_date='20230101',
end_date='20231231',
fields='trade_date,open,high,low,close,vol'
)
print(df.head())
用 akshare 获取期货数据
akshare不需要token,直接pip安装就能用,对新手特别友好。
import akshare as ak
# 获取螺纹钢主力合约日线
df = ak.futures_main_sina(
symbol='RB0', # RB0代表螺纹钢主力连续
start_date='20230101',
end_date='20231231'
)
print(df.head())
本章知识体系:一张图看懂
下面这张图,是我做课程时画的。它把本章的核心逻辑串起来了:从合约要素到交易机制,再到品种分类和数据获取,每一步都是下一章的基础。
嗯,这一章的内容就到这里。记住,基础不牢,地动山摇。下一章我们会开始搭建第一个统计套利模型,到时候这些知识都会用上。
公众号:蓝海资料掘金营,微信deep3321