引言:

邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助。

【历史文章汇总】请点击此处

【必读文章】EOS期现套利,一周时间,15%无风险收益

10年400倍策略分享(附视频逐行代码讲解)

个人微信:xbx9585,有问题欢迎交流。


如何判断一个策略的好坏?

对于一个交易策略,初学者往往认为收益越高越好。收益确实是一个重要的评价指标,但是除了收益之外,还有很多其他重要的角度来衡量一个策略的好坏。例如这个策略的风险性、胜率、交易频率等。

本篇文章以几个常见的交易策略评价指标为案例,向大家介绍pandas的以下几个功能的运用:

  1. dataframe的合并操作:append()、concat()函数的用法
  2. 按某一列的值排序操作:sort_values()函数的用法
  3. 常见统计指标的方法:mean(), std()等
  4. 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量化入门】如何判断一个策略的好坏?(附代码)相关推荐

  1. 【邢不行|量化小讲堂系列46-实战篇】用Python验证A股名言:跳空必回补...吗?【附代码】

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...

  2. matlab如何测两点的角度_【邢不行|量化小讲堂系列01-Python量化入门】如何快速上手使用Python进行金融数据分析...

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]: [邢不 ...

  3. python中shift函数rolling_【邢不行|量化小讲堂系列18-Python量化入门】简易波动指标(EMV)策略实证...

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. 个人微信:xingbuxing0807,有问题欢迎 ...

  4. 【邢不行|量化小讲堂系列44-实战篇】历年排名前10的基金,在第2年表现如何?Python告诉你答案

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...

  5. python量化交易alpha策略_【邢不行|量化小讲堂系列11-Python量化入门】如何判断一个策略的好坏?(建议收藏)...

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. 个人微信:xingbuxing0807,有问题欢迎 ...

  6. python入门指标_【邢不行|量化小讲堂系列18-Python量化入门】简易波动指标(EMV)策略在A股的实证...

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用Python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 个人微信:xingbx ...

  7. 【邢不行|量化小讲堂系列45-实战篇】关于股票市值:99%投资者不知道的坑,你知道吗?

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...

  8. 资金流数据详解 | 一笔交易有买有卖,如何确定流入还是流出?【邢不行|量化小讲堂系列63-实战篇】

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章] [邢不行 ...

  9. 【邢不行|量化小讲堂系列43-实战篇】:在量化投资中,原来K线还能这么画(附画K线代码)

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...

  10. 【邢不行|量化小讲堂系列40-Python量化入门】为什么我推荐使用Anaconda

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...

最新文章

  1. “���”引发的线上事故
  2. 灰盒测试—数据库软件
  3. python观察日志(part23)--更改图片尺寸并保存
  4. 生物信息 python 书籍_用python做生物信息数据分析(1-环境准备)
  5. md5加密解密代码_Python内置方法实现基于秘钥的信息加解密
  6. Git常见指令的本质
  7. db2插入的时候怎么自增_3篇长文讲“自增ID”,大部分人仍然搞错了!?
  8. 创意油墨飞溅效果的绿树矢量素材
  9. lvs负载均衡的调度算法和工作模式
  10. qt qml StackView 触摸滑动返回(swiping pop)
  11. 如何拥有一个游戏策划的思维
  12. 第七批中国历史文化名镇名村名单出炉 有你家吗?
  13. 北漂小斌和你分享北京大兴机场3dmax模型
  14. effect和watch 的区别详解
  15. 亲爱的热爱的百度云全集资源
  16. Mac菜鸟进阶必学的10个Mac小技巧
  17. 深入浅出对话系统——概述
  18. 学单片机之前需要做哪些准备?
  19. 小米四启用虚拟按键以及禁用实体按键
  20. Jetson 配置中文环境,中文输入法,安装QQ

热门文章

  1. 2021年茶艺师(初级)考试报名及茶艺师(初级)作业考试题库
  2. c语言复数运算 除法,复数基本运算(C语言).doc
  3. 想做电商,如何做起?
  4. oracle trim函数的用法
  5. (多图详细步骤)记录新毛桃工具制作U盘启动盘给服务器安装centos系统以及遇到的问题
  6. 机器人布里茨说什么_英雄联盟:你所不知道的蒸汽机器人,布里茨的背景故事...
  7. 寻仙手游服务器无响应,寻仙手游
  8. 租用Topaz Video Enhance AI
  9. 在cmake环境下使用NTL库
  10. 联发科的turn key模式