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