| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- # 获取期权数据,列出符合要求的合约
- # 参考资料:
- # - 原始策略来源: 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
|