kdb - получить значения столбца n дней назад - PullRequest
0 голосов
/ 28 июня 2018

Если у меня есть таблица цен

t:([]date:2018.01.01+til 30;px:100+sums 30?(-1;1))

date    px
2018.01.01  101
2018.01.02  102
2018.01.03  103
2018.01.04  102
2018.01.05  103
2018.01.06  102
2018.01.07  103
...

как вычислить доход за n дней? Я заинтересован в обоих вычислениях
(px[i] - px[i-n])/px[i-n] и (px[date] - px[date-n])/px[date-n], то есть один, где столбец px смещен n слотов по индексу, и один, где предыдущей ценой является цена на date-n

Спасибо за помощь

1 Ответ

0 голосов
/ 28 июня 2018

Ну, у вас все получилось с первым. Чтобы получить возврат вы можете использовать эту лямбду:

{update return1:(px-px[i-x])%px[i-x] from t}[5]

Для сдвига даты вы можете использовать aj, например:

select date,return2:(px-pr)%pr from aj[`date;t;select date,pr:px from update date:date+5 from t]

По сути, здесь вы пытаетесь сместить дату на количество дней, которое вы хотите, а затем извлечь цену. Вы используете aj для создания таблицы, которая будет выглядеть примерно так:

q)aj[`date;t;select date,pr:px from update date:date+5 from t]
date       px pr
----------------
2018.01.01 99 98
2018.01.02 98 97
2018.01.03 97 98 

Где px - ваша цена сейчас, а pr - ваша цена через 5 дней.

Тогда отдача рассчитывается как обычно.

Надеюсь, это поможет!

...