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)的分布特征,与非美盘时段相比呈现什么差异?
# 获取小麦与原油期货数据
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('小时成交量')
问题:分析小麦期货与原油期货在不同时段的成交量波动特征,指出哪种期货更适合隔夜持仓策略?
某原油期货合约规格:
75,000(1000桶×75,000(1000桶×
问题:计算该合约的初始保证金、维持保证金水平及实际杠杆倍数
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%的亏损?绘制不同波动率下的损益曲线
# 获取不同到期日的纳斯达克期货数据
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)
问题:通过成交量变化率识别主力合约切换时点,计算各合约成为主力合约的持续时间
# 获取相邻合约收盘价
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]]
问题:统计展期收益率的均值和标准差,分析何种市场环境下会出现正向展期收益
# 获取三个连续原油合约数据
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])
问题:指出简单拼接法会产生哪些数据异常?设计两种不同的价格调整方案
现有两个连续合约构建方案:
# 模拟两种方案的连续价格
def compare_roll_methods(contracts):
# 此处补充数据获取与处理方法
return method_a, method_b
问题:比较两种方案在波动率计算、趋势跟踪方面的差异,哪种更适合高频策略?
# 获取大豆期货不同合约数据
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σ区间,设计基于均值回归的套利触发条件
# 账户参数
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%时,计算账户保证金使用率变化,确定是否触发追保