基于Python量化策略

牛市行情下的盈利与风险策略管理

牛市行情下的盈利策略与风险管理

1 项目背景

2 数据探索

2.1 数据获取

2.2 数据处理与分析

3 盈利策略量化建模与风险管理

3.1 期权看涨策略

3.2 期权看跌策略

4 模型优化

4.1 构建标的+看涨期权+看跌期权的策略

4.2 使用更多期权构建策略

5 总结

1 项目背景

A股市场散户较多,这类人缺乏专业投资知识并且情绪极易被大盘涨跌所左右,因而我国的牛市总是阶段性的疯牛,而很难走出持续性的慢牛。这也让不少投资在熊市赚到的钱全亏在牛市里。因此,在投资过程中具备一定的风险管理意识是很重要的。而期权赋予了持有人具有强保护力的权利,正是绝佳的金融风险管理产品。基于此,本项目将构建股票加期权的投资组合,使用真实的市场数据,回测其七月份牛市环境下的盈利能力,并探究其在大跌的几个交易日里的避险价值。 

2 数据探索

数据探索的关键环节包括:

  1. 获取数据

在进行金融量化分析过程中从外部获取的数据往往是不干净的,需要进行数据预处理(获取、整理、加工和清洗),通常数据预处理过程会占用较多的时间,只有处理好后干净的数据再进行数据分析才是高效可靠的。本项目使用到的数据集包括上证50ETF(510050.sh)和沪深300ETF(510300.sh,沪市)期权合约对应标的价格、华夏上证50ETF期权历史数据和期权价格数据;

  1. 数据预处理

数据预处理是从数据中检测、纠正或删除损坏,不准确或不适用于模型的记录的过程。数据预处理的目的是让数据适应模型,匹配模型的需求;

  1. 特征工程

特征工程是将原始数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑选最相关的特征,提取特征以及创造特征来实现;

  1. 数据可视化分析

通过Python matplotlib绘制可视化图形对数据进行直观分析;

  1. 建模

测试模型并预测出结果。

2.1 数据获取

2.1.1 标的资产数据获取

选择标的资产股票期权数据(stock_prices.xlsx)来源于2020年6月以来到7月底上证50ETF(510050.sh)和沪深300ETF(510300.sh,沪市)期权合约对应标的价格。这期间的政策面因素包括国内疫情防控工作突出、各行各业迅速走向复工复产、国外理性资金持续外流入中国A股市场和国家不断出台鼓励与利好政策等。

图 2-1-1 标的资产数据原始数据展示图

本项目在获取2020年6月1日至7月31日上证50ETF和沪深300ETF收盘价的历史行情信息后通过Python Pandas切片等方法进行数据整理,整理出符合数据分析格式的数据。

图 2-1-2 标的资产数据处理后数据展示图

2.1.2 期权合约数据获取

期权合约是以金融衍生品(比如股票、股票指数)作为标的物的交易合约,分为认购期权(看涨期权)以及认沽期权(看跌期权)。主要由交易单位、最小变动价位、每日价格最大波动限制、执行价格、执行价格间距、合约月份、最后交易日、合约到期日、权利金构成。

获取华夏上证50ETF期权历史数据(china_options.xlsx)。其中,华夏上证50ETF期权历史数据中包括了期权类型(看涨(call)或看跌(put)期权)、行权价、发行日期、到期日、和 期权发行价。观测数据格式,包含2766 行×8 列。每一行的特征属性就是一个期权合约内容,每一列就是具体的合约信息。数据的特征属性包括合约交易代码、合约名称、合约看涨/看跌(C看涨,P看跌)、行权方式、行权价格、到期日、挂牌价、挂牌日。

图 2-1-3 华夏上证50ETF期权合约数据展示图

2.1.3 期权数据获取

期权(option)又叫选择权,是一份合约。期权与股票和债券一样,也是一种证券。同时它也是一种具有约束力的合约,具有严格限定的条款和特性。获取期权价格数据(option_prices.xlsx),特征属性包括期权期权编号、交易日期、收盘价格、期权最新价格。期权价格通常是期权交易双方在交易所内通过竞价方式达成的。在同一品种的期权交易行市表中表现为不同的敲定价格对应不同的期权价格。读取期权数据并处理原始数据日期字段格式,选取期权编号作为索引,总计140条记录。

图 2-1-4 期权价格数据展示图

