python - Calculating cumulative returns -
i have calculated daily returns market data , trying add each of returns in accumulation column (cum_rets). here's sample of data:
timestamp dash_cap litecoin_cap dogecoin_cap nxt_cap total_mc dal_rets 0 2014-02-14 702537 410011811 80883283 61942277 553539908 nan 1 2014-02-15 1054625 413848776 73684156 59127182 547714739 -1.052349 2 2014-02-17 1882753 407014106 70512004 59753481 539162344 -1.561469 3 2014-02-18 3766068 398556278 69890414 60219880 532432640 -1.248178 4 2014-02-19 3038521 404855950 71588924 59870181 539353576 1.299871
i don't understand why, when use code:
merged['cum_rets'] = 0 merged['cum_rets'] = merged['cum_rets'].shift(1) + merged.dal_rets merged
it returns
timestamp dash_cap litecoin_cap dogecoin_cap nxt_cap total_mc dal_rets cum_rets 0 2014-02-14 702537 410011811 80883283 61942277 553539908 nan nan 1 2014-02-15 1054625 413848776 73684156 59127182 547714739 -1.052349 -1.052349 2 2014-02-17 1882753 407014106 70512004 59753481 539162344 -1.561469 -1.561469 3 2014-02-18 3766068 398556278 69890414 60219880 532432640 -1.248178 -1.248178
merged['cum_rets'].shift(1)
should retrieve previous value cum_rets
, add current value of dal_ret
incrementally sumating values in dal_rets. know use .cumprod()
i'd learn why method doesn't work
merged['cum_rets'].shift(1) should retrieve previous value cum_rets , add current value of dal_ret
is correct. however, conclusion
thus incrementally sumating values in dal_rets
is not.
the expression
= b + c
treats a
, b
, , c
distinct arrays in sense first adds b
, c
, assigns results a
. doesn't matter if a
, b
refer same thing.
incidentally, want here cumsum
, not cumprod
.
Comments
Post a Comment