{ "cells": [ { "cell_type": "markdown", "id": "aef8b826", "metadata": {}, "source": [ "# Aggregating" ] }, { "cell_type": "markdown", "id": "157bf535-0415-431d-a9d7-0375319e6bf1", "metadata": {}, "source": [ "Let's start with an unaggregated time series." ] }, { "cell_type": "code", "execution_count": 1, "id": "91d63514-8e66-4680-be77-252937bdd85d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TimePRICESIZECONDEXCHANGE
02023-03-29 09:30:00.000877568399.920400TP
12023-03-29 09:30:00.001151232399.9201000TT
22023-03-29 09:30:00.001154304399.9201000TT
32023-03-29 09:30:00.001921280399.930657TT
42023-03-29 09:30:00.010831360399.925100FZ
..................
5376092023-03-29 15:59:59.994555136401.350643FP
5376102023-03-29 15:59:59.995045376401.350900FP
5376112023-03-29 15:59:59.997313024401.340100Z
5376122023-03-29 15:59:59.997354752401.340498N
5376132023-03-29 15:59:59.997406208401.340200T
\n", "

537614 rows × 5 columns

\n", "
" ], "text/plain": [ " Time PRICE SIZE COND EXCHANGE\n", "0 2023-03-29 09:30:00.000877568 399.920 400 T P\n", "1 2023-03-29 09:30:00.001151232 399.920 1000 T T\n", "2 2023-03-29 09:30:00.001154304 399.920 1000 T T\n", "3 2023-03-29 09:30:00.001921280 399.930 657 T T\n", "4 2023-03-29 09:30:00.010831360 399.925 100 F Z\n", "... ... ... ... ... ...\n", "537609 2023-03-29 15:59:59.994555136 401.350 643 F P\n", "537610 2023-03-29 15:59:59.995045376 401.350 900 F P\n", "537611 2023-03-29 15:59:59.997313024 401.340 100 Z\n", "537612 2023-03-29 15:59:59.997354752 401.340 498 N\n", "537613 2023-03-29 15:59:59.997406208 401.340 200 T\n", "\n", "[537614 rows x 5 columns]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import onetick.py as otp\n", "\n", "q = otp.DataSource('NYSE_TAQ', tick_type='TRD')\n", "q = q[['PRICE', 'SIZE', 'COND', 'EXCHANGE']]\n", "otp.run(q, start=otp.dt(2023, 3, 29, 9, 30), end=otp.dt(2023, 3, 29, 16), symbols=['SPY'])" ] }, { "cell_type": "markdown", "id": "56dbfa00-45b9-408c-bfc0-3ea78f601498", "metadata": {}, "source": [ "Let's make a note of the total number of trades.\n", "\n", "We can aggregate over the entire queried interval." ] }, { "cell_type": "code", "execution_count": 14, "id": "34a94316-be74-4548-9f2f-0c7ea6781289", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Timevolumevwap
02023-03-29 16:00:0068233701399.760148
\n", "
" ], "text/plain": [ " Time volume vwap\n", "0 2023-03-29 16:00:00 68233701 399.760148" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q = otp.DataSource('NYSE_TAQ', tick_type='TRD')\n", "q = q[['PRICE', 'SIZE', 'COND', 'EXCHANGE']]\n", "q = q.agg({\n", " 'volume': otp.agg.sum('SIZE'),\n", " 'vwap': otp.agg.vwap('PRICE','SIZE')\n", "})\n", "otp.run(q, start=otp.dt(2023, 3, 29, 9, 30), end=otp.dt(2023, 3, 29, 16), symbols=['SPY'])" ] }, { "cell_type": "markdown", "id": "53f66ca3-1029-49d3-97c0-c1f4dd3ad842", "metadata": {}, "source": [ "Or over fixed buckets (aka bars or windows)." ] }, { "cell_type": "code", "execution_count": 15, "id": "2d408201-90be-44e1-b8c5-0f4dc371e799", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Timevolumevwap
02023-03-29 10:00:0011346391398.805607
12023-03-29 10:30:005344474399.544761
22023-03-29 11:00:005139562399.146746
32023-03-29 11:30:002827218399.166233
42023-03-29 12:00:003198533399.313014
52023-03-29 12:30:004026223399.077673
62023-03-29 13:00:002245602399.872538
72023-03-29 13:30:002558837400.080857
82023-03-29 14:00:003234347399.745620
92023-03-29 14:30:003290063399.376632
102023-03-29 15:00:003301416400.263786
112023-03-29 15:30:007402762400.131562
122023-03-29 16:00:0014318273400.934522
\n", "
" ], "text/plain": [ " Time volume vwap\n", "0 2023-03-29 10:00:00 11346391 398.805607\n", "1 2023-03-29 10:30:00 5344474 399.544761\n", "2 2023-03-29 11:00:00 5139562 399.146746\n", "3 2023-03-29 11:30:00 2827218 399.166233\n", "4 2023-03-29 12:00:00 3198533 399.313014\n", "5 2023-03-29 12:30:00 4026223 399.077673\n", "6 2023-03-29 13:00:00 2245602 399.872538\n", "7 2023-03-29 13:30:00 2558837 400.080857\n", "8 2023-03-29 14:00:00 3234347 399.745620\n", "9 2023-03-29 14:30:00 3290063 399.376632\n", "10 2023-03-29 15:00:00 3301416 400.263786\n", "11 2023-03-29 15:30:00 7402762 400.131562\n", "12 2023-03-29 16:00:00 14318273 400.934522" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q = otp.DataSource('NYSE_TAQ', tick_type='TRD')\n", "q = q[['PRICE', 'SIZE', 'COND', 'EXCHANGE']]\n", "q = q.agg({\n", " 'volume': otp.agg.sum('SIZE'),\n", " 'vwap': otp.agg.vwap('PRICE','SIZE')\n", "}, bucket_interval=1800)\n", "otp.run(q, start=otp.dt(2023, 3, 29, 9, 30), end=otp.dt(2023, 3, 29, 16), symbols=['SPY'])" ] }, { "cell_type": "markdown", "id": "038be2be-08c2-432f-88c0-a021d3e6a737", "metadata": {}, "source": [ "Or over a sliding window." ] }, { "cell_type": "code", "execution_count": 16, "id": "60d494a6-58ba-4b0a-9f5e-f6f01ecb9987", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Timevolumevwap
02023-03-29 09:30:00.000877568400399.920000
12023-03-29 09:30:00.0011512321400399.920000
22023-03-29 09:30:00.0011543042400399.920000
32023-03-29 09:30:00.0019212803057399.922149
42023-03-29 09:30:00.0108313603157399.922239
............
9460902023-03-29 15:59:59.99455513614316575400.934474
9460912023-03-29 15:59:59.99504537614317475400.934500
9460922023-03-29 15:59:59.99731302414317575400.934502
9460932023-03-29 15:59:59.99735475214318073400.934517
9460942023-03-29 15:59:59.99740620814318273400.934522
\n", "

946095 rows × 3 columns

\n", "
" ], "text/plain": [ " Time volume vwap\n", "0 2023-03-29 09:30:00.000877568 400 399.920000\n", "1 2023-03-29 09:30:00.001151232 1400 399.920000\n", "2 2023-03-29 09:30:00.001154304 2400 399.920000\n", "3 2023-03-29 09:30:00.001921280 3057 399.922149\n", "4 2023-03-29 09:30:00.010831360 3157 399.922239\n", "... ... ... ...\n", "946090 2023-03-29 15:59:59.994555136 14316575 400.934474\n", "946091 2023-03-29 15:59:59.995045376 14317475 400.934500\n", "946092 2023-03-29 15:59:59.997313024 14317575 400.934502\n", "946093 2023-03-29 15:59:59.997354752 14318073 400.934517\n", "946094 2023-03-29 15:59:59.997406208 14318273 400.934522\n", "\n", "[946095 rows x 3 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q = otp.DataSource('NYSE_TAQ', tick_type='TRD')\n", "q = q[['PRICE', 'SIZE', 'COND', 'EXCHANGE']]\n", "q = q.agg({\n", " 'volume': otp.agg.sum('SIZE'),\n", " 'vwap': otp.agg.vwap('PRICE','SIZE')\n", "}, bucket_interval=1800, running=True)\n", "otp.run(q, start=otp.dt(2023, 3, 29, 9, 30), end=otp.dt(2023, 3, 29, 16), symbols=['SPY'])" ] }, { "cell_type": "markdown", "id": "66ad92c4-2944-43c0-b950-7f6888f74867", "metadata": {}, "source": [ "Note that the number of output ticks is more than the number of trades. This is due to the output tick being created not only when each input tick enters the window but also when it drops out." ] }, { "cell_type": "markdown", "id": "8d28f734-8ffe-4525-9261-6f000944d27f", "metadata": {}, "source": [ "We can display all fields of the incoming tick along with the current values of the sliding window metrics." ] }, { "cell_type": "code", "execution_count": 17, "id": "fad649b3-41c1-4dbb-b130-12f47eac85e1", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TimePRICESIZECONDEXCHANGEvolumevwap
02023-03-29 09:30:00.000877568399.920400TP400399.920000
12023-03-29 09:30:00.001151232399.9201000TT1400399.920000
22023-03-29 09:30:00.001154304399.9201000TT2400399.920000
32023-03-29 09:30:00.001921280399.930657TT3057399.922149
42023-03-29 09:30:00.010831360399.925100FZ3157399.922239
........................
5376092023-03-29 15:59:59.994555136401.350643FP14316575400.934474
5376102023-03-29 15:59:59.995045376401.350900FP14317475400.934500
5376112023-03-29 15:59:59.997313024401.340100Z14317575400.934502
5376122023-03-29 15:59:59.997354752401.340498N14318073400.934517
5376132023-03-29 15:59:59.997406208401.340200T14318273400.934522
\n", "

537614 rows × 7 columns

\n", "
" ], "text/plain": [ " Time PRICE SIZE COND EXCHANGE volume vwap\n", "0 2023-03-29 09:30:00.000877568 399.920 400 T P 400 399.920000\n", "1 2023-03-29 09:30:00.001151232 399.920 1000 T T 1400 399.920000\n", "2 2023-03-29 09:30:00.001154304 399.920 1000 T T 2400 399.920000\n", "3 2023-03-29 09:30:00.001921280 399.930 657 T T 3057 399.922149\n", "4 2023-03-29 09:30:00.010831360 399.925 100 F Z 3157 399.922239\n", "... ... ... ... ... ... ... ...\n", "537609 2023-03-29 15:59:59.994555136 401.350 643 F P 14316575 400.934474\n", "537610 2023-03-29 15:59:59.995045376 401.350 900 F P 14317475 400.934500\n", "537611 2023-03-29 15:59:59.997313024 401.340 100 Z 14317575 400.934502\n", "537612 2023-03-29 15:59:59.997354752 401.340 498 N 14318073 400.934517\n", "537613 2023-03-29 15:59:59.997406208 401.340 200 T 14318273 400.934522\n", "\n", "[537614 rows x 7 columns]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q = otp.DataSource('NYSE_TAQ', tick_type='TRD')\n", "q = q[['PRICE', 'SIZE', 'COND', 'EXCHANGE']]\n", "q = q.agg({\n", " 'volume': otp.agg.sum('SIZE'),\n", " 'vwap': otp.agg.vwap('PRICE','SIZE')\n", "}, bucket_interval=1800, running=True, all_fields=True)\n", "otp.run(q, start=otp.dt(2023, 3, 29, 9, 30), end=otp.dt(2023, 3, 29, 16), symbols=['SPY'])" ] }, { "cell_type": "markdown", "id": "97d03ed4-cbf3-49e6-9989-8fee3b49b172", "metadata": {}, "source": [ "In this case, we are back to the same number of ticks as the number trades as an output tick is only created on arrival of an input tick." ] }, { "cell_type": "markdown", "id": "9e7454b1-deda-48dc-8a01-da63d48b4a5e", "metadata": {}, "source": [ "All of the aggregation operations support grouping." ] }, { "cell_type": "code", "execution_count": 18, "id": "b37e62f1-ff2c-4913-b9d7-bde925bfface", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TimeEXCHANGEvolumevwap
02023-03-29 16:00:00A253162400.322973
12023-03-29 16:00:00B516793400.289029
22023-03-29 16:00:00C154697400.230680
32023-03-29 16:00:00D24495779398.999133
42023-03-29 16:00:00H1104733400.336441
52023-03-29 16:00:00J598534400.315377
62023-03-29 16:00:00K3899343400.118436
72023-03-29 16:00:00L1948401.266828
82023-03-29 16:00:00M1268484400.170423
92023-03-29 16:00:00N2010830400.202291
102023-03-29 16:00:00P13043077400.191965
112023-03-29 16:00:00T10210762400.208476
122023-03-29 16:00:00U1780588400.185296
132023-03-29 16:00:00V1495374400.174316
142023-03-29 16:00:00X597341400.145003
152023-03-29 16:00:00Y1680262400.025433
162023-03-29 16:00:00Z5121994400.172607
\n", "
" ], "text/plain": [ " Time EXCHANGE volume vwap\n", "0 2023-03-29 16:00:00 A 253162 400.322973\n", "1 2023-03-29 16:00:00 B 516793 400.289029\n", "2 2023-03-29 16:00:00 C 154697 400.230680\n", "3 2023-03-29 16:00:00 D 24495779 398.999133\n", "4 2023-03-29 16:00:00 H 1104733 400.336441\n", "5 2023-03-29 16:00:00 J 598534 400.315377\n", "6 2023-03-29 16:00:00 K 3899343 400.118436\n", "7 2023-03-29 16:00:00 L 1948 401.266828\n", "8 2023-03-29 16:00:00 M 1268484 400.170423\n", "9 2023-03-29 16:00:00 N 2010830 400.202291\n", "10 2023-03-29 16:00:00 P 13043077 400.191965\n", "11 2023-03-29 16:00:00 T 10210762 400.208476\n", "12 2023-03-29 16:00:00 U 1780588 400.185296\n", "13 2023-03-29 16:00:00 V 1495374 400.174316\n", "14 2023-03-29 16:00:00 X 597341 400.145003\n", "15 2023-03-29 16:00:00 Y 1680262 400.025433\n", "16 2023-03-29 16:00:00 Z 5121994 400.172607" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q = otp.DataSource('NYSE_TAQ', tick_type='TRD')\n", "q = q[['PRICE', 'SIZE', 'COND', 'EXCHANGE']]\n", "q = q.agg({\n", " 'volume': otp.agg.sum('SIZE'),\n", " 'vwap': otp.agg.vwap('PRICE','SIZE')\n", "}, group_by=['EXCHANGE'])\n", "otp.run(q, start=otp.dt(2023, 3, 29, 9, 30), end=otp.dt(2023, 3, 29, 16), symbols=['SPY'])" ] }, { "cell_type": "markdown", "id": "4fefcfd9-3ed8-4341-968e-a9ea9fe81bf7", "metadata": {}, "source": [ "A list of all aggregations appears [here](../../api/aggregations/root.rst). It can also be retrieved with `dir(otp.agg)`." ] }, { "cell_type": "markdown", "id": "73244935-ad47-4eb4-b851-2892c5bf8fa5", "metadata": {}, "source": [ "# Use case: Creating Bars" ] }, { "cell_type": "markdown", "id": "ccafbd04-38c1-4b7a-b4cf-5cda4bbc521f", "metadata": {}, "source": [ "The code below creates minute bars (`bucket_interval=60` seconds)." ] }, { "cell_type": "code", "execution_count": 11, "id": "dfe9918c-3489-41b0-95dc-29d3f90cd222", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TimeOPENHIGHLOWCLOSEVOLUME
02022-11-28 09:31:00399.09399.750399.000399.6500289791
12022-11-28 09:32:00399.69400.000399.600399.8900295441
22022-11-28 09:33:00399.89400.175399.840400.1750233032
32022-11-28 09:34:00400.16400.380400.000400.1600208954
42022-11-28 09:35:00400.13400.360400.120400.3493112015
.....................
11652022-11-30 15:56:00406.68406.830406.460406.81001311316
11662022-11-30 15:57:00406.80406.830406.525406.60001319798
11672022-11-30 15:58:00406.60406.850406.550406.73001691348
11682022-11-30 15:59:00406.73406.950406.680406.71002592503
11692022-11-30 16:00:00406.71407.550406.680407.47006700757
\n", "

1170 rows × 6 columns

\n", "
" ], "text/plain": [ " Time OPEN HIGH LOW CLOSE VOLUME\n", "0 2022-11-28 09:31:00 399.09 399.750 399.000 399.6500 289791\n", "1 2022-11-28 09:32:00 399.69 400.000 399.600 399.8900 295441\n", "2 2022-11-28 09:33:00 399.89 400.175 399.840 400.1750 233032\n", "3 2022-11-28 09:34:00 400.16 400.380 400.000 400.1600 208954\n", "4 2022-11-28 09:35:00 400.13 400.360 400.120 400.3493 112015\n", "... ... ... ... ... ... ...\n", "1165 2022-11-30 15:56:00 406.68 406.830 406.460 406.8100 1311316\n", "1166 2022-11-30 15:57:00 406.80 406.830 406.525 406.6000 1319798\n", "1167 2022-11-30 15:58:00 406.60 406.850 406.550 406.7300 1691348\n", "1168 2022-11-30 15:59:00 406.73 406.950 406.680 406.7100 2592503\n", "1169 2022-11-30 16:00:00 406.71 407.550 406.680 407.4700 6700757\n", "\n", "[1170 rows x 6 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trd = otp.DataSource('NYSE_TAQ', tick_type='TRD')\n", "trd, _ = trd[trd['COND'].str.match('^[^O6TUHILNRWZ47QMBCGPV]*$')]\n", "\n", "bars = trd.agg({\n", " 'OPEN': otp.agg.first('PRICE'),\n", " 'HIGH': otp.agg.max('PRICE'),\n", " 'LOW': otp.agg.min('PRICE'),\n", " 'CLOSE': otp.agg.last('PRICE'),\n", " 'VOLUME': otp.agg.sum('SIZE'),\n", "}, bucket_interval=60)\n", "\n", "otp.run(bars, start=otp.dt(2022, 11, 28, 9, 30), end=otp.dt(2022, 11, 30, 16), symbols=['SPY'], apply_times_daily=True)" ] }, { "cell_type": "markdown", "id": "e7dd5a74-6980-47d6-bee3-4a0ea853bdc0", "metadata": {}, "source": [ "Note that we have minute bars precomputed." ] }, { "cell_type": "code", "execution_count": 10, "id": "72af2724-dc83-4c7e-bb11-10ff224ac1b0", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TimeFIRSTHIGHLOWLASTVOLUME
02022-11-28 09:31:00399.09399.750399.000399.6500289791
12022-11-28 09:32:00399.69400.000399.600399.8900295441
22022-11-28 09:33:00399.89400.175399.840400.1750233032
32022-11-28 09:34:00400.16400.380400.000400.1600208954
42022-11-28 09:35:00400.13400.360400.120400.3493112015
.....................
11652022-11-30 15:56:00406.68406.830406.460406.81001311316
11662022-11-30 15:57:00406.80406.830406.525406.60001319798
11672022-11-30 15:58:00406.60406.850406.550406.73001691348
11682022-11-30 15:59:00406.73406.950406.680406.71002592503
11692022-11-30 16:00:00406.71407.550406.680407.47006700757
\n", "

1170 rows × 6 columns

\n", "
" ], "text/plain": [ " Time FIRST HIGH LOW LAST VOLUME\n", "0 2022-11-28 09:31:00 399.09 399.750 399.000 399.6500 289791\n", "1 2022-11-28 09:32:00 399.69 400.000 399.600 399.8900 295441\n", "2 2022-11-28 09:33:00 399.89 400.175 399.840 400.1750 233032\n", "3 2022-11-28 09:34:00 400.16 400.380 400.000 400.1600 208954\n", "4 2022-11-28 09:35:00 400.13 400.360 400.120 400.3493 112015\n", "... ... ... ... ... ... ...\n", "1165 2022-11-30 15:56:00 406.68 406.830 406.460 406.8100 1311316\n", "1166 2022-11-30 15:57:00 406.80 406.830 406.525 406.6000 1319798\n", "1167 2022-11-30 15:58:00 406.60 406.850 406.550 406.7300 1691348\n", "1168 2022-11-30 15:59:00 406.73 406.950 406.680 406.7100 2592503\n", "1169 2022-11-30 16:00:00 406.71 407.550 406.680 407.4700 6700757\n", "\n", "[1170 rows x 6 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bars = otp.DataSource('NYSE_TAQ_BARS', tick_type='TRD_1M')\n", "bars = bars[['FIRST', 'HIGH', 'LOW', 'LAST', 'VOLUME']]\n", "otp.run(bars, start=otp.dt(2022, 11, 28, 9, 31), end=otp.dt(2022, 11, 30, 16, 1), symbols=['SPY'], apply_times_daily=True)" ] }, { "cell_type": "code", "execution_count": null, "id": "96dd5eba-bac7-486a-a5ca-2d991bb32bbf", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.8" } }, "nbformat": 4, "nbformat_minor": 5 }