##定義
最大回撤率:在選定週期內任一歷史時點往後推,產品淨值走到最低點時的收益率回撤幅度的最大值。最大回撤用來描述買入產品後可能出現的最糟糕的情況
##計算公式
-
回轍
-
最大回轍
爲某一天的淨值 ,爲某一天,爲後面的某一天. 爲後面某一天的淨值
##數據模型設計
統計時間 | 用戶ID | 窗口最大值 | 窗口起點 | 窗口終點 | 當前淨值 | 窗口今日回撤值 | 窗口最大回撤 |
---|---|---|---|---|---|---|---|
a | =(當前淨值 - 窗口最大值)/窗口最大值 | max(窗口最大回撤T-1,窗口今日回撤值 ) | |||||
b | |||||||
c |
SQL 實現
根據上面的數據模型 ,可以:
O(1)實現自然窗口最新一天的最大回轍
O(n) 實現滑動窗口最新一天的最大回轍
Python實現
def get_max_drawdown_slow(array):
drawdowns = []
for i in range(len(array)):
max_array = max(array[:i+1])
drawdown = max_array - array[i]
drawdowns.append(drawdown)
return max(drawdowns)
def get_max_drawdown_fast(array):
drawdowns = []
max_so_far = array[0]
for i in range(len(array)):
if array[i] > max_so_far:
drawdown = 0
drawdowns.append(drawdown)
max_so_far = array[i]
else:
drawdown = max_so_far - array[i]
drawdowns.append(drawdown)
return max(drawdowns)