量化金融课堂(四)量化交易之最大回撤

在上一堂课上,老师教大家如何利用Python实现双均线策略,这个策略非常简单实用,可以帮助我们判断交易的最佳时机。本节课的内容是让大家熟悉量化交易中常用的术语和它们的含义,以及学习Python中的计算技巧。

一、回测收益

计算买入以来的收益率时,我们可以使用以下公式:收益率=(卖出时股价 – 买入时股价) / 买入时股价。其中,卖出时股价为PT,买入时股价为P0。

  1. pro=ts.pro_api()
  2. df=pro.daily(ts_code='000001.SZ', start_date='20200101', end_date='20231217')
  3. df['trade_date']=pd.to_datetime(df['trade_date']) #将交易日期转换为datetime格式
  4. df.set_index('trade_date',inplace=True)
  5. df.sort_index(ascending=True,inplace=True) #排序,按时间先后顺序排列,最新数据在最后面

您想要使用tushare库导入数据,选择平安银行2020年至2023年的数据,并基于此来计算亏损情况。由此,2020年初购买平安银行股票,到目前为止亏损了44.74%,股价从当时的16块多跌至今天的9块多,几乎亏损了一半。

  1. df['return']=df['open']/df['open'].iloc[0] #开盘价买入股票
  2. returns=df['return'].iloc[-1] – 1 #计算最后一天的收益率
  3. returns

二、回测年化收益

假设Rp表示年化收益,R表示总收益,即上面提到的回测收益率,m表示一年的交易天数(一年有250个交易日),n表示选择了多少天数据。则Rp可以用以下公式表示:Rp=(1+R)^(m/n) – 1

annual=(1+returns)**(250/len(df)) – 1 #在Python中,用 ** 表示幂运算

2020-2023年,平安银行的年化收益率为 -14.3%。对于那些在2020年购买了平安银行股票的投资者来说,情况确实不容乐观。

三、最大回撤

最大回撤率是指在特定时期内,投资产品净值从最高点下降到最低点的幅度的最大值。它用于衡量投资的潜在风险和可能的损失程度。最大回撤越小越好,因为这表明投资产品在特定时期内的波动性较低,风险较小。

Pj代表股票上涨前的最低价格,Pi代表股票最大跌幅前的最高价格。

最大回撤是指在一段时间内,投资组合净值从峰值下跌的最大幅度,通常用以下公式表示:Max_drawdown=Max[(Pi – Pj)/Pi],其中Pi代表峰值时投资组合的净值,Pj代表净值下跌到最低点时的数值。

可以使用以下Python代码来计算最大回撤率:

“`python
def max_drawdown(prices):
max_price=prices[0]
max_dd=0
for price in prices:
if price > max_price:
max_price=price
dd=(max_price – price) / max_price
if dd > max_dd:
max_dd=dd
return max_dd
“`

这个函数中,我们传入一段时间内的股票价格列表,然后遍历列表中的价格,计算每个价格与最大价格之间的回撤率,最后返回最大回撤率。

  1. ((df['open'].cummax() – df['open'])/df['open'].cummax()).max()

在2020年1月到2023年12月15日期间,平安银行股价出现过最大回撤,最大回撤率为63.06%。这意味着股价从最高点下跌了63.06%达到最低点。

我们还可以计算最大回撤天数,即从股票或资产的最高点下跌到最低点所花费的时间。

  1. #计算回撤天数
  2. i=np.argmax((df['open'].cummax() – df['open'])) #最大回撤结束的时间,最低点
  3. j=np.argmax(df['open'][:i]) #最大回撤开始的时间,最高点
  4. drawdown_days=i – j
  5. print(drawdown_days)

根据数据分析,平安银行股价经历了932天的最大回撤周期,最大回撤结束时间定为2023年12月15日,即上周五。由此可推断,股价下跌的趋势可能尚未结束,可能会迎来新低。因此,对平安银行的投资需要慎重考虑。

这里有个小tips~1296334825  备注:汇汇圈

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1296334825@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.fx002.com/12932.html