Я рассчитал ежедневные доходы от некоторых рыночных данных и стараюсь добавить каждый из этих возвратов в столбец накопления (cum_rets). Вот пример данных:Расчет суммарной доходности
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
Я не понимаю, почему, когда я использую этот код:
merged['cum_rets'] = 0
merged['cum_rets'] = merged['cum_rets'].shift(1) + merged.Dal_rets
merged
он возвращает
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)
должен получить предыдущее значение cum_rets
, а затем добавьте его к текущему значению Dal_ret
, тем самым постепенно суммируя все значения в Dal_rets. Я знаю, что я мог бы использовать .cumprod()
, но я хотел бы узнать, почему мой метод не работает
cumsum работал отлично, спасибо. Однако я до сих пор не понимаю, почему моя функция просто возвращает значение в 'Dal_rets', и я хотел бы знать, почему. Как я могу изменить свой код для достижения результата, который создает cumsum? –
Кажется, что используется 'merged ['cum_rets'] = merged ['cum_rets']. Shift (1) + merged.Dal_rets' совпадает с' объединенным ['cum_rets'] = merged.Dal_rets'. Почему добавление в 'merged ['cum_rets']. Shift (1)' не добавлять предыдущую ячейку в cum_rets? –
@DavidHancock Это не имеет для меня никакого смысла. Это произойдет, если 'merged [' cum_rets] 'равно 0, и даже тогда это будет неправильно для одной из строк. Я предлагаю вам открыть отдельный вопрос по этому поводу, используя небольшой пример. Я уверен, что кто-то ответит, но, если хотите, напишите здесь ответ, и я буду рад посмотреть. –