backtrader学习系列-基础知识:如何计算sharp 比率

先看维基百科的定义:投资收益与无风险收益之差的期望值,再除以投资标准差(即其波动性)。它代表投资者额外承受的每一单位风险所获得的额外收益。公式如下:


image.png
from __future__ import print_function
import datetime
import numpy as np
import pandas as pd
import akshare as ak
import pandas_datareader.data as web
# 计算年化收益率
def annualised_sharpe(returns, N=252):
    return np.sqrt(N) * returns.mean() / returns.std()
def equity_sharpe(symbol, startdate, enddata):
    df = ak.stock_zh_a_hist(symbol=symbol, period="daily", start_date=startdate, end_date=enddata, adjust="")

    # Use the percentage change method to easily calculate daily returns
    df['daily_ret'] = df['收盘'].pct_change()
    # Assume an average annual risk-free rate over the period of 3%
    df['excess_daily_ret'] = df['daily_ret'] - 0.03/252
    # Return the annualised Sharpe ratio based on the excess daily returns
    return annualised_sharpe(df['excess_daily_ret'])
equity_sharpe('600000','20230101','20240101')
-0.7304499901503129

这里可以计算出相对%4收益的夏普比,值是负数,小于假设的无风险利率,说明买这个股票还不如存定期3个点。

def market_neutral_sharpe(symbol, index_benchmark,startdate, enddata):
    df_symbol = ak.stock_zh_a_hist(symbol=symbol, period="daily", start_date=startdate, end_date=enddata, adjust="")
    df_index = ak.index_zh_a_hist(symbol=index_benchmark, period="daily", start_date=startdate, end_date=enddata)
    
    # Calculate the percentage returns on each of the time series
    df_symbol['daily_ret'] = df_symbol['收盘'].pct_change()
    df_symbol.set_index(pd.to_datetime(df_symbol["日期"],format='%Y-%m-%d'),inplace=True)
    df_index['daily_ret'] = df_index['收盘'].pct_change()
    df_index.set_index(pd.to_datetime(df_index["日期"],format='%Y-%m-%d'),inplace=True)
    # 
    strat = pd.DataFrame(index=df_index.index)
    strat['net_ret'] = (df_symbol['daily_ret'] - df_index['daily_ret'])
    # Return the annualised Sharpe ratio for this strategy
    return annualised_sharpe(strat['net_ret'])

market_neutral_sharpe('600000','000001','20230101','20240101')
-0.3123001022491444

相对于和固定三个点相比,把上证指数作为基准,sharp 反而值大些,说明上证指数和固定三个点的定期相比,也不值得考虑,起码从这段历史数据上看是这样。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容