Skip to content

Commit d530fa2

Browse files
committed
docs(rust): update the grid trading example.
1 parent 05244ea commit d530fa2

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

hftbacktest/examples/4_latency.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from datetime import datetime, timedelta
33

44
import numpy as np
5-
import pandas as pd
5+
import polars as pl
66
from hftbacktest import EXCH_EVENT, LOCAL_EVENT
77
from numba import njit
88

@@ -46,20 +46,24 @@ def generate_order_latency_nb(data, order_latency, mul_entry, offset_entry, mul_
4646

4747
def generate_order_latency(feed_file, output_file=None, mul_entry=1, offset_entry=0, mul_resp=1, offset_resp=0):
4848
data = np.load(feed_file)['data']
49-
df = pd.DataFrame(data)
50-
df = df[(df['ev'] & EXCH_EVENT == EXCH_EVENT) | (df['ev'] & LOCAL_EVENT == LOCAL_EVENT)]
51-
s = (df['local_ts'] / 1_000_000_000).astype(int)
52-
df = df.groupby(s).last()
53-
data = df.to_records(index=False)
49+
df = pl.DataFrame(data)
50+
51+
df = df.filter(
52+
(pl.col('ev') & EXCH_EVENT == EXCH_EVENT) & (pl.col('ev') & LOCAL_EVENT == LOCAL_EVENT)
53+
).with_columns(
54+
pl.col('local_ts').alias('ts')
55+
).group_by_dynamic(
56+
'ts', every='1000000000i'
57+
).agg(
58+
pl.col('exch_ts').last(),
59+
pl.col('local_ts').last()
60+
).drop('ts')
61+
62+
data = df.to_numpy(structured=True)
5463

5564
order_latency = np.zeros(
5665
len(data),
57-
dtype=[
58-
('req_ts', '<i8'),
59-
('exch_ts', '<i8'),
60-
('resp_ts', '<i8'),
61-
('_padding', '<i8')
62-
]
66+
dtype=[('req_ts', 'i8'), ('exch_ts', 'i8'), ('resp_ts', 'i8'), ('_padding', 'i8')]
6367
)
6468
generate_order_latency_nb(data, order_latency, mul_entry, offset_entry, mul_resp, offset_resp)
6569

0 commit comments

Comments
 (0)