代码基于天勤量化平台,先贴出完整代码:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

#import asyncio

from tqsdk import TqApi, TqAuth

from contextlib import closing

from time import time

# 创建API实例.

api = TqApi(auth=TqAuth("天勤账号", "账号密码"))

async def taoli(Call='',Put='',Lr=3, Dlr=1): #默认3跳,1跳对手价平仓损耗,1跳抹除手续费,1跳纯利润

quote_C = api.get_quote(Call)

quote_P = api.get_quote(Put)

futer = quote_C.underlying_symbol

quote_F = api.get_quote(futer)

async with api.register_update_notify([quote_C,quote_P,quote_F]) as update_chan: #

async for _ in update_chan: #

D_time = (quote_C.last_exercise_datetime-time()) * Lr / (Dlr*86400)

if quote_C.exercise_type == 'A':

lr = quote_F.price_tick * Lr #行权盈利点数

if D_time <= Lr:

dlr = lr

else : dlr = quote_F.price_tick * D_time #价格变动百分比,到期盈利幅度

elif quote_C.exercise_type == 'E':

if D_time <= Lr :

lr = dlr = quote_F.price_tick * Lr

else : lr = dlr = quote_F.price_tick * D_time

Cb = quote_C.strike_price + quote_C.ask_price1 #K+C,构建期货多头价格

Pb = quote_P.strike_price - quote_P.ask_price1 #K-P,构建期货空头价格

CbPs_Fs = quote_P.strike_price + quote_C.ask_price1 - quote_P.bid_price1 #K+C-P,构建期货多头价格

PbCs_Fb = quote_P.strike_price + quote_C.bid_price1 - quote_P.ask_price1 #K+C-P,构建期货空头价格

Fb = quote_F.ask_price1 #期货买入价

Fs = quote_F.bid_price1 #期货卖出价

kai = False

if Fs-Cb >= lr:

