量化投资分析平台 迅投 QMT(四)获取标的期权的代码

量化投资分析平台 迅投 QMT

  • [迅投 QMT](https://www.xuntou.net/?user_code=7NYs7O)
    • 我目前在使用
    • 有了底层标的如何获取期权的交易代码呢?
    • 上代码
        • 历史帖子

迅投 QMT

我目前在使用

两个月前(2024年4月)迅投和CQF有一个互动的活动,进行了平台的一个网上路演,刚好我也去听了,感觉还是挺不错的。后来与“客服麻瓜”进行了对QMT的深入了解和使用,最后决定买了他们的服务。注册就可以进行试用,但是是有期限的。如果只是单方面的研究的话,还是建议用稍微便宜些的平台,我主要是需要期权的实时数据进行分析和交易。

有了底层标的如何获取期权的交易代码呢?

我们知道期权交易是有时效性的,目前A股开放的可交易期权都是欧式期权,也就是说只有到了交割日才能行权。这样对于我们交易者来讲还是比较友好的,计算起来更方便些。目前A股的期权的时效是当月、隔月、季度、半年,四个周期。按照今天2024年6月5日来看,沪深300ETF的期权的交割月是6月、7月、9月、和12月。如果到了7月,就是7月、8月、10月、和次年1月。说实话,的确挺烦人的,烧脑的逻辑。那我今天呢就给大家展示一下我实现的方式。

上代码

  1. 首先我们先把日期锁定为本月到次年上月,按照2024年6月距离,就是到2025年的5月;然后按照月份进行获取期权数据;最终把底层标的的期权交易代码全部获取出来。
def obtain_annual_opt_tickers(ticker_: str):
    current_month = str(dt.now().strftime('%Y%m%d'))   # 当月
    one_year_later = dt.now() + relativedelta(years=1)   # 次年上月计算
    one_year_later = str(one_year_later.strftime('%Y%m%d'))   # 次年上月转string格式
    
    #通过pandas的date_range()函数获取未来12个月所有的日期,频率为"M"month月份
    dates = pd.date_range(start=current_month, end=one_year_later, freq='M')
    
    # Convert the dates to the required format (YYYYMM)
    expiration_months = [date.strftime('%Y%m') for date in dates]   # 将获取到的12个月打包列表并设置格式为yyyymm
    
    option_tickers = []
    for month in expiration_months:
        option_tickers.append(
            xtdata.get_option_list(ticker_, month, isavailavle=True)   # 这里ticker_参数为标的资产,举例'510050.SH'
        )
    
    # Flatten the list 因为这里我们会收到套娃的列表,需要处理,扁平处理
    flattened_option_tickers = [item for sublist in option_tickers for item in sublist]
    
    return flattened_option_tickers

obtain_annual_opt_tickers('510050.SH')[-5:]

'>>> ['10007156.SHO', '10007229.SHO', '10007230.SHO', '10007245.SHO', '10007246.SHO']'
'>>> 这样我们就获取到目前底层标的资产所有的期权交易代码的ticker了'
  1. 拿到所有期权交易代码ticker后我们来进行遍历,把所有的标的资产期权信息做成一个dataframe,为后续做准备。
@cache
def option_details(ticker_: str):
    flat_opt_tickers_list = obtain_annual_opt_tickers(ticker_)
    
    df_opt_details_ = pd.DataFrame()
    
    for tick_ in flat_opt_tickers_list:
        xtdata.download_history_data(tick_, period='1d')
        opt_detail_ = pd.DataFrame([xtdata.get_option_detail_data(tick_)])
        df_opt_details_ = pd.concat([df_opt_details_, opt_detail_], axis=0)   # 纵向拼接
        time.sleep(1/25)
    df_opt_details_ = df_opt_details_.reset_index(drop=True)   # 重置引索,避免后面出问题

    # add exchange ID to the instrument ID for latter use
    new_instID = df_opt_details_['InstrumentID'] + '.' + df_opt_details_.ExchangeID.unique()[0]
    df_opt_details_['InstrumentID'] = new_instID   # 重新定义'InstrumentID'
    
    # retain only useful columns
    df_opt_details_ = df_opt_details_[['InstrumentID', 'InstrumentName', 
                                        'OpenDate', 'CreateDate', 'ExpireDate', 'PreClose', 
                                        'UpStopPrice', 'DownStopPrice', 
                                        'LongMarginRatio', 'ShortMarginRatio', 
                                        'VolumeMultiple', 
                                        'MaxMarketOrderVolume', 'MinMarketOrderVolume', 
                                        'MaxLimitOrderVolume', 'MinLimitOrderVolume', 
                                        'OptUnit', 'MarginUnit', 'OptExercisePrice', 
                                        'OptUndlRiskFreeRate', 'OptUndlHistoryRate', 
                                        'optType']].reset_index(drop=True)

    # construct a new column for days to expiry for volatility use
    # 重新定义交割日格式,为了计算剩余交割天数使用
    df_opt_details_['ExpireDate'] = pd.to_datetime(df_opt_details_['ExpireDate'], format='%Y%m%d')
    # 增加新列,到期交割日天数,后面会使用到,很重要的数据,BSM模型也会用到
    df_opt_details_['days_to_expiry'] = (df_opt_details_['ExpireDate'] - dt.now()).dt.days
    
    return df_opt_details_

option_details('510050.SH')
'>>> 我就不截完整图了,太大了,意思一下,大家知道是什么就好。'

期权信息截图
这样我们就获取到所有的底层标的期权的交易代码和期权完整信息了。

下一贴我来跟大家讲一讲我对期权的理解,普及一些期权这类衍生品的相关知识。

希望大家能够给予一键三连啥的,您的鼓励就是我最大的动力!

历史帖子

量化投资分析平台 迅投 QMT(一)激活python迅投对接端口
量化投资分析平台 迅投 QMT(二)服务器端订阅下载数据
量化投资分析平台 迅投 QMT(三)字典数据下载后读取成Dataframe形式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/683648.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java实现2048游戏源代码(启动即可玩)

使用Java语言从零到一开发经典2048游戏的全部源代码及详尽的开发教程。 适合Java初学者、游戏开发爱好者以及想要深入理解Swing GUI框架的开发者学习与参考。 知识领域:游戏开发、Java编程、图形用户界面(GUI)设计 技术关键词:Java Swing、事件监听、多…

“探索‘循环购‘:快消品行业的新商业模式与增长策略“

大家好,我是吴军,来自一家深耕于软件开发和商业模式创新的科技公司。我们的专长在于为各类企业量身打造商城系统,并提供个性化的商业模式解决方案。迄今为止,我们已经助力众多企业成功实施了超过200种前沿的商业模式,实…

阿奇科技 简单java-swing计算器源码(可用于课设等)

此系统用的技术有java swing! 实现的功能: 加减乘除(可以进行小数运算) 清空数据 最小化 小巧方便,功能齐全! 页面截图: 源码地址:点击这里下载源码 获取全套代码,或咨询更多代码…

【JavaEE】Spring Boot 日志详解

一 日志概述 日志是用于记录系统运行状态、用户操作和重大事件的工具。 1.日志的用途 系统监控 监控现在几乎是一个成熟系统的标配, 我们可以通过日志记录这个系统的运行状态, 每⼀个方法的响应时间, 响应状态等, 对数据进行分析, 设置不同的规则, 超过阈值时进行报警. 比如统…

科技赋能,无障碍出行的新纪元

在现代社会,公共设施的建设不仅是衡量城市文明程度的标尺,更是实现社会公平与包容的重要载体。对于盲人群体而言,一个完善的公共设施网络,意味着他们能够更加独立、自信地融入社会,享受与视力健全者同等的公共服务与便…

湖南(品牌控价)源点调研 手机价格管理对品牌的影响分析

前言:手机自发明以来,过去一直是国际品牌占主导地位,从最初的爱立信、摩托罗拉,到后来的诺基亚、三星,苹果在这个手机行业里,竞争激励,没有百年企业,每个品牌的盛衰都有背后的历史背…

软件测试——Java自动化测试Selenium

目录 1.运行环境 2.环境配置 3.第一个浏览器程序 4.浏览器操作 5.元素定位 6.元素操作常用API 7.特殊元素定位与操作 8.元素三大等待 9.iframe操作 10.window操作 11.select选择框 12.js语句执行 13.鼠标操作 14.截图操作 1.运行环境 编译工具:IDEA …

教师自费出书的注意事项有哪些?

备案主编专著的优势:(qkfb88688) 1、副高、正高职称最高学术成果 2、专著可以代替核心 3、周期短、出书快、可重复使用 4、双号齐全:ISBN~CIP 5、版权长期有效 教师自费出书有以下一些注意事项: 关于书稿&…

python---正则表达式

本章目标: 1:能够知道在Python中使用正则要导入的模块; [了解] re模块 2:能够使用re模块匹配单个字符; [重点] \d \w 正则表达式的概述: 基本介绍 正则表达式,也叫做规则表达式,通常会说成[正则] 实际上正则表达式就是指符合一定规则的字符串,同时他能用于检查一段…

MyBatis拦截器使用方法

前言 MyBatis拦截器可以做的工作:SQL修改,分页操作,数据过滤,SQL执行时间性能监控等。 1. 基础介绍 1.1. 核心对象 从MyBatis代码实现的角度来看,MyBatis的主要的核心部件有以下几个: Configuration&am…

OpenStack所支持的虚拟化技术和KVM、Xen、Hyer-V、QEMU、Libvirt说明

OpenStack所支持的虚拟化技术主要包括以下几种: KVM (Kernel-based Virtual Machine): 基于Linux内核的虚拟化技术。在Linux内核中添加一个虚拟化模块来实现虚拟机的运行。是OpenStack用户使用较多的虚拟化技术,支持OpenStack的所有特性。通过QEMU模拟器…

【NoSQL数据库】Redis——哨兵模式

Redis——哨兵模式 Redis哨兵 Redis——哨兵模式1.什么是哨兵机制(Redis Sentinel)1.1 哨兵的作用 2.哨兵的运行机制3.故障处理redis常见问题汇总1、redis缓存击穿是什么?如何解决?2、redis缓存穿透是什么?如何解决&am…

详解!Python怎么配置环境变量

详解!Python怎么配置环境变量 许多刚开始学习编程的初学者在 python的安装上会抱有一定的疑惑,为什么明明已经安装好了 python 环境,但并不能运行python 代码,这是因为 python 的安装过程中还有一步环境变量的配置,接…

微信“对方正在输入”背后的小心思:保持隐秘感,享受宁静的交流

微信,这个伴随我们起居、工作的超级应用,不仅仅是一款聊天软件,它几乎成为了我们社交生活的一部分。它的便捷,让我们的日常沟通如鱼得水。然而,在这个几乎完美的社交工具中,有一个功能,让不少人…

CSS真题合集(二)

CSS真题合集(二) 11. css3新增特性12. css3动画12.1 关键帧动画 (keyframes)12.2 animation12.3 transition12.4 transform 13. grid网格布局13.1 使用display: grid或display: inline-grid的HTML元素。13.2 定义网格13.3 13.4 自动填充和自动放置13.4 对…

信号发生器如何将频率调大,步尽值改成10

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

PPT文件损坏且无法读取怎样修复?文档损坏修复方法推荐

PPT文件已经成为工作汇报、商务演示、学术交流以及教学培训中最常用到的文件,随着文件数量的增多和存储设备的频繁使用,我们有时会遇到PPT文件损坏无法打开的情况,这无疑给工作和学习带来了极大的困扰。 PPT文件损坏的原因可能多种多样&#…

FreeRTOS手表项目多级菜单的实现

一、首先介绍一下智能手表项目的背景: 如图,关注焦点是任务: 1、在一个确定时刻,在那一圈任务中(写有只有一个任务解挂)只有一个任务处在运行,界面显示的是该任务应该显示的内容; …

韩国Neowine推出第三代强加密芯片ALPU-CV

推出第三代加密芯片;是ALPU系列中的高端IC;是一款高性能车规级加密芯片;其加密性更强、低耗电、体积小;使得防复制、防抄袭板子的加密性能大大提升,该芯片通过《AEC-Q100》认证,目前已经在国产前装车辆配件…

代理记账公司哪家好,深度剖析与选择指南

代理记账,作为企业会计管理和运营的重要环节,已经逐渐被越来越多的企业所重视,在众多的代理记账公司中,如何选择一家专业、高效且值得信赖的代理记账机构呢?以下是一些深度解析和推荐。 公司的规模 规模较大的代理记账…