评价基金性能的常用指标

最大回撤(Max Draw Down)

最大回撤为:在选定周期内任一历史时点往后推,产品净值走到最低点时的收益率回撤幅度的最大值。

其计算的时间复杂度是O(n)的。有些O(n2)的写法比较业余。

python:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def get_max_draw_down(in_list: list):
    dd_list = []
    max_so_far = in_list[0]
    for i in range(len(in_list)):
        if in_list[i] > max_so_far:
            dd = 0
            dd_list.append(dd)
            max_so_far = in_list[i]
        else:
            current = in_list[i]
            dd = (max_so_far - current) / max_so_far
            dd_list.append(dd)
    mdd = max(dd_list)
    return mdd

夏普比率(Sharpe Ratio)

评价单位承担的风险可以取得多少正向收益。在同种时间跨度下,越高越好。

计算方法:

  • 平均收益率超过无风险收益率的部分除以收益率的标准差。
  • 如果通过高频夏普率(比如1d)推测低频夏普率(一般是年),若每年有255个交易日,一般是再乘上根号下255。像币圈高频夏普率(4h)推导年,则是再乘上根号下 365 * 24 / 4。

    缺陷:

  • 由于标准差是正值,所以无法区分上行风险和下行风险。

    优点:

  • 国内外知名度高。

附两个知乎的讲解链接:
夏普率越高越好吗? - 石川的回答 - 知乎
求问基金风险指标的计算:夏普比率,索提诺比率,阿尔法系数等? - 财小鲸之秦岭的回答 - 知乎

1
2
3
4
5
import numpy

def sharpe_ratio(returns, risk_free_rate=0.0):
    mean = numpy.mean(returns)
    return (mean - risk_free_rate) / numpy.std(returns)

其中 returns 为每条 ohlc 的变化率,比如 [0.02, 0.03, -0.03, …]
risk_free_rate 为每条 ohlc 的无风险收益率。比如okex余币宝年化1%,传入的是4小时returns,这里应该传入 1% / (365 * 24 / 4)

可以通过历史净值列表(equity)生成 returns:

1
2
3
4
5
def returns_from_equity(in_equity: list):
    returns_np = numpy.array(in_equity)
    returns_np = returns_np[1:] / returns_np[:-1]
    returns_np = returns_np - 1
    return returns_np

然后把返回值代入下一步计算。

索提诺比率(Sortino Ratio)

计算方法和夏普率相似,但是用低于目标收益率的收益率或亏损时的收益率所计算出的“下行标准差”取代了正常的标准差。和夏普比率一样,在同种时间跨度下,越高越好。

1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy
import math

def lpm(returns, threshold, order):
    threshold_array = numpy.empty(len(returns))
    threshold_array.fill(threshold)
    diff = threshold_array - returns
    diff = diff.clip(min=0)
    return numpy.sum(diff ** order) / len(returns)

def sortino_ratio(returns, risk_free_rate=0.0, target=0):
    mean = numpy.mean(returns)
    return (mean - risk_free_rate) / math.sqrt(lpm(returns, target, 2))

更多参数 python 计算,参考:

Measures of Risk-adjusted Return

Over

Comments