年化收益率

import pandas as pd
import tushare as tsdef get_annual_profit(maotai,geli,start_date,end_date):df_maotai=ts.get_hist_data(maotai,start=start_date,end=end_date)df_geli=ts.get_hist_data(geli,start=start_date,end=end_date)maotai_annual_profit=(1+(df_maotai.head(1)['close'].values[0]/df_maotai.tail(1)['close'].values[0]-1))**(250/df_maotai.shape[0])-1geli_annual_profit=(1+(df_geli.head(1)['close'].values[0]/df_geli.tail(1)['close'].values[0]-1))**(250/df_geli.shape[0])-1print u'茅台年化收益: ',maotai_annual_profit,u' 格力电器年化收益: ',geli_annual_profitget_annual_profit('600519','000651','2017-06-01','2017-11-17')

输出:
茅台年化收益: 1.3600202949 格力电器年化收益: 0.82970020908

Sharp率

import pandas as pd
import pymongo,datetime
import tushare as ts
import matplotlib as mpl
import matplotlib.pyplot as pltconn = pymongo.MongoClient()def get_sharp(fund_code):c=conn.stks.fund_codes.find_one({'code':fund_code})if c==None:returnfund={'name':c['name'],'fund_id':c['_id'],'code':fund_code}df_fund=pd.DataFrame(list(conn.stks.fund_daily_values.find({'fund_id':fund['fund_id'],'date':{'$gte':datetime.datetime.strptime('2017-01-01','%Y-%m-%d'),'$lte':datetime.datetime.now()}})))df_fund.sort_values('date',ascending=True,inplace=True)df_fund['change']=df_fund['net_asset_value'].pct_change()annual_return=(df_fund['net_asset_value'].tail(1).values[0]/df_fund['net_asset_value'].head(1).values[0])**(250/df_fund.shape[0])-1lost_free_return=0.04sharp=(annual_return-lost_free_return)/df_fund['change'].describe().std()print fund['name']+' Sharp=',round(sharp*100,2),'%'funds=['519195','110022','003095','001617','001195','502010','217027']
for f in funds:get_sharp(f)

输出

万家品质 Sharp= 0.34 %
易方达消费行业 Sharp= 0.78 %
中欧医疗健康混合A Sharp= 0.33 %
天弘中证电子指数A Sharp= 0.29 %
工银农业产业股票 Sharp= 0.13 %
易方达证券公司分级 Sharp= -0.09 %
招商央视财经50指数A Sharp= 0.54 %

最大回撤

import pandas as pd
import tushare as tsdef calculate_max_drawdown(code,start='2017-01-01',end='2017-11-21'):df=ts.get_hist_data(code,start=start,end=end)highest_close=df['close'].max()df['dropdown']=(1-df['close']/highest_close)max_dropdown=df['dropdown'].max()print 'max dropdown of %s is %.2f%s' % (code,max_dropdown*100,'%')calculate_max_drawdown('002049')

输出:
max dropdown of 002049 is 47.63%

α、β值 与 定价曲线CAPM

import pandas as pd
import datetime,pymongo
import tushare as ts
import matplotlib as mpl
import matplotlib.pyplot as pltdef calculate_beta(df_stock,df_hs300,code,start='2017-01-01',end='2017-11-20'):df=pd.DataFrame({code:df_stock['close'].pct_change(),'hs300':df_hs300['close'].pct_change()},index=df_stock.index)cov=df.corr().iloc[0,1]df_hs300['change']=df_hs300['close'].pct_change()*100var=df_hs300['change'].var()beta=cov/varreturn beta# 定价曲线
def make_capm(code,start='2017-01-01',end='2017-11-20'):df_stock=ts.get_hist_data(code,start=start,end=end)df_hs300=ts.get_hist_data('hs300',start=start,end=end)df_stock.sort_index(ascending=True,inplace=True)df_hs300.sort_index(ascending=True,inplace=True)beta=calculate_beta(df_stock,df_hs300,code,start=start,end=end)loss_free_return=0.04df=pd.DataFrame({code:df_stock['close']/df_stock['close'].values[1]-1,'hs300':df_hs300['close']/df_hs300['close'].values[1]-1,'days':xrange(1,df_stock.shape[0]+1)},index=df_stock.index)df['beta']=df['days']*loss_free_return/250 + beta*(df['hs300']-df['days']*loss_free_return/250)df['alpha']=df[code]-df['beta']df[[code,'hs300','beta','alpha']].plot(figsize=(960/72,480/72))# make_capm('601318')# make_capm('600030')
# make_capm('600030',start='2017-10-10')
# make_capm('600036')
make_capm('601688')
输出:
19883-aa01a9ec094fc078.png
601688 华泰证券.png

推荐阅读:

1.市面上经典的量化交易策略都在这里了!

2.期货/股票数据大全查询(历史/实时/Tick/财务等)

3.量化交易领域最重要的10本参考书推荐!

4.最科学的仓位管理利器-凯利公式,从方法上胜过99%散户