print(Call,'-',futer,'K+C

kai = True

break

if Pb-Fb >= lr :

print(Put,'+',futer,'K-P>F:多看跌期权+多期货',Pb, Fb, Pb>Fb,' 利润:',Pb-Fb)

kai = True

break

if Fs-CbPs_Fs >= dlr :

print(Call,'-',Put,'-',futer,'K+C-P

kai = True

break

if PbCs_Fb-Fb >= dlr :

print(Put,'-',Call,'+',futer,'K+C-P>F:多看跌期权+空看涨期权+多期货',PbCs_Fb, Fb, PbCs_Fb>Fb,' 利润:',PbCs_Fb-Fb)

kai = True

break

if not kai :

print('监控中:')

print(Call,'-',futer,'K+C

print(Put,'+',futer,'K-P>F:多看跌期权+多期货', Pb, Fb, Pb>Fb)

print(Call,'-',Put,'-',futer,'K+C-P

print(Put,'-',Call,'+',futer,'K+C-P>F:多看跌期权+空看涨期权+多期货', PbCs_Fb, Fb, PbCs_Fb>Fb)

#break

C = []

P = []

exchange = ['SHFE','DCE','CZCE','INE']

for e in exchange :

quote = api.query_quotes(ins_class='OPTION',exchange_id=e,expired=False)

for i in quote :

q = api.get_quote(i)

if q.option_class == 'CALL' :

C.append([i,q.underlying_symbol,q.strike_price])

elif q.option_class == "PUT" :

P.append([i,q.underlying_symbol,q.strike_price])

del quote

Options = []

for i in C :

for j in P :

if i[1] == j[1] and i[2] == j[2]:

Options.append([i[0],j[0]])

del C , P

for i in Options :

api.create_task(taoli(Call=i[0],Put=i[1],Lr=3,Dlr=7))

with closing(api):

while True :

api.wait_update()

代码解析:

先获取上海、大连、郑州、能源交易所全部期权,按看涨看跌分类,再把执行价相同的看涨看跌期权组对。

套利机会由异步函数taoli(Call='',Put='',Lr=3, Dlr=1)监控。

从上述期权对里获取看涨期权赋值给Call,获取看跌期权赋值给Put。

Lr是最小获利点数,默认3跳,因为套利对在平仓时,以对手价成交会损耗一点,手续费再损耗一点,剩一点为纯利润。

美式期权多头随时可以行权以获得利润,期权空头和欧式期权只能在到期时被行权,参数Dlr表示持有多少天获得Lr点利润可以接受,比如Lr=3, Dlr=7,表示持有7天获得3跳利润可以接受,如果期权到期日是21天,则需获得9跳利润,利润再低就可能不合适了,持有的时间长但获得的利润小有点不值当。

所有的价格判断都以对手价计算,当if语句检测到套利机会时,break语句可换成开仓函数,立即以对手价下单,并在成交后锁定计算的利润,美式期权多头可立即行权并平仓获得利润,期权空头和欧式期权需等到到期时行权再平仓。

期货期权套利机会分析的原理应用的是无风险套利关系式,如下:

1,K+C < F,即执行价K+权利金C

2,K - P > F,即执行价K-权利金P>期货价格,此时买入看跌期权+买入期货,左边等于高价卖空期货,右边低价买入期货,形成锁仓利润

3,K + C - P < F,即执行价K+权利金C-权利金P

4,K + C - P > F,即执行价K+权利金C-权利金P>期货价格,此时买入看跌期权+卖出看涨期权+买入期货,左边等于高价卖空期货,右边低价买入期货,形成锁仓利润

做Python量化的可以一块交流

python 股市 无风险套利_Python期货期权无风险套利监控升级版相关推荐

  1. python 监视图_python获取zabbix监控图

    领导有个需求,希望每天邮件发出当天服务器的监控状态,开始是每天下午快下班的时候打开zabbix截图,每天都这样实在是累,于是写了一段脚本实现自动抓取图片,并组装成html,通过定时邮件发送,实现日报自 ...

  2. python 抢购口罩_Python 京东口罩监控+抢购

    代码 使用教程 环境 Python 3.7.1 代码修改 jdmain.py mailto_lists:收件人的邮箱 mail_sender:发件人邮箱 mail_pass:邮箱授权码 jd_url_ ...

  3. python炒股教程_Python股市数据分析教程 学会它,或可以实现半“智能”炒股

    原标题:Python股市数据分析教程 学会它,或可以实现半"智能"炒股 译者 | 阿里云云栖社区 摘要: 在本篇文章中,我们讨论了均线交叉策略的设计.回溯检验.基准测试以及实践中可 ...

  4. python 仪表盘实现_Python实现数据可视化看如何监控你的爬虫状态【推荐】

    今天主要是来说一下怎么可视化来监控你的爬虫的状态. 相信大家在跑爬虫的过程中,也会好奇自己养的爬虫一分钟可以爬多少页面,多大的数据量,当然查询的方式多种多样.今天我来讲一种可视化的方法. 关于爬虫数据 ...

  5. python控制系统进程_python 监控windows进程

    python os.startfile python实现双击运行程序 python监控windows程序 监控进程不在时重新启动 用python监控您的window服务 原创作品,允许转载,转载时请务 ...

  6. python股市_如何使用python和破折号创建仪表板来主导股市

    python股市 始终关注大局 (Keep Your Eyes on the Big Picture) I've been fascinated with the stock market since ...

  7. Python学习教程(Python学习视频_Python学些路线):Day05 总结和练习

    Python学习教程(Python学习视频_Python学些路线):总结和练习 练习清单 寻找"水仙花数". 寻找"完美数". "百钱百鸡" ...

  8. java调python 监控_利用Python实现一个简单的系统监控图表

    作为运维人员,想必大家肯定都做过这样的事情:为了监控系统资源使用情况,开了若干个窗口,来回切换看输出: 只要我切得够快,性能异常点就逃不过我的眼睛! 这个时候你要是有个监控工具自然是很好的,例如我们美 ...

  9. python watchdog占用,python基于watchdog库全自动化监控目录文件

    楔子 有些时候我们需要对一个目录进行监控,检测其内部是否有文件的新增.删除.以及每个文件的内容是否发生变化,这个时候如果是你的话,你会选择怎么做呢? 显然也是一个比较麻烦的工作,倒不是说难,主要是比较 ...

最新文章

  1. Flash 与物理笔记:简单的小球重力模拟
  2. 不要说自己没什么兴趣,也不要说自己兴趣很广泛,最好能具体到哪个方面,顺便提一下你最近看的一本该方面的书,有什么收获(转)...
  3. 强化学习(二)—— 价值学习(Value-Based)及DQN
  4. CMM与CMMI的关系
  5. InnoDB与MyISAM等存储引擎对比
  6. NGUI-Tweens
  7. 字符串转16进制字节数组,字节数组转16进制字符串
  8. android bitmap着色,android开发 替换bitmap中的颜色值
  9. 大话西游之程序员做项目
  10. android 程序必须有界面,Android开发之开机启动没有界面的应用程序
  11. linux的基本命令tail,Linux基本命令(示例代码)
  12. 量子计算机代表人物,量子力学究竟“可怕”在哪?科学家的怀疑或许是对的
  13. zlog 日志库使用说明,看完不懂打我...
  14. Ubuntu下安装SQLite、与简单介绍
  15. 【英语语法入门】 第23讲 动词的用法
  16. TI CC2530 学习笔记-13-NewBit-CC2530-ADC-内部温度传感器
  17. python 绘图如何画螺旋圈_如何画出python螺旋线
  18. 杰理-手表-AC701-watch-添加表盘
  19. 股票、期货、期权的差异
  20. AutoSAR系列讲解(入门篇)1.2-AutoSAR概述

热门文章

  1. Ubuntu安装MySQL5
  2. 对Chrome进行扩展【极简插件】
  3. Unity制作RPG游戏——按键功能的分类与实现
  4. 使用阿里云服务器搭建网站
  5. 将本计算机上的打印机分享出去,怎么把打印机设置共享
  6. Word字体大小对照换算表(字号、磅、英寸、像素)
  7. java 多少位表示一个字_一个字多少个字符
  8. nanomsg 框架简介
  9. 【毕业设计】基于SSM的教务管理系统
  10. 凸优化学习笔记 10:凸优化问题