Прокатная сумма количеств за каждое окно 100 торговли (с размером шага 1 торговли)
Разница во времени между первой и последней торговлей в каждом окне
Вот моя реализация Python с использованием Pandas: < /p>
import pandas as pd
data = {
'timestamp': pd.to_datetime(['09:34:07', '09:36:42', '09:36:51', '09:36:59', '09:32:47', '09:35:26', '09:34:16', '09:34:26', '09:38:12'], format='%H:%M:%S'),
'sym': ['C', 'MS', 'MS', 'MS', 'IBM', 'IBM', 'C', 'C', 'C'],
'qty': [2200, 1900, 2100, 3200, 6800, 5400, 1300, 2500, 8800],
'price': [49.6, 29.46, 29.52, 30.02, 174.97, 175.23, 50.76, 50.32, 51.29]
}
df = pd.DataFrame(data)
window_size = 2
# Calculate rolling sum
df['qty_sum'] = df.groupby('sym')['qty'].rolling(window=window_size, min_periods=1).sum().reset_index(level=0, drop=True)
# Calculate time differences
def calculate_time_delta(group, window_size):
tDelta = [pd.Timedelta(0)] * len(group)
for i in range(window_size - 1, len(group)):
tDelta = group['timestamp'].iloc - group['timestamp'].iloc[i - window_size + 1]
return pd.Series(tDelta, index=group.index)
df['tDelta'] = df.groupby('sym').apply(lambda group: calculate_time_delta(group, window_size)).reset_index(level=0, drop=True)
< /code>
Теперь мне нужно реализовать это в Dolphindb. Моя таблица определяется как: < /p>
sym = `C`MS`MS`MS`IBM`IBM`C`C`C$SYMBOL
price = 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29
qty = 2200 1900 2100 3200 6800 5400 1300 2500 8800
timestamp = [09:34:07,09:36:42,09:36:51,09:36:59,09:32:47,09:35:26,09:34:16,09:34:26,09:38:12]
t1 = table(timestamp, sym, qty, price)
< /code>
Мои вопросы: < /p>
- Как вычислить обморозную сумму количеств, сгруппированных по Sym с
размер окна n сделок? (STEP SIZE = 1)
Я особенно заинтересован в наиболее эффективном способе сделать это в Dolphindb, так как мой фактический набор данных довольно большой.
Подробнее здесь: https://stackoverflow.com/questions/796 ... in-dolphin