# 获取期权数据,列出符合要求的合约 # 参考资料: # - 原始策略来源: https://www.joinquant.com/view/community/detail/a8f4ad443448f4246260ea221c3d77ea # - 研究网址: https://www.joinquant.com/research?target=research&url=/user/75474983526/notebooks/Options/%E8%8E%B7%E5%8F%96%E6%9C%9F%E6%9D%83%E6%95%B0%E6%8D%AE%EF%BC%8C%E5%88%97%E5%87%BA%E7%AC%A6%E5%90%88%E8%A6%81%E6%B1%82%E7%9A%84%E5%90%88%E7%BA%A6.ipynb # TODO: 添加期权数据获取和合约筛选相关代码 from jqdata import * import pandas as pd import numpy as np ## 日期数据处理 trade_days = pd.Series(index=get_trade_days('2024-2-1','2024-3-26')) trade_days.index = pd.to_datetime(trade_days.index) month_split = list(trade_days.resample('M',label='left').mean().index) + [pd.to_datetime('20240201')] holding_contract2 = pd.Series(index=trade_days.index) # 获取期权合约数据 q_contract_info = query(opt.OPT_CONTRACT_INFO.code, opt.OPT_CONTRACT_INFO.trading_code, opt.OPT_CONTRACT_INFO.name, #合约代码,合约交易代码,合约简称 opt.OPT_CONTRACT_INFO.exercise_price, opt.OPT_CONTRACT_INFO.last_trade_date, opt.OPT_CONTRACT_INFO.list_date ).filter(opt.OPT_CONTRACT_INFO.contract_type == 'CO', # CO认购期权、PO认沽期权 opt.OPT_CONTRACT_INFO.exchange_code == 'XSHG', # XSHG 上交所。XZCE 郑商所 opt.OPT_CONTRACT_INFO.last_trade_date > month_split[0], # 时间-到期月开始 opt.OPT_CONTRACT_INFO.last_trade_date < month_split[1], # 时间-到期月结束 opt.OPT_CONTRACT_INFO.list_date < trade_days.index[0]) # 在交易前上市 contract_info = opt.run_query(q_contract_info) etf_cls = get_price('510050.XSHG',trade_days.index[0],trade_days.index[0],fields=['close']).values[0][0] contract_info['price_spread'] = contract_info['exercise_price'] - etf_cls if contract_info['price_spread'].max() > 0: contract_info = contract_info[contract_info['price_spread'] > 0] #选出虚值期权 contract_info = contract_info.sort_values('exercise_price') else: #全是实值期权 contract_info = contract_info.sort_values('exercise_price',ascending=False) holding_contract2[trade_days.index[0]] = contract_info['code'].iloc[0] newest_exercise_price = contract_info['exercise_price'].iloc[0] newest_expire_date = contract_info['last_trade_date'].iloc[0] contract_info