按照期权编号ts_code进行计数排序查看总共四个期权编号的数据('10002565.SH', '10002566.SH', '10002567.SH', '10002568.SH')。

图 2-1-5 期权数据分类展示图

2.2 数据处理与分析

2.2.1 标的资产数据处理

通过上证50ETF和沪深300ETF历史行情数据中的收盘价图形可视化分析每日价格表现波动。

图 2-2-1 标的资产数据展示图

根据历史行情数据绘制的价格表现走势图看出,从6月整体表现平稳,小幅震荡;进入到7月后出现牛市表现,7月整体小幅震荡反弹。同时上证50ETF和沪深300ETF行情表现趋势基本一致。投资者在权衡风险和收益的情况下,可以尝试做多7月平值认购的牛市策略。

图 2-2-2 标的资产对数收益率展现图

在标的资产收益率表现方面,通过计算每日对数收益率作为指标进行图形可视化分析回报率表现。

2.2.2 期权合约数据处理

观测数据集,上交所有两类期权合约,包括上证50ETF期权和沪深300ETF期权。其中上证50ETF期权在2015年已上市交易,而沪深300ETF期权在2019年上市交易,样本量相对较少。选择到期日(maturity_date)作为时间序列索引并筛选到期日(量化模型策略选7月22号清仓)maturity_date=='2020-07-22',总计76条数据。

从如上数据中继续选择“挂牌日”list_date作为时间序列索引,枚举出挂牌日列表,最后筛选出挂牌日list_date == '2020-06-02'的期权数据。

2.2.3 期权数据处理

对期权数据分类,并和标的资产数据合并。

3 盈利策略量化建模与风险管理

期权作为衍生工具,有风险管理、资产配置和价格发现等功能。期权在盈利策略和风险管理等方面有其独特的功能和作用。上证50 ETF和沪深300ETF期权是重要的金融衍生工具,其主要的市场功能之一是风险转移功能,一般通过购入认沽期权抵消现货ETF价格下跌风险或根据Delta指标进行风险管理;上证50 ETF和沪深300ETF期权的另一个重要功能便是无风险套利,包括通过备兑开仓获取权利金、根据期权权利金价格的上下限进行无风险套利和依据Gamma指标进行无风险套利。

期权有实值、平值和虚值三种价值状态。实值状态意味着立刻行权即可获得正收益,平值状态意味着立刻行权不赚也不亏,虚值状态意味着立刻行权获得负收益。当市场处于带有泡沫的繁荣期时,资产估值会虚高,同时投资者看多后市的情绪也会高涨,因而往往会导致虚值看涨期权的价值偏高(即市场普遍认为当前行权产生负收益的期权在未来行权会产生正收益),同时虚值看跌期权的价值偏低。股票期权价格的影响因素:

构建投资组合:看涨期权多头+看跌期权空头。

到期收益:等式两边的期末价值是相同的,因此等式两边的期初价值也应相等,即:。

3.1 期权看涨策略

牛市看涨期权价差交易是指投资者在买进一个协定价格较低的看涨期权的同时再卖出一个到期日相同但协定价格较高的看涨期权。一般情况下,牛市看涨期权价差策略的构建是:买入平值看涨期权+卖出虚值看涨期权。该策略适用的场景是:投资者预期市场价格上涨,但上涨幅度有限,或者投资者想减少买入看涨期权所支付的权利金成本。看涨期权的买方需要支付的权利金作为成本,盈亏平衡点为行权价+权利金。若到期日标的价格大于成本,即期权获利=标的到期日价格-行权价-权利金;若到期日标的的价格小于成本且大于行权价,即期权亏损=权利金-(标的到期日价格-行权价);若到期日标的的价格小于行权价,即期权亏损=权利金。总结得出期权买方最大亏损为所支付权利金且到期日价格越高,盈利越大。

策略逻辑:建仓日构建标的+看涨期权多头的投资组合,并计算标的资产的累计收益率。当累计收益率大于15%时,做空与标的资产等量的看涨期权,同时重新计算累计收益率;当累计收益率小于-3%时,做多等量的看涨期权,并重新计算累计收益率。7月22号清仓。

图中蓝色曲线为上证50ETF期权回报率表现,绿色曲线为上证50EFT期权看涨策略回报率表现。

