🔴
入学要求
💯
能力测试
🛣️
课程安排
🕹️
研究资源

练习

一、期货市场交易时间特性

1.1 期货交易时段与流动性特征

import yfinance as yf
import matplotlib.pyplot as plt

# 获取黄金期货数据
gc_data = yf.download('GC=F', start='2024-03-04', end='2024-03-05', interval='15m')
gc_data['Volume'].tz_convert('America/New_York').between_time('09:30','16:00').plot()
plt.title('COMEX黄金期货日内成交量分布')
plt.xlabel('纽约时间')
plt.ylabel('15分钟成交量')

问题:观察黄金期货成交量在美股交易时段(9:30-16:00 EST)的分布特征,与非美盘时段相比呈现什么差异?


1.2 农产品期货流动性验证

# 获取小麦与原油期货数据
commodities = ['ZW=F', 'CL=F']
data = yf.download(commodities, start='2024-03-01', end='2024-03-08', interval='1h')

# 绘制成交量对比图
data['Volume'].unstack(level=0).plot()
plt.title('农产品vs能源期货小时成交量对比')
plt.ylabel('小时成交量')

问题:分析小麦期货与原油期货在不同时段的成交量波动特征,指出哪种期货更适合隔夜持仓策略?


二、期货杠杆机制验证

2.1 保证金计算练习

某原油期货合约规格:

问题:计算该合约的初始保证金、维持保证金水平及实际杠杆倍数


2.2 杠杆损益模拟

import numpy as np

# 参数设置
initial_price = 3500  # 标普期货初始点位
leverage = 15         # 杠杆倍数
price_changes = np.linspace(-0.05, 0.05, 100)  # 价格波动范围±5%

# 计算损益曲线
equity_changes = initial_price * price_changes * leverage

问题:当价格波动达到多少百分比时,本金将发生50%的亏损?绘制不同波动率下的损益曲线


三、合约展期实战分析

3.1 展期窗口识别

# 获取不同到期日的纳斯达克期货数据
nq_contracts = ['NQH24', 'NQM24', 'NQU24']  # 需替换为实际有效代码
nq_data = yf.download(nq_contracts, start='2024-01-01', end='2024-04-30')

# 计算主力合约切换点
volume_ratio = nq_data['Volume'].unstack(level=0).pct_change(periods=5)

问题:通过成交量变化率识别主力合约切换时点,计算各合约成为主力合约的持续时间


3.2 展期价差分析

# 获取相邻合约收盘价
contracts = ['ESM2024', 'ESU2024']  # 需替换为有效代码
price_data = yf.download(contracts, start='2024-01-01', end='2024-06-30')['Close']

# 计算展期成本
roll_yield = (price_data[contracts[1]] - price_data[contracts[0]]) / price_data[contracts[0]]

问题:统计展期收益率的均值和标准差,分析何种市场环境下会出现正向展期收益


四、连续合约构建挑战

4.1 价格缺口处理

# 获取三个连续原油合约数据
cl_contracts = ['CLJ24', 'CLK24', 'CLM24']  # 需替换为有效代码
cl_data = yf.download(cl_contracts, start='2023-01-01', end='2024-05-01')['Close']

# 简单拼接后的价格序列
naive_continuous = pd.concat([cl_data[c].dropna() for c in cl_contracts])

问题:指出简单拼接法会产生哪些数据异常?设计两种不同的价格调整方案


4.2 复权方法比较

现有两个连续合约构建方案:

# 模拟两种方案的连续价格
def compare_roll_methods(contracts):
    # 此处补充数据获取与处理方法
    return method_a, method_b

问题:比较两种方案在波动率计算、趋势跟踪方面的差异,哪种更适合高频策略?


五、交易策略实战

5.1 跨期套利模拟

# 获取大豆期货不同合约数据
zs_contracts = ['ZSK24', 'ZSN24', 'ZSU24']
spread_data = yf.download(zs_contracts, start='2023-07-01', end='2024-04-30')['Close']

# 计算跨期价差
calendar_spread = spread_data['ZSN24'] - spread_data['ZSK24']

问题:计算价差的3σ区间,设计基于均值回归的套利触发条件


5.2 保证金监控系统

# 账户参数
initial_capital = 1000000
positions = {
    'GC=F': {'qty': 10, 'maintenance': 8500},
    'CL=F': {'qty': 5, 'maintenance': 12000}
}

# 实时监控函数
def margin_check(price_data):
    # 此处补充保证金计算逻辑
    return margin_status

问题:当黄金下跌3%、原油上涨5%时,计算账户保证金使用率变化,确定是否触发追保