Aggregations#
This section contains reference for the available aggregation functions.
However here listed some basic examples of how you can specify bucket intervals for aggregations.
Find average for selected ticks for the 5 second interval with sliding window:
>>> data = otp.Ticks(
... X=[10, 9, 14, 14, 8, 11],
... offset=[0, 1000, 2000, 3000, 4000, 5000],
... )
>>> data = data.agg({'RESULT': otp.agg.average('X')}, running=True, bucket_interval=otp.Second(5))
>>> otp.run(data)
Time RESULT
0 2003-12-01 00:00:00 10.00
1 2003-12-01 00:00:01 9.50
2 2003-12-01 00:00:02 11.00
3 2003-12-01 00:00:03 11.75
4 2003-12-01 00:00:04 11.00
5 2003-12-01 00:00:05 11.20
6 2003-12-01 00:00:06 11.75
7 2003-12-01 00:00:07 11.00
8 2003-12-01 00:00:08 9.50
9 2003-12-01 00:00:09 11.00
10 2003-12-01 00:00:10 NaN
Find total volume of trades, minimal and maximum price for the first day for a symbol AAA
:
>>> data = otp.DataSource(db='DEMO_L1', tick_type='TRD', symbol='AAA')
>>> data = data.agg({
... 'SUM': otp.agg.sum('SIZE'),
... 'MIN': otp.agg.min('PRICE'),
... 'MAX': otp.agg.max('PRICE'),
... }, bucket_interval=otp.Day(1))
>>> data = data.first()
>>> otp.run(data)
Time SUM MIN MAX
0 2003-12-02 1600 59.72 60.24
Find an average in buckets of 5 ticks:
>>> data = otp.Ticks(X=[21, 20, 22, 25, 18, 17, 19, 23, 21, 21, 16, 20, 15])
>>> data = data.agg({'AVG': otp.agg.average('X')}, bucket_interval=5, bucket_units='ticks')
>>> otp.run(data)
Time AVG
0 2003-12-01 00:00:00.004 21.2
1 2003-12-01 00:00:00.009 20.2
2 2003-12-04 00:00:00.000 17.0
Bucket interval can be set as a float if bucket_units
is set to seconds:
>>> data = otp.Ticks(X=[1, 2, 3, 4, 5, 6, 7, 8])
>>> data = data.agg({'SUM': otp.agg.sum('X')}, bucket_interval=0.002)
>>> otp.run(data, start=otp.config.default_start_time, end=otp.config.default_start_time + otp.Milli(20))
Time SUM
0 2003-12-01 00:00:00.002 3
1 2003-12-01 00:00:00.004 7
2 2003-12-01 00:00:00.006 11
3 2003-12-01 00:00:00.008 15
4 2003-12-01 00:00:00.010 0
5 2003-12-01 00:00:00.012 0
6 2003-12-01 00:00:00.014 0
7 2003-12-01 00:00:00.016 0
8 2003-12-01 00:00:00.018 0
9 2003-12-01 00:00:00.020 0