「数据获取」全国民用运输机场吞吐量排名(2006-2024)
2026/1/15 21:21:20
本策略通过Johansen协整检验筛选具有长期均衡关系的标的资产组合,构建指数期权统计套利头寸。核心功能包括:1) 多变量时间序列协整关系验证;2) 动态跟踪误差控制;3) 期权希腊字母对冲。主要风险包含模型误设风险、流动性风险及极端市场条件下的协整关系断裂风险。
在VAR§模型基础上引入协整关系约束,建立VECM模型:
ΔXₜ = ΠXₜ₋₁ + Γ₁ΔXₜ₋₁ + ... + Γₚ₋₁ΔXₜ₋ₖ₊₁ + εₜ其中协整矩阵Π分解为αβᵀ,β矩阵列向量构成协整空间。
通过极大似然估计获取特征值λᵢ,构造迹统计量:
Trace(H₁/H₀) = -T∑(ln(1-λ̂ᵢ)) ~ χ²(r)最大特征值统计量:
Max(H₁/H₀) = -Tln(1-λ̂ᵣ₊₁) ~ χ²(1)importnumpyasnpimportpandasaspdfromstatsmodels.tsa.vector_ar.vecmimportcoint_johansendefpreprocess_data(price_df,window=252):"""计算对数收益率并处理缺失值"""returns=np.log(price_df).diff().dropna()returnreturns.rolling(window).mean().dropna()defjohansen_test(returns,lag=1,alpha=0.05):"""执行Johansen协整检验"""result=coint_johansen(returns,det_order=0,k_ar_diff=lag)eigenvalues=result.eigvals.round(4)trace_stat=result.trace_stat.round(4)max_stat=result.max_stat.round(4)# 临界值判断(95%置信度)cv_trace=[15.87,19.60,23.42,27.04]cv_max=[14.07,18.63,22.00,25.32]cointegration_rank=0foriinrange(len(trace_stat)-1,-1,-1):iftrace_stat[i]>cv_trace[i]:cointegration_rank+=1else:breakreturn{'eigenvalues':eigenvalues,'trace_stat':trace_stat,'max_stat':max_stat,'rank':cointegration_rank,'critical_values':{'trace':cv_trace,'max':cv_max}}defcalculate_hedge_ratio(series_a,series_b):"""计算最小方差对冲比率"""cov_matrix=np.cov(series_a,series_b)delta=cov_matrix[0,1]/cov_matrix[1,1]returndeltadefbuild_portfolio(candidates,test_result):"""根据协整结果构建投资组合"""iftest_result['rank']<1:returnNoneselected=candidates.loc[candidates.index.isin(test_result['eigenvectors'][:test_result['rank']].index)]weights={}foriinrange(len(selected.columns)-1):weights[selected.columns[i]]=calculate_hedge_ratio(selected.iloc[:,i],selected.iloc[:,i+1])returnpd.Series(weights)fromscipy.statsimportnormdefblack_scholes_greeks(S,K,T,r,sigma,option_type='call'):"""BS模型希腊字母计算"""d1=(np.log(S/K)+(r+0.5*sigma**2)*T)/(sigma*np.sqrt(T))d2=d1-sigma*np.sqrt(T)ifoption_type=='call':delta=norm.cdf(d1)gamma=norm.pdf(d1)/(S*sigma*np.sqrt(T))theta=-(S*norm.pdf(d1)*sigma)/(2*np.sqrt(T))-r*K*np.exp(-r*T)*norm.cdf(d2)else:delta=norm.cdf(d1)-1gamma=norm.pdf(d1)/(S*sigma*np.sqrt(T))theta=-(S*norm.pdf(d1)*sigma)/(2*np.sqrt(T))+r*K*np.exp(-r*T)*norm.cdf(-d2)return{'delta':delta,'gamma':gamma,'theta':theta}defdynamic_hedging(portfolio,option_chain,rebalance_freq=5):"""基于希腊字母的动态对冲"""holdings={}forassetinportfolio.index:# 获取最优行权价期权best_option=select_best_option(asset,option_chain)# 计算对冲比例hedge_ratio=portfolio[asset]*best_option['delta']# 确定头寸规模position_size=int(abs(hedge_ratio)*100)holdings[asset]={'option_contract':best_option['contract'],'position_size':position_size,'hedge_ratio':hedge_ratio}returnholdings