python实现交易策略评价指标-收益率

1.收益率的定义

收益率几乎是所有投资者都会关注的一个指标,收益率的高低决定了投资策略的赚钱能力,常见关于收益率的指标如下:

  1. 持有期收益率
    持有期收益率 = 期末投资权益 − 期初投资权益 期初投资权益 持有期收益率 = \frac {期末投资权益 - 期初投资权益}{期初投资权益} 持有期收益率=期初投资权益期末投资权益期初投资权益

  2. 单利年化收益率(算术收益率)

    单利年化收益率 = 持有期收益率 持有期交易天数 ∗ 年交易天数 单利年化收益率 = \frac{持有期收益率}{持有期交易天数} * 年交易天数 单利年化收益率=持有期交易天数持有期收益率年交易天数

  3. 复利年化收益率(几何收益率)
    复利年化收益率 = ( 1 + 持有期收益率 ) 年交易天数 持有期交易天数 − 1 复利年化收益率 = (1 + 持有期收益率)^{\frac{年交易天数}{持有期交易天数}} - 1 复利年化收益率=1+持有期收益率)持有期交易天数年交易天数1

在实际计算中,一般年交易日天数可以取250

2. 计算收益率
  1. 获取贵州茅台2018.6.1 ~ 2019.12.31期间的日k数据

    import pandas as pd
    import numpy as np
    import baostock as bs
    
    lg = bs.login()
    # 显示登陆返回信息
    print('login respond error_code:'+lg.error_code)
    print('login respond  error_msg:'+lg.error_msg)
    
    #### 获取沪深A股历史K线数据 ####
    # 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。
    # 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag
    # 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
    rs = bs.query_history_k_data_plus("sh.600519",
        "date,code,open,high,low,close,volume",
        start_date='2018-06-01', end_date='2019-12-31',
        frequency="d", adjustflag="3")
    print('query_history_k_data_plus respond error_code:'+ rs.error_code)
    print('query_history_k_data_plus respond  error_msg:'+ rs.error_msg)
    
    data_list = []
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        data_list.append(rs.get_row_data())
    result = pd.DataFrame(data_list, columns=rs.fields)
    
    #### 结果集输出到csv文件 ####   
    result.to_csv("贵州茅台_k_data.csv", index=False)
    print(result)
    
    #### 登出系统 ####
    bs.logout()
    
  2. 读取贵州茅台的数据,并绘制股价走势图

    # 读取贵州茅台的日k数据,读入日期和收盘价
    data = pd.read_csv("贵州茅台_k_data.csv")[["date", "close"]];
    
    # 画出持有期股价走势图
    data.set_index('date', inplace=True)
    data.plot(figsize=(16, 10), subplots=True)
    

    在这里插入图片描述

  3. 计算单利年化收益率

    # 计算累计收益率
    total_return = (data.iloc[-1] - data.iloc[0]).close / data.iloc[0].close
    print("累计收益率:%.2f%%" %(total_return * 100))
    >> 累计收益率:58.77%
    
    
    # 计算持有期天数
    data_length = len(data.index)
    # 计算单利年化收益(算术收益率)
    annual_return1 = (total_return / data_length) * 250
    print("单利年化收益:%.2f%%" %(annual_return1 * 100))
    >> 单利年化收益:37.87%
    
  4. 计算复利年华收益率

    # 计算复利年化收益(几何收益率)
    annual_return2 = pow(1 + total_return, 250 / data_length) - 1
    print("复利年化收益:%.2f%%" %(annual_return2 * 100))
    >> 复利年化收益:34.70%
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值