对策略回报率表现进行累积求和分析,图中蓝色曲线为上证50ETF期权累积回报率表现,绿色曲线为上证50EFT期权看涨策略累积回报率表现。

图中蓝色曲线为沪深300ETF期权回报率表现,绿色曲线为沪深300ETF期权看涨策略回报率表现。

对策略回报率表现进行累积求和分析,图中蓝色曲线为沪深300ETF期权累积回报率表现,绿色曲线为沪深300ETF期权看涨策略累积回报率表现。

从上证50ETF和沪深300ETF的看涨策略回报率表现与期权对数收益率曲线的相关性分析,看出基本成正相关性;在7月22号清仓时达到可观的回报率。

3.2 期权看跌策略

看跌策略是一种简单的短期期权策略。看跌期权是出售的权利。当认为在未来一段时间内价格将上升,就可以采取这种策略。最好的结果是得到权利金,最坏的事情是标的物价格跌倒零。

策略逻辑:建仓日构建标的+看跌期权空头的投资组合,并计算标的资产的累计收益率。当累计收益率大于15%时,做多与标的资产等量的看跌期权,同时重新计算累计收益率;当累计收益率小于-3%时,做空等量的看跌期权,并重新计算累计收益率。7月22号清仓。

图中蓝色曲线为上证50ETF期权回报率表现,绿色曲线为上证50EFT期权看跌策略回报率表现。

对策略回报率表现进行累积求和分析,图中蓝色曲线为上证50ETF期权累积回报率表现,绿色曲线为上证50EFT期权看跌策略累积回报率表现,回报表现回归到零收益。

图中蓝色曲线为沪深300ETF期权回报率表现,绿色曲线为沪深300ETF期权看跌策略回报率表现。

对策略回报率表现进行累积求和分析,图中蓝色曲线为沪深300ETF期权累积回报率表现,绿色曲线为沪深300ETF期权看跌策略累积回报率表现。

从上证50ETF和沪深300ETF的看跌策略回报率表现与期权对数收益率曲线的相关性分析,在7月22号清仓时达到可观的回报率。

4 模型优化

4.1 构建标的+看涨期权+看跌期权的策略

期权策略组合和股票价格的起伏息息相关,期权较之股票能减少资金量的占用,提供相对较高的杠杆,通过组合期权建立起等价股票的策略。采用股票标的资产+看涨期权+看跌期权的策略优化模型。

策略逻辑:建仓日构建标的+看涨期权多头的投资组合,并计算标的资产的累计收益率。当累计收益率大于15%时,做多与标的资产等量的看跌期权并卖出持有的看涨期权,同时重新计算累计收益率;当累计收益率小于-5%时,做多等量的看涨期权并卖出持有的看跌期权,并重新计算累计收益率。7月22号清仓。

4.2 使用更多期权构建策略

策略逻辑:仅使用期权建仓,进行牛市投机投资的策略。建仓日构建仅含看涨期权多头的投资组合,并计算标的资产的累计收益率。当累计收益率大于15%时,卖出持有的看涨期权并做多看跌期权,同时重新计算累计收益率;当累计收益率小于-5%时,卖出持有的看跌期权并做多的看涨期权,并重新计算累计收益率。7月22号清仓。

5 总结

综上所述,本项目报告以上证50ETF(510050.sh)和沪深300ETF(510300.sh,沪市)期权合约对应标的价格(stock_prices.xlsx)、华夏上证50ETF期权历史数据(china_options.xlsx)和期权价格数据(option_prices.xlsx)数据为例,通过Python计算和可视化等技术验证牛市行情下的盈利策略与风险管理。

基于Python量化策略牛市行情下的盈利与风险策略管理相关推荐

  1. 使用python量化交易接口有哪些分析指标和策略?

    量化交易有哪些指标可以用于分析呢?主要有技术面和基本面可以用于分析! 来看一下技术面和基本面有什么区别? 技术面更关注具体的价格,比如每天的开盘价.收盘价.以及和开盘价/收盘价/最低价/最高价相关的K ...

  2. linux下搭建基于python的vim,Linux下搭建基于python的VIM-Go语言中文社区

    一.前言 最近需要在AArch64下编写代码,sublime text3不支持ARM,支持的一些还用不惯.所以干脆直接用上了万能的VIM,用VIM打造了属于自己的python-IDE,根据自己的喜好进 ...

  3. python用法查询软件_GitHub - ahahahahawd/youdao: 基于python 的命令行下查词工具,使用有道api...

    youdao 简介 这是一个基于Python 在控制台下查单词的小工具. 这个小程序是受https://github.com/Flowerowl/ici 启发, 用requests 库和有道的API ...

  4. Python量化交易学习笔记(33)——backtrader仓位管理

    本文将对backtrader的仓位管理进行介绍,具体以同时回测交易3只股票为例,查看每日仓位情况. 策略 买入条件:5日线金叉60日线 卖出条件:5日线死叉60日线 示例 仓位信息输出的核心代码位于策 ...

  5. A股月份效应的研究——基于python量化视角(backtrader回测)

    A股月份效应的研究 前言 <易经>早就揭示出:物极必反,盛极必衰! 阴阳总是不断交替的.股票市场也一样,涨跌互现,涨多了会出现调整,跌多了会出现反弹,因此我们看到K线组合总是红(阳)绿(阴 ...

  6. python量化交易通达信_通达信交易策略,通达信量化交易

    内容导航: Q1:通达信交易策略公式 满足gg后出现aa卖出 DIF:=EMA(CLOSE,12)-EMA(CLOSE,26); DEA:=EMA(DIF,9); MACD:=(DIF-DEA)*2; ...

  7. Python量化:评估投资组合的收益率和风险

    不要把所有的鸡蛋放在同一个篮子里,这是投资界中历久弥新的至理名言. 为了避免风险,投资人往往会将资产分散到不同的金融工具中,比如信托.债券.基金.股票.期货.期权甚至房地产市场等.那么在这么多金融产品 ...

  8. 基于python下django框架 实现多用户商城平台详细设计

    前言介绍(开发目的和意义) 本课题主要目标是设计并能够实现一个基于web网页的多用户商城系统,整个网站项目使用了B/S架构,基于python的Django框架下开发:用户通过登录网站,查询商品,购买商 ...

  9. 基于python下django框架 实现校园失物招领系统详细设计

    前言介绍(开发目的和意义) 本课题主要目标是设计并能够实现一个基于web网页的校园失物招领系统,整个网站项目使用了B/S架构,基于python的Django框架下开发:管理员通过后台录入信息.管理信息 ...

最新文章

  1. thinkphp3.2与phpexcel带图片生成 完美案例
  2. BZOJ3862Little Devil I——树链剖分+线段树
  3. 单手撑跨栏、两个空翻,终于看到了比人厉害的机器人
  4. 华为向全球发布AI数据库、分布式存储,跑分轻松拿世界第一
  5. Go语言的类型系统 - 翻译
  6. 【重点!DFS/记忆化递归 + BFS】LeetCode 133. Clone Graph
  7. 从git仓库获取源码_微软开源Scalar,提升操作巨型Git仓库的速度
  8. python pip国内源_Python pip配置国内源 (转载)
  9. java抽象工厂模式_java简单工厂模式和抽象工厂模式
  10. unity游戏开发之打包apk谷歌上架报错总结
  11. P2184 贪婪大陆(线段树或树状数组+思维)
  12. 手把手教你几种生成词云的方式
  13. 书摘---网络搜集整理 (11--20)
  14. 好记性不如烂笔头The palest ink is better than the best memory
  15. 苹果8a1660是什么版本_苹果A1660是什么型号?
  16. 从刚体动力学方程到 MATLAB 多种方法仿真验证
  17. ICM20602六轴传感器-IIC通信模式
  18. 钱多多软件制作第五天
  19. 打开虚拟机报错,解决:Entering emergency mode. Exit the shell to continu
  20. 292、Java中级09 - 【Lambda表达式】 2020.02.29

热门文章

  1. 渗透测试基础 - APP渗透测试(上)
  2. php 变量的md5加密,利用PHP脚本在Linux下用md5函数加密字符串的方法
  3. lenovo小新 win10系统装ubuntu经验总结
  4. windows添加快速启动栏
  5. win10 蓝牙耳机配对成功,但无法连接
  6. 直方图均衡化(Matlab实现)
  7. 关于android文件路径 转 Bitmap
  8. 超详细的排序算法讲解!一看就懂!
  9. python调用mysql数据进行计算_python使用peewee实现mysql数据操作
  10. [原创]破解大众PQ35 46平台CAN总线网络(包括BAP库)