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%
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/182577.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ELK企业级日志分析平台——ES集群监控

启用xpack认证 官网:https://www.elastic.co/guide/en/elasticsearch/reference/7.6/configuring-tls.html#node-certificates 在elk1上生成证书 [rootelk1 ~]# cd /usr/share/elasticsearch/[rootelk1 elasticsearch]# bin/elasticsearch-certutil ca[rootelk1 ela…

OpenAI 曾收到 AI 重大突破警告;半独立的 OpenAI 比与微软合并更好丨 RTE 开发者日报 Vol.91

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

图解分库分表

中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。 垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出…

自养号测评补单对亚马逊,美客多,国际站卖家有什么影响

做测评,补单。其本质也是增加真实用户浏览下单,得到平台规则的承认,让它给你更多曝光和排名,从而增加转化率。相信很多卖家都没做过测评,补单。只靠着产品优化,广告和催评等手段来提升店铺,但是…

暗物质探测器认知教学VR元宇宙平台打破传统束缚

“飞船正在上升,马上就冲出大气层了!”这是一位在1:1还原的神舟飞船返回舱内借助VR设备置身元宇宙世界,沉浸式体验升空全过程的游客兴奋地说道。不仅如此,在载人飞船训练期,元宇宙技术为航天员虚拟一个逼真的太空世界&…

Modbus RTU、Modbus 库函数

Modbus RTU 与 Modbus TCP 的区别 一般在工业场景中,使用 Modbus RTU 的场景更多一些,Modbus RTU 基于串行协议进行收发数据,包括 RS232/485 等工业总线协议。采用主从问答式(master / slave)通信。 与 Modbus TCP 不…

uni-app打包后,打开软件时使其横屏显示

找到page.json文件,在global加入以下代码: 这样就可以横屏显示了。

Django框架之中间件

目录 一、引入 二、Django中间件介绍 【1】什么是Django中间件 【2】Django中间件的作用 【3】示例 三、Django请求生命周期流程图 四、Django中间件是Django的门户 五、Django中间件详解 六、中间件必须要掌握的两个方法 (1) process_request (2) process_respon…

Vivado Modelsim联合进行UVM仿真指南

打开Vivado,打开对应工程,点击左侧Flow Navigator-->PROJECT MANAGER-->Settings,打开设置面板。点击Project Settings-->Simulation选项卡,如下图所示。 将Target simulator设为Modelsim Simulator。 在下方的Compil…

Android修行手册-超出父布局进行显示以及超出父布局实现点击

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

postgresql数据库中update使用的坑

简介 在数据库中进行增删改查比较常见,经常会用到update的使用。但是在近期发现update在oracle和postgresql使用却有一些隐形区别,oracle 在执行update语句的时候set 后面必须跟着1对1的数据关联而postgresql数据库却可以一对多,这就导致数据…

GaussDB技术解读系列:数据实例的连接

GaussDB是华为公司倾力打造的自研企业级分布式关系型数据库,该产品具备企业级复杂事务混合负载能力,同时支持优异的分布式事务,同城跨AZ部署,数据0丢失,支持1000扩展能力,PB级海量存储等企业级数据库特性。…

【实战精选】掌握图像风格迁移:构建基于生成对抗网络的系统

1.研究背景与意义 随着计算机技术的不断发展,图像处理和计算机视觉领域取得了长足的进步。图像风格迁移是其中一个备受关注的研究方向,它可以将一幅图像的风格特征应用到另一幅图像上,从而创造出新的图像。这项技术具有广泛的应用前景&#…

RK3399平台开发系列讲解(内核入门篇)ConfigFS 的核心数据结构

🚀返回专栏总目录 文章目录 一、关键数据结构二、config_item 的结构体三、属性和方法沉淀、分享、成长,让自己和他人都能有所收获!😄 📢虚拟文件系统 ConfigFS 是一个特殊的文件系统,旨在提供一种动态配置 Linux 内核和设备的机制。 一、关键数据结构 ConfigFS 的核…

解决Emmy Lua插件在IDEA或 Reder 没有代码提示的问题(设置文件关联 增加对.lua.txt文件的支持)

目录 Reder版本2019.x Reder版本2021.1.5x Reder版本2019.x 解决Emmy Lua插件在IDEA或 Reder 没有代码提示的问题(设置文件关联 增加对.lua.txt文件的支持) Reder版本2021.1.5x 解决Emmy Lua插件在IDEA或 Reder 没有代码提示的问题(设置文件关联 增加对.lua.txt文件的支持)…

【精选】​​通道热点加持的LW-ResNet:小麦病害智能诊断与防治系统

1.研究背景与意义 小麦是世界上最重要的粮食作物之一,但由于病害的侵袭,小麦产量和质量受到了严重的威胁。因此,开发一种高效准确的小麦病害识别分类防治系统对于保障粮食安全和农业可持续发展具有重要意义。 传统的小麦病害识别分类方法主…

6.1.webrc媒体协商

那今天呢?我们来看一下y8 rtc的媒体协商,那实际上在我们之前的课程中呢?我已经向你介绍过y8 rtc的媒体协商了。只不过呢,角度是不一样的,在之前介绍外边tc媒体协商的时候呢,我们是从应用的角度来看。那web …

C++的new / delete 与 C语言的malloc/realloc/calloc / free 的讲解

在C语言中我们通常会使用malloc/realloc/calloc来动态开辟的空间,malloc是只会开辟你提供的空间大小,并不会初始化内容;calloc不但会开辟空间,还会初始化;realloc是专门来扩容的,当你第一次开辟的空间不够用…

【MATLAB】全网入门快、免费获取、持续更新的科研绘图教程系列1

1 【MATLAB】科研绘图第一期点线图 %% Made by Lwcah %% 公众号:Lwcah %% 知乎、B站、小红书、抖音同名账号:Lwcah,感谢关注~ %% 更多MATLABSCI绘图教程敬请观看~%% 清除变量 clc; clear all; close all;%% 一幅图的时候figureWidth 8.5;figureHeight …

鸿蒙 ark ui 轮播图实现教程

前言: 各位同学有段时间没有见面 因为一直很忙所以就没有去更新博客。最近有在学习这个鸿蒙的ark ui开发 因为鸿蒙不是发布了一个鸿蒙next的测试版本 明年会启动纯血鸿蒙应用 所以我就想提前给大家写一些博客文章 效果图 具体实现 我们在鸿蒙的ark ui 里面列表使…