Ну, у вас все получилось с первым. Чтобы получить возврат вы можете использовать эту лямбду:
{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 дней.
Тогда отдача рассчитывается как обычно.
Надеюсь, это поможет!