• python 计算最大回撤


    1. 什么是最大回撤

    最大回撤是评估金融产品收益的一个非常重要的风险指标,它指的是在选定历史周期内任一历史时点往后推,产品净值走到最低点时的收益率回撤幅度的最大值。

    在这里插入图片描述
    以上图为例, 最大回撤 = ( V a l u e A − V a l u e B ) V a l u e A 最大回撤 = \frac{(ValueA - ValueB) } {ValueA} 最大回撤=ValueA(ValueAValueB)

    2. 计算最大回撤

    下面演示使用pandas 计算最大回撤

    1. 获取贵州茅台20191.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='2019-01-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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    在这里插入图片描述
    2. 读取贵州茅台的日k数据,读入日期和收盘价

    data = pd.read_csv("贵州茅台_k_data.csv")[["date", "close"]];
    
    • 1

    3.计算每天的回撤值

    # 找出当前值以前的最大值
    data["previous_max"] = data["close"].cummax(axis=0)
    # 计算每一天的回撤
    data['draw_downs'] = data['close'] / data['previous_max'] - 1
    
    • 1
    • 2
    • 3
    • 4

    4.可视化

    data.plot(y=['close','previous_max'], figsize=(8,4))
    
    • 1

    在这里插入图片描述

    # 绘制回撤曲线
    data.plot(y='draw_downs',figsize=(8,4),color='g')
    
    • 1
    • 2

    在这里插入图片描述

    5.计算最大回撤

    # 最大回撤
    data['draw_downs'].min()
    
    • 1
    • 2
  • 相关阅读:
    QT学习_05_各种对话框
    软件设计与体系结构编程题汇总
    MyBatis的高级映射
    电脑开机速度慢怎么解决?
    Python实现mysql基于配置文件的全自动增量数据备份
    fastadmin框架调用model层的方法
    软件工程第十周
    单例模式使用饿汉式和懒汉式创建一定安全?很多人不知
    java中如何将Object转Map及Map转Object呢?
    2020最新Java常见面试题及答案
  • 原文地址:https://blog.csdn.net/cl2010abc/article/details/134483000