Первый проход / расчет времени остановки в R - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть некоторые торговые данные, и мне нужно захватить время, необходимое для достижения границы PRICE (для ордеров на продажу это разница между временем размещения ордера на покупку, на PRICE больше или равная один в порядке и времени размещения ордера на продажу и наоборот для ордеров на покупку).

Вот пример данных:

> head(data)
   V1   NO      SECCODE BUYSELL      TIME ORDERNO ACTION  PRICE VOLUME TRADENO TRADEPRICE
1:  1  846 SU26205RMFS3       B 100000000     846      1  80.00     50    <NA>         NA
2:  2  847 SU26207RMFS9       B 100000000     847      1  77.00    100    <NA>         NA
3:  3  866 SU29009RMFS6       B 100000000     866      1 101.00      5    <NA>         NA
4:  4 1026 SU46022RMFS8       S 100000000    1026      1  74.20    123    <NA>         NA
5:  5 1097 SU26208RMFS7       B 100000000    1097      1  88.15   4800    <NA>         NA
6:  6 1105 SU26208RMFS7       B 100000000    1105      1  88.15  15000    <NA>         NA

Один из способов решения этой проблемы (для ордеров на продажу):

buy_placement <- subset(data, select=c("PRICE", "TIME", "ACTION", "BUYSELL"))
buy_placement <- filter(buy_placement, ACTION == 1, BUYSELL == "B")
buy_placement$ACTION = NULL
buy_placement$BUYSELL = NULL
sell_placement <- subset(data, select=c("PRICE", "TIME", "ACTION", "BUYSELL"))
sell_placement <- filter(sell_placement, ACTION == 1, BUYSELL == "S")
sell_placement$ACTION = NULL
sell_placement$BUYSELL = NULL

и затем извлечение каждого элемента в buy_placement с PRICE больше, чем в sell_placement при условии, что TIME в buy_placement больше, чем в sell_placement и SECCODE (код связь), возможно, то же самое, возможно, с функцией apply. Результатом будет набор данных, где каждый ордер на продажу соответствует множеству возможных ордеров на покупку. Тогда время первого прохождения будет просто минимальной разницей между временами всех соответствующих размещений ордеров на покупку и размещением ордеров на продажу для каждого ордера на продажу. Однако мне нужно будет как-то убедиться, что каждый из этих ордеров на продажу не был отменен (ACTION = 0) до появления приемлемого противоположного ордера (я не уверен, что в этом случае даже можно учесть отмены, если любой может решить это без него, помощь все равно будет оценена). Я не уверен, как реализовать описанный мной способ, и могут быть более простые способы сделать это (возможно, прямой способ извлечь время остановки при определенных условиях), поэтому любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...