商品期货跨期套利实战笔记

合约对:IC2301&IC2302
价差计算
前-后(6082-6079.8)
在这里插入图片描述

做多价差开仓(预期价差变大)
买2301(前)
卖2302(后)

做空价差开仓(预期价差变小):
买2302(后)
卖2301(前)

二、交割时间
股指期货交割日为每月第三个周5,节假日顺延

棕榈油期货的交割月份为1-12月,最后交易日为交割月第十个交易日,最后交割日为最后交易日后第三个交易日
(例:P2301,最后交易日为1月13日,1月16日已无交易)
在这里插入图片描述

商品主力合约只产生在1月/5月/9月三个合约当中,例如1401,1405,1409会随着时间轮流的做为主力合约;
股指则是当月合约为主力合约。

三、软件选择
快期缺少前后腿操作,一年下来估计滑点也有万把块了。
尽量在默认合约里选,K线好像比较完整
在这里插入图片描述

四、观察现象解释
回测中的低点和极星软件中低点价差不同
9:30分前是集合竞价,回测程序中选取每天9:30之后的数据
2016年1月1日起,调整IF、IH、IC交易时间调整为集合竞价时间为每个交易日9:25-9:30,其中9:25-9:29为指令申报时间,9:29-9:30为指令撮合时间。连续竞价时间为每个交易日9:30-11:30为指令撮合时间。连续竞价时间为每个交易日9:30-11:30(第一节)和13:00-15:00(第二节)。”

当前课题:

商品期货套利观察
豆油和棕榈油
豆粕与和菜粕
玉米和玉米淀粉
螺纹钢和热卷
豆二和豆粕

### 股指期货跨期套利策略实现 对于股指期货跨期套利策略,在Python中可以利用丰富的交易和数据API接口来获取市场数据并执行交易操作[^2]。下面展示一段基于这些工具的代码,用于计算两个不同到期日的股指期货合约之间的价差,并判断是否存在套利机会。 #### 获取历史价格数据 为了制定有效的套利决策,首先需要从可靠的数据源获得两个特定月份交割的指数期货合约的历史收盘价: ```python import pandas as pd from datetime import date, timedelta from tushare.pro_api import ProApi # 假设使用Tushare作为数据提供商 def get_futures_data(api_token, symbol1, symbol2, start_date, end_date): pro = ProApi(api_token) df1 = pro.fut_daily(ts_code=symbol1, start_date=start_date, end_date=end_date)[['trade_date', 'close']].set_index('trade_date') df2 = pro.fut_daily(ts_code=symbol2, start_date=start_date, end_date=end_date)[['trade_date', 'close']].set_index('trade_date') merged_df = pd.merge(df1, df2, left_index=True, right_index=True, suffixes=('_near', '_far')) return merged_df.rename(columns={'close_near': f'{symbol1}_price', 'close_far': f'{symbol2}_price'}) ``` #### 计算理论价差与实际价差 根据持有成本模型,可以通过以下方式估算近月(F1)和远月(F2)合约间的合理价差[^1]: \[ \text{Theoretical Spread} = F_2 - e^{r(T-t)} * F_1 \] 其中\( r \)代表无风险利率;\( T-t \)表示时间间隔(年)。接着比较这个理论值同市场上观察到的实际价差: ```python import numpy as np def calculate_spread(futures_prices, risk_free_rate, days_between_contracts): futures_prices['theoretical_spread'] = ( futures_prices.iloc[:, 1].values - np.exp(risk_free_rate * (days_between_contracts / 365)) * futures_prices.iloc[:, 0].values ) futures_prices['actual_spread'] = futures_prices.iloc[:, 1] - futures_prices.iloc[:, 0] return futures_prices[['theoretical_spread', 'actual_spread']] ``` #### 判断套利条件 当实际价差偏离其预期范围时,则可能存在套利可能性。这里简单定义了一个阈值区间来识别潜在的机会: ```python def detect_arbitrage_opportunities(spreads, lower_bound=-0.01, upper_bound=0.01): spreads['arbitrage_signal'] = ((spreads['actual_spread'] < spreads['theoretical_spread']) & (spreads['actual_spread'] >= spreads['theoretical_spread'] + lower_bound)).astype(int) | \ ((spreads['actual_spread'] > spreads['theoretical_spread']) & (spreads['actual_spread'] <= spreads['theoretical_spread'] + upper_bound)).astype(int)*(-1) return spreads[spreads['arbitrage_signal'] != 0][['theoretical_spread', 'actual_spread', 'arbitrage_signal']] ``` 上述函数会返回所有满足设定标准的日子及其对应的信号(+1 表示买入近卖远; -1 表示卖出近买远). 请注意这只是一个非常基础的例子,真实世界中的应用可能还需要考虑更多因素如手续费、滑点等影响。此外,`QuantLib-Python`库主要用于复杂衍生品估值而非直接支持此类高频量化策略开发[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

779醒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值