常见基本回测指标(年化收益率,夏普率,最大回撤,β值,α值)的实现相关推荐

  1. backtrader量化回测,基础篇,附MACD交易回测代码

    backtrader由德国工程师开发,拥有股票的回测,检测交易策略,支持期货实时交易,对于股票交易还在完善,我尝试了pylagotrade,vn.py,发现backtrader功能强大,交易策略全面, ...

  2. python外汇交易回测系统_易经量化交易系统之回测系统1

    我们在这里向大家介绍如何从零开始,实现一个适合于A股市场的回测系统.在这里我们以A股日K线数据为例,实际上可以比较方便的扩展为分级的数据源. Tick数据类 我们首先定义一个Tick数据的基类,这个类 ...

  3. 《机械交易系统》读书笔记:回测指标

    1.总的净盈 这是对系统盈利能力的衡量,但它并没有考虑其中所蕴涵的风险.这个限制,这只能当作一个比较粗略的指标.但是,当我们需要比较不同的交易策略时,因为每个交易策略都可能包含若干交易系统,使用这个指 ...

  4. python量化策略源码_Python量化交易进阶讲堂-创建自定义量化回测框架

    欢迎大家订阅<Python实战-构建基于股票的量化交易系统>小册子,小册子会陆续推出与小册内容相关的专栏文章,对涉及到的知识点进行更全面的扩展介绍,并且会有选择地收录至小册中,更便于广大读 ...

  5. Python量化投资——投资组合的评价和可视化(上):计算收益率、波动率、最大回撤、阿尔法alpha、贝塔beta、夏普率Sharp等指标【源码+详解】

    投资组合的评价和可视化(上)--评价指标的计算 投资结果评价 本文示例数据下载 投资过程回顾 基于收益的投资组合评价 收益率.年化收益.每日收益率 月度历史收益率 基于风险度量的投资组合评价 Vola ...

  6. 量化投资回测教学之掌握矢量化回测

    量化投资回测教学之掌握矢量化回测 1. 什么是回测? 回测用于模拟交易策略的过去表现. 回测的核心概念是通过回溯时间来模拟给定的交易策略,并像过去一样执行交易.产生的利润通常通过一些指标(例如最大回撤 ...

  7. Python量化投资——股票择时到底能否赚钱?ADX指标的有效性回测

    ADX指标的有效性回测 Python量化投资--`ADX`技术指标的有效性研究 背景介绍 技术指标介绍 指标用法建议 `qteasy`中的ADX内置策略 433支股票五年回测结果 12.45% --该 ...

  8. python金融分析小知识(34)——年化收益率、年化波动率以及夏普比率的计算

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 大家好呀 好久不见!最近忙的事情太多了 没来得 ...

  9. Python量化投资——投资组合的评价和可视化(下):使用Matplotlib生成专业的投资回测数据可视化仪表盘【源码+详解】

    使用Matplotlib生成专业的数据可视化仪表盘(下篇) 投资结果的可视化(下篇) 图表的布局规划及格式设定 图表布局 格式设定 表头和回测结果摘要信息 表1:绘制收益率曲线图 1,绘制投资收益率以 ...

最新文章

  1. 爬虫与浏览器的区别,爬虫产生(出自简书)
  2. 机房收费系统中——存储过程中加入事务,实现学生注册
  3. 万字长文让你看够幂级数
  4. 【Qt】2D绘图之坐标系统
  5. 画图讲解SQL join 语句
  6. python实现视频关键帧提取(基于帧间差分)
  7. LeetCode——Word Break
  8. DOM4J介绍与代码示例【转载】
  9. 烂泥:SQL Server 2005数据库安装
  10. 如何查看磁盘分区情况
  11. PMP练习199题答案解析版
  12. 人脸识别最全知识图谱
  13. c语言存储转置矩阵,C语言实现矩阵转置(附带源码)
  14. 【清澄】A1013. 进制转换4
  15. FPGA_UART串口通信
  16. 玩转 IDEA 系列教程——强烈推荐官方中文(汉化)插件!
  17. 哪些浏览器支持html5?
  18. C#链接SQL知识点
  19. 脑机接口002 | 上海与长三角地区脑科学发展与跨学科合作
  20. FZU Problem 2238 Daxia Wzc's problem(Lucas定理求组合数)

热门文章

  1. MathType中如何批量修改公式字体和大小
  2. 视频号新手必备:定位、涨粉、私域全攻略
  3. 日复一日,年复一年,祝我們都好在新的一年.
  4. c语言字符串单词反序输出,字符串中的每个单词倒序输出问题
  5. 苹果Usb连接linux,Mount iPhone in Linux using USB (ifuse, libiphone)
  6. 三维家可以导入别人的方案吗_怎么把su模型导入三维家
  7. linux 网络使用log,linux 网络命令last、lastlog、traceroute、netstat
  8. L1-051 打折 (5分)
  9. 组图:87版《红楼梦》金陵12钗选角内幕
  10. 【UBDC干货分享】数据运营驱动企业价值破圈增长