【邢不行|量化小讲堂系列11-Python量化入门】如何判断一个策略的好坏?(附代码)
引言:
邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助。
【历史文章汇总】请点击此处
【必读文章】EOS期现套利,一周时间,15%无风险收益
10年400倍策略分享(附视频逐行代码讲解)
个人微信:xbx9585,有问题欢迎交流。
如何判断一个策略的好坏?
对于一个交易策略,初学者往往认为收益越高越好。收益确实是一个重要的评价指标,但是除了收益之外,还有很多其他重要的角度来衡量一个策略的好坏。例如这个策略的风险性、胜率、交易频率等。
本篇文章以几个常见的交易策略评价指标为案例,向大家介绍pandas的以下几个功能的运用:
- dataframe的合并操作:append()、concat()函数的用法
- 按某一列的值排序操作:sort_values()函数的用法
- 常见统计指标的方法:mean(), std()等
- pandas画图操作:plot方法
我将介绍如下几个经典指标
- 年化收益
任何收益都应该转换成年化收益,以进行比较。股神巴菲特投资几十年以来的年化收益是20%左右。美国股市百年来年化收益大概是10%左右。所以我们也不要太贪心,不要动辄就要求每年翻倍的收益。计算公式为:(账户最终价值/账户初始价值)^(250/回测期间总天数)-1 - 最大回撤
最大回撤就是从一个高点到一个低点最大的下跌幅度,用来描述我们的策略可能出现的最糟糕的情况,衡量了最极端可能的亏损。例如一个策略的最大回撤是50%,那么你使用这个策略之前就要掂量掂量,自己是否能经受得起50%的下跌。计算公式为:min(账户当日价值 / 当日之前账户最高价值-1)。
我一般认为,年华收益/最大回撤,是个最简单有效的策略判断指标。
- 平均涨幅
平均涨幅衡量了在回测期间资产的平均涨跌情况。计算公式为:账户日收益的平均值。 - 上涨概率
上涨概率衡量了我们投资组合上涨的可能性。计算公式为:上涨天数 / 回测交易日数量。 - 最大连续上涨天数
衡量了我们策略连续盈利的最大天数。 - 最大连续下跌天数
衡量了我们策略连续亏损的最大天数。或者说策略连续失效的次数。这个指标很重要,在实战中,若连续失败的次数多了,会动摇自己的信心,使自己很难跟着策略走下去。 - 最大单周期涨幅
所有日期中最大的涨幅,衡量了资产一天内的最好表现。 - 最大单周期跌幅
所有日期中最大的跌幅,衡量了资产一天内的最差表现。 - 收益波动率
单单追求高收益率是不行的,我们在投资中还必须考虑到潜在的风险。波动太大的策略往往风险也较高。收益波动率就衡量了策略收益的波动情况即风险。计算公式为:账户日收益的年化标准差。 - 贝塔(beta)值
根据经典的资本资产定价理论(CAPM模型),β系数衡量了资产的回报率对市场变动的敏感程度,代表了该资产的系统性风险,表示策略对大盘的敏感性。计算公式为:账户日收益与参考基准日收益的协方差 / 参考基准日收益的方差。 - 阿尔法(alpha)值
虽然我们的策略会受到大盘的影响,但是每个策略都会有自己市场因素之外的收益,alpha值表示实际风险回报和平均预期风险回报的差额,衡量了投资的非系统性风险。计算公式为:(账户年化收益-无风险收益)-beta*(参考基准年化收益-无风险收益)。 - 夏普比率
理性的投资者将选择并持有有效的投资组合,即那些在给定的风险水平下使期望回报最大的投资组合,夏普比率就是一个可以同时对收益与风险加以综合考虑的经典指标,表示每承受一单位风险,会产生多少的超额回报。计算公式为:(账户年化收益率-无风险利率)/ 收益波动率。 - 信息比率
信息比率以马克维茨的均异模型为基础,用来衡量超额风险所带来的超额收益。它表示单位主动风险所带来的超额收益。计算公式为:(账户日收益 – 参考基准日收益)的年化均值/年化标准差。
—程序—
任何策略的结果都是一个收益序列,根据这个收益序列可以得到一条资金曲线。为了简单起见,我们就任选一只股票每天的收益率作为原始数据,来计算上文提到的各种策略评价指标。在http://yucezhe.com/product?name=trading-data可以下载到所有股票的历史日线数据,可以作为我们计算的原始数据。
数据下载下来解压缩打开后,里面有所有股票和几个常见指数的数据。打开其中一个股票文件之后是下图这个样子,每一行是每一天的数据:
数据有以下的字段:
【code】股票的代码,上证股票以sh开头,深证股票以sz开头
【date】交易日期
【open】开盘价
【high】最高价
【low】最低价
【close】收盘价
【change】涨跌幅,复权之后的真实涨跌幅,保证准确
【volume】成交量
【money】成交额
【traded_market_value】流通市值
【market_value】总市值
【turnover】换手率,成交量/流通股本
【adjust_price】后复权价,复权开始时间为股票上市日,精确到小数点后10位
【report_date】最近一期财务报告实际发布的日期
【report_type】最近一期财务报告的类型,3-31对应一季报,6-30对应半年报,9-30对应三季报,12-31对应年报
【PE_TTM】最近12个月市盈率,股价 / 最近12个月归属母公司的每股收益TTM
【PS_TTM】最近12个月市销率, 股价 / 最近12个月每股营业收入
【PC_TTM】最近12个月市现率, 股价 / 最近12个月每股经营现金流
【PB】市净率,股价 / 最近期财报每股净资产
对于我们来说,只要取【date】以及【change】就行了。下面是代码的截图,这段代码截取指定的股票在指定时间段内的收益率,计算相关指标。代码里面有详细的注释,有问题可以留言,需要代码可以加我微信xbx9585索要。
获取数据函数:
计算年化收益率函数:
image.pn计算最大回撤函数:
计算平均涨幅:
计算上涨概率:
计算最大连续上涨天数和最大连续下跌天数:
计算最大单周期涨幅和最大单周期跌幅:
计算收益波动率的函数、计算贝塔的函数:
计算alpha的函数:
计算夏普比函数:
计算信息比率函数、计算股票和基准在回测期间的累计收益率并画图:
导入数据运行以上函数:
把数据和代码下载下来后,修改代码中原始数据的地址(也就是选择一个股票),并选定时间段,运行代码,就可以看到输出结果了。假设我们选择万科A,并设定时间段为1991年1月1日到2015年12月31日这25年,得到如下的输出结果:
万科A二十几年年年化回报是15%,已经相当不错了,最大回撤为78.9756%,也就是将近跌了80%,发生在08年的股灾。最大连续下跌50天,也是有点猛…
对本文研究有自己的想法的朋友,欢迎在评论区留言。关于文中的代码、数据,以及下期《量化小讲堂》想了解的内容,也可以加我个人微信xbx9585交流。
如果你想入门量化,但是始终找不到方向,可以加入我的知识星球。我会在里面解答你的问题,分享我的感悟,不论是投资、技术,还是职业选择、思维方式。
-- 学习和成长从来都不是一个人的事 --
【邢不行|量化小讲堂系列11-Python量化入门】如何判断一个策略的好坏?(附代码)相关推荐
- 【邢不行|量化小讲堂系列46-实战篇】用Python验证A股名言:跳空必回补...吗?【附代码】
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...
- matlab如何测两点的角度_【邢不行|量化小讲堂系列01-Python量化入门】如何快速上手使用Python进行金融数据分析...
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]: [邢不 ...
- python中shift函数rolling_【邢不行|量化小讲堂系列18-Python量化入门】简易波动指标(EMV)策略实证...
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. 个人微信:xingbuxing0807,有问题欢迎 ...
- 【邢不行|量化小讲堂系列44-实战篇】历年排名前10的基金,在第2年表现如何?Python告诉你答案
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...
- python量化交易alpha策略_【邢不行|量化小讲堂系列11-Python量化入门】如何判断一个策略的好坏?(建议收藏)...
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. 个人微信:xingbuxing0807,有问题欢迎 ...
- python入门指标_【邢不行|量化小讲堂系列18-Python量化入门】简易波动指标(EMV)策略在A股的实证...
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用Python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 个人微信:xingbx ...
- 【邢不行|量化小讲堂系列45-实战篇】关于股票市值:99%投资者不知道的坑,你知道吗?
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...
- 资金流数据详解 | 一笔交易有买有卖,如何确定流入还是流出?【邢不行|量化小讲堂系列63-实战篇】
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章] [邢不行 ...
- 【邢不行|量化小讲堂系列43-实战篇】:在量化投资中,原来K线还能这么画(附画K线代码)
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...
- 【邢不行|量化小讲堂系列40-Python量化入门】为什么我推荐使用Anaconda
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...
最新文章
- “���”引发的线上事故
- 灰盒测试—数据库软件
- python观察日志(part23)--更改图片尺寸并保存
- 生物信息 python 书籍_用python做生物信息数据分析(1-环境准备)
- md5加密解密代码_Python内置方法实现基于秘钥的信息加解密
- Git常见指令的本质
- db2插入的时候怎么自增_3篇长文讲“自增ID”,大部分人仍然搞错了!?
- 创意油墨飞溅效果的绿树矢量素材
- lvs负载均衡的调度算法和工作模式
- qt qml StackView 触摸滑动返回(swiping pop)
- 如何拥有一个游戏策划的思维
- 第七批中国历史文化名镇名村名单出炉 有你家吗?
- 北漂小斌和你分享北京大兴机场3dmax模型
- effect和watch 的区别详解
- 亲爱的热爱的百度云全集资源
- Mac菜鸟进阶必学的10个Mac小技巧
- 深入浅出对话系统——概述
- 学单片机之前需要做哪些准备?
- 小米四启用虚拟按键以及禁用实体按键
- Jetson 配置中文环境,中文输入法,安装QQ
热门文章
- 2021年茶艺师(初级)考试报名及茶艺师(初级)作业考试题库
- c语言复数运算 除法,复数基本运算(C语言).doc
- 想做电商,如何做起?
- oracle trim函数的用法
- (多图详细步骤)记录新毛桃工具制作U盘启动盘给服务器安装centos系统以及遇到的问题
- 机器人布里茨说什么_英雄联盟:你所不知道的蒸汽机器人,布里茨的背景故事...
- 寻仙手游服务器无响应,寻仙手游
- 租用Topaz Video Enhance AI
- 在cmake环境下使用NTL库
- 联发科的turn key模式