Есть ли более элегантный / функциональный способ расчета средней цены? - PullRequest
0 голосов
/ 05 марта 2019

Я сталкивался с этой задачей несколько раз, и я считаю, что она довольно распространена в торговле: вычислить средневзвешенную цену по объему.

У меня есть эта таблица, представляющая исполнения цены и кол-во:

t:([] qty:500j, 1400j, 1700j, 600j, 1500j, 1500j, 1200j, 1300j, 1600j, 1700j; price:9.96 9.94 10.02 9.91 9.93 10.03 10.09 9.97 9.98 10.08)

Обычно я рассчитываю среднюю цену следующим образом:

(sum exec qty*price from t)%(sum exec qty from t)

Есть ли более функциональный способ?Может быть, с наречиями?

Ответы [ 3 ]

0 голосов
/ 05 марта 2019

Самый простой способ - использовать select qty wavg price from t, однако замена select на exec вернет атомное значение, а не таблицу, которая могла бы лучше удовлетворить ваши потребности

exec qty wavg price from t

wavg вычислилсредневзвешенная цена

0 голосов
/ 05 марта 2019

При использовании таблицы без ключа:

t[`qty]wavg t[`price]
0 голосов
/ 05 марта 2019

Используйте функцию ' wavg ':

 q)select qty wavg price from t
...