3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
期现基差套利(Basis Trading)是一种经典的低风险量化交易策略,主要通过监控期货合约价格与现货指数(或现货 ETF)价格之间的差价(即基差 = 期货价格 - 现货价格),在基差大幅偏离理论无套利区间时进行反向操作,并在基差回归时平仓获利。
IF2309.CCFX)与沪深300 ETF(如 510300.SS)。Basis = Futures_Price - Spot_Price * Multiplier(注意单位换算与对齐)。sell_open)同时买入现货 ETF(order_value)。buy_open)同时融券卖出现货/卖出现货。以下为在 PTrade 平台中运行的沪深300期现基差套利(正向套利示例)完整 Python 源码:
# -*- coding: utf-8 -*-
def initialize(context):
# 设置监控标的:沪深300主力期货合约与沪深300ETF
g.future_symbol = 'IF2309.CCFX' # 期货合约
g.spot_symbol = '510300.SS' # 沪深300ETF
# 订阅股票池
set_universe([g.future_symbol, g.spot_symbol])
# 参数设置
g.upper_threshold = 15.0 # 开仓基差上限(升水超15点做空期货买现货)
g.exit_threshold = 2.0 # 平仓基差临界值
g.future_multiplier = 300 # 沪深300股指期货乘数
g.trade_lots = 1 # 每次交易手数
g.flag = 0 # 持仓状态标识:0-空仓,1-正套持仓中
def handle_data(context, data):
# 获取当前期货与现货快照数据
future_snapshot = get_snapshot(g.future_symbol)
spot_snapshot = get_snapshot(g.spot_symbol)
if not future_snapshot or not spot_snapshot:
return
future_price = future_snapshot[g.future_symbol].get('last_px', 0)
spot_price = spot_snapshot[g.spot_symbol].get('last_px', 0)
if future_price == 0 or spot_price == 0:
return
# 将 ETF 价格转化为指数对应点数进行基差对比(根据实际 ETF 份额/指数比例计算)
# 假设 1 手 ETF 对应指数现货价值
# 计算当前年化或绝对基差 (期货价格 - 现货换算价格)
basis = future_price - (spot_price * 1000) # 假定换算比例
log.info("当前期货价格: %s, 现货价格: %s, 当前基差: %s" % (future_price, spot_price, basis))
# 当前可用资金检查
cash = context.portfolio.cash
# 1. 触发正向套利建仓条件:期指严重升水
if basis > g.upper_threshold and g.flag == 0:
log.info("基差上限触发,执行正向套利:卖出开仓期货,买入现货ETF")
# 卖开期货合约 1 手
sell_open(g.future_symbol, g.trade_lots)
# 计算需要买入的 ETF 价值并下单
spot_value = future_price * g.future_multiplier
order_value(g.spot_symbol, spot_value)
g.flag = 1
# 2. 触发平仓条件:基差回归合理区间
elif basis <= g.exit_threshold and g.flag == 1:
log.info("基差回归,执行平仓:买入平仓期货,卖出现货ETF")
# 平仓期货
buy_close(g.future_symbol, g.trade_lots)
# 卖出 ETF 现货持仓
order_target(g.spot_symbol, 0)
g.flag = 0
run_interval 提高检测频率,或者使用行情档位 get_gear_price 获取对价(如买一/卖一)下单以保证成交速度。