第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 .expanding() Python 計算投資組合回撤

使用 .expanding() Python 計算投資組合回撤

蝴蝶不菲 2023-07-27 14:16:38
我正在嘗試使用下面的代碼計算投資組合隨時間的回撤。我嘗試使用 .expanding() 函數(shù),但似乎無法獲得所需的輸出。如果有人能讓我知道我哪里出錯了,我真的很感激。def drawdown_2(arr):    tot_return = arr.add(1).cumprod()    max_return = tot_return.add(1).cummax()    return (tot_return / max_return) - 1df['Drawdown'] = df.groupby(df.portfolio)['performance'].expanding().apply(drawdown_2)輸入數(shù)據(jù)的格式如下portfolio   period  performanceport1   201501  0.003718port1   201502  -0.004890port1   201503  -0.004171port1   201504  -0.006922port1   201505  0.003545port1   201506  0.003545port1   201507  0.006901port1   201508  0.000101port1   201509  0.009081port1   201510  0.003062port1   201511  -0.008425port1   201512  0.002580port2   201501  0.009135port2   201502  0.009149port2   201503  -0.004252port2   201504  -0.008788port2   201505  -0.006210port2   201506  0.006020port2   201507  0.002983port2   201508  0.008498port2   201509  0.008080port2   201510  0.000138port2   201511  -0.008425port2   201512  0.002580所需的輸出是一個數(shù)組,它是投資組合先前的最大值與投資組合的當(dāng)前值之間的差。上述投入的回撤數(shù)字如下所示,采用所需格式:portfolio   period  performance Drawdownport1   201501  0.003718    0.00000port1   201502  -0.004890   -0.00490port1   201503  -0.004171   -0.00900port1   201504  -0.006922   -0.01590port1   201505  0.003545    -0.01240port1   201506  0.003545    -0.00890port1   201507  0.006901    -0.00210port1   201508  0.000101    -0.00200port1   201509  0.009081    0.00000port1   201510  0.003062    0.00000port1   201511  -0.008425   -0.00842port1   201512  0.002580    -0.00587port2   201501  0.009135    0.00000port2   201502  0.009149    0.00000port2   201503  -0.004252   -0.00430port2   201504  -0.008788   -0.01300port2   201505  -0.006210   -0.01910port2   201506  0.006020    -0.01320port2   201507  0.002983    -0.01030port2   201508  0.008498    -0.00190port2   201509  0.008080    0.00000port2   201510  0.000138    0.00000port2   201511  -0.008425   -0.00860port2   201512  0.002580    -0.00605提前感謝一百萬的幫助。
查看完整描述

1 回答

?
UYOU

TA貢獻(xiàn)1878條經(jīng)驗 獲得超4個贊

我正在使用 yfinance 的數(shù)據(jù):


import yfnance as yf


df = yf.download('aapl', start='2020-01-01')[['Close']]

df['Chg'] = df['Close'].pct_change()


    Close

Date    

2019-12-31  73.412498

2020-01-02  75.087502

2020-01-03  74.357498

2020-01-06  74.949997

2020-01-07  74.597504

... ...

2020-09-03  120.879997

2020-09-04  120.959999

2020-09-08  112.820000

2020-09-09  117.320000

2020-09-10  118.930000

計算累積回報、滾動最大峰值以及尾隨峰值的回撤:


df['Cum_ret'] = (1+ df['Chg']).cumprod()  # cumulative return

df['Peaks'] = df['Cum_ret'].cummax()      # cumulative peaks

df['Drawdown'] = (df['Cum_ret'] - df['Peaks']) / df['Peaks']  # drawdown from trailing peak

累積回報和峰值:

http://img1.sycdn.imooc.com//64c20be20001fd6306510437.jpg

回撤:

http://img1.sycdn.imooc.com//64c20bf2000198ac06530439.jpg

編輯:剛剛注意到您正在處理 2 個投資組合回報,所以這并沒有真正回答您的問題......


我認(rèn)為這會做你想要的:


df['Drawdown'] = df.groupby('portfolio')['performance'].apply(drawdown_2)


    portfolio   period  performance Drawdown

0   port1   201501  0.003718    0.000000

1   port1   201502  -0.004890   -0.004890

2   port1   201503  -0.004171   -0.009041

3   port1   201504  -0.006922   -0.015900

4   port1   201505  0.003545    -0.012411

5   port1   201506  0.003545    -0.008910

6   port1   201507  0.006901    -0.002071

7   port1   201508  0.000101    -0.001970

8   port1   201509  0.009081    0.000000

9   port1   201510  0.003062    0.000000

10  port1   201511  -0.008425   -0.008425

11  port1   201512  0.002580    -0.005867

12  port2   201501  0.009135    0.000000

13  port2   201502  0.009149    0.000000

14  port2   201503  -0.004252   -0.004252

15  port2   201504  -0.008788   -0.013003

16  port2   201505  -0.006210   -0.019132

17  port2   201506  0.006020    -0.013227

18  port2   201507  0.002983    -0.010284

19  port2   201508  0.008498    -0.001873

20  port2   201509  0.008080    0.000000

21  port2   201510  0.000138    0.000000

22  port2   201511  -0.008425   -0.008425

23  port2   201512  0.002580    -0.005867


查看完整回答
反對 回復(fù) 2023-07-27
  • 1 回答
  • 0 關(guān)注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號