{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "4a33fb14", "metadata": {}, "source": [ "# Time-Based Joins" ] }, { "attachments": {}, "cell_type": "markdown", "id": "5eaac7ad-b507-48bf-aff2-7ff5d812e147", "metadata": {}, "source": [ "Time series analysis often involves looking up information from other time series for relevant time ranges. OneTick has built-in functions for this." ] }, { "attachments": {}, "cell_type": "markdown", "id": "6f00e839-f381-49b2-9249-c1f36b36c12c", "metadata": {}, "source": [ "# `join_by_time`: Enhancing a time series with information from other time series at the time of each tick" ] }, { "attachments": {}, "cell_type": "markdown", "id": "810b313d-8033-46ee-aac3-15c61faf6635", "metadata": {}, "source": [ "Below we'll enhance the trades with the prevailing quote (i.e., best bid and ask) at the time of each trade. We'll first look just at trades, then just at quotes, and finally we'll join the two." ] }, { "attachments": {}, "cell_type": "markdown", "id": "9bed10d4-dcd8-414d-b618-d600807f39af", "metadata": {}, "source": [ "Let's examine the trades first." ] }, { "cell_type": "code", "execution_count": 2, "id": "7872865c-768c-4a7d-b30e-6887d0e7b1cf", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | Time | \n", "PRICE | \n", "SIZE | \n", "
---|---|---|---|
0 | \n", "2023-05-15 09:30:00.000178688 | \n", "412.22 | \n", "100 | \n", "
1 | \n", "2023-05-15 09:30:00.000776704 | \n", "412.22 | \n", "247 | \n", "
2 | \n", "2023-05-15 09:30:00.003603456 | \n", "412.22 | \n", "100 | \n", "
3 | \n", "2023-05-15 09:30:00.006352128 | \n", "412.24 | \n", "1 | \n", "
4 | \n", "2023-05-15 09:30:00.007128064 | \n", "412.24 | \n", "3 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "
310 | \n", "2023-05-15 09:30:00.934032640 | \n", "412.27 | \n", "160 | \n", "
311 | \n", "2023-05-15 09:30:00.975609344 | \n", "412.24 | \n", "2 | \n", "
312 | \n", "2023-05-15 09:30:00.980264448 | \n", "412.27 | \n", "1 | \n", "
313 | \n", "2023-05-15 09:30:00.985391616 | \n", "412.28 | \n", "100 | \n", "
314 | \n", "2023-05-15 09:30:00.985394944 | \n", "412.28 | \n", "100 | \n", "
315 rows × 3 columns
\n", "\n", " | Time | \n", "BID_PRICE | \n", "ASK_PRICE | \n", "
---|---|---|---|
0 | \n", "2023-05-15 09:30:00.000000000 | \n", "412.22 | \n", "412.25 | \n", "
1 | \n", "2023-05-15 09:30:00.000174080 | \n", "412.22 | \n", "412.25 | \n", "
2 | \n", "2023-05-15 09:30:00.000595200 | \n", "412.22 | \n", "412.24 | \n", "
3 | \n", "2023-05-15 09:30:00.000715520 | \n", "412.21 | \n", "412.24 | \n", "
4 | \n", "2023-05-15 09:30:00.000790784 | \n", "412.22 | \n", "412.24 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "
1150 | \n", "2023-05-15 09:30:00.979763456 | \n", "412.27 | \n", "412.28 | \n", "
1151 | \n", "2023-05-15 09:30:00.981818880 | \n", "412.27 | \n", "412.28 | \n", "
1152 | \n", "2023-05-15 09:30:00.983727872 | \n", "412.27 | \n", "412.28 | \n", "
1153 | \n", "2023-05-15 09:30:00.983737856 | \n", "412.27 | \n", "412.28 | \n", "
1154 | \n", "2023-05-15 09:30:00.985296640 | \n", "412.27 | \n", "412.28 | \n", "
1155 rows × 3 columns
\n", "\n", " | Time | \n", "PRICE | \n", "SIZE | \n", "BID_PRICE | \n", "ASK_PRICE | \n", "
---|---|---|---|---|---|
0 | \n", "2023-05-15 09:30:00.000178688 | \n", "412.22 | \n", "100 | \n", "412.22 | \n", "412.25 | \n", "
1 | \n", "2023-05-15 09:30:00.000776704 | \n", "412.22 | \n", "247 | \n", "412.21 | \n", "412.24 | \n", "
2 | \n", "2023-05-15 09:30:00.003603456 | \n", "412.22 | \n", "100 | \n", "412.22 | \n", "412.24 | \n", "
3 | \n", "2023-05-15 09:30:00.006352128 | \n", "412.24 | \n", "1 | \n", "412.22 | \n", "412.25 | \n", "
4 | \n", "2023-05-15 09:30:00.007128064 | \n", "412.24 | \n", "3 | \n", "412.22 | \n", "412.25 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
310 | \n", "2023-05-15 09:30:00.934032640 | \n", "412.27 | \n", "160 | \n", "412.26 | \n", "412.28 | \n", "
311 | \n", "2023-05-15 09:30:00.975609344 | \n", "412.24 | \n", "2 | \n", "412.27 | \n", "412.28 | \n", "
312 | \n", "2023-05-15 09:30:00.980264448 | \n", "412.27 | \n", "1 | \n", "412.27 | \n", "412.28 | \n", "
313 | \n", "2023-05-15 09:30:00.985391616 | \n", "412.28 | \n", "100 | \n", "412.27 | \n", "412.28 | \n", "
314 | \n", "2023-05-15 09:30:00.985394944 | \n", "412.28 | \n", "100 | \n", "412.27 | \n", "412.28 | \n", "
315 rows × 5 columns
\n", "\n", " | Time | \n", "PRICE | \n", "SIZE | \n", "BID_PRICE | \n", "ASK_PRICE | \n", "quote_time | \n", "
---|---|---|---|---|---|---|
0 | \n", "2023-05-15 09:30:00.000178688 | \n", "412.22 | \n", "100 | \n", "412.22 | \n", "412.25 | \n", "2023-05-15 09:30:00.000174080 | \n", "
1 | \n", "2023-05-15 09:30:00.000776704 | \n", "412.22 | \n", "247 | \n", "412.21 | \n", "412.24 | \n", "2023-05-15 09:30:00.000715520 | \n", "
2 | \n", "2023-05-15 09:30:00.003603456 | \n", "412.22 | \n", "100 | \n", "412.22 | \n", "412.24 | \n", "2023-05-15 09:30:00.003562496 | \n", "
3 | \n", "2023-05-15 09:30:00.006352128 | \n", "412.24 | \n", "1 | \n", "412.22 | \n", "412.25 | \n", "2023-05-15 09:30:00.006343936 | \n", "
4 | \n", "2023-05-15 09:30:00.007128064 | \n", "412.24 | \n", "3 | \n", "412.22 | \n", "412.25 | \n", "2023-05-15 09:30:00.007110656 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
310 | \n", "2023-05-15 09:30:00.934032640 | \n", "412.27 | \n", "160 | \n", "412.26 | \n", "412.28 | \n", "2023-05-15 09:30:00.934030080 | \n", "
311 | \n", "2023-05-15 09:30:00.975609344 | \n", "412.24 | \n", "2 | \n", "412.27 | \n", "412.28 | \n", "2023-05-15 09:30:00.970691840 | \n", "
312 | \n", "2023-05-15 09:30:00.980264448 | \n", "412.27 | \n", "1 | \n", "412.27 | \n", "412.28 | \n", "2023-05-15 09:30:00.979763456 | \n", "
313 | \n", "2023-05-15 09:30:00.985391616 | \n", "412.28 | \n", "100 | \n", "412.27 | \n", "412.28 | \n", "2023-05-15 09:30:00.985296640 | \n", "
314 | \n", "2023-05-15 09:30:00.985394944 | \n", "412.28 | \n", "100 | \n", "412.27 | \n", "412.28 | \n", "2023-05-15 09:30:00.985296640 | \n", "
315 rows × 6 columns
\n", "\n", " | Time | \n", "PRICE | \n", "SIZE | \n", "ASK_PRICE_-1 | \n", "BID_PRICE_-1 | \n", "quote_time_-1 | \n", "ASK_PRICE_1 | \n", "BID_PRICE_1 | \n", "quote_time_1 | \n", "ASK_PRICE_5 | \n", "BID_PRICE_5 | \n", "quote_time_5 | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "2023-03-08 10:00:00.014762069 | \n", "181.4250 | \n", "300 | \n", "181.47 | \n", "181.41 | \n", "2023-03-08 09:59:59.002564435 | \n", "181.49 | \n", "181.48 | \n", "2023-03-08 10:00:01.000000000 | \n", "181.15 | \n", "181.04 | \n", "2023-03-08 10:00:05.012557243 | \n", "
1 | \n", "2023-03-08 10:00:00.014764168 | \n", "181.4400 | \n", "12 | \n", "181.47 | \n", "181.41 | \n", "2023-03-08 09:59:59.002564435 | \n", "181.49 | \n", "181.48 | \n", "2023-03-08 10:00:01.000000000 | \n", "181.15 | \n", "181.04 | \n", "2023-03-08 10:00:05.012557243 | \n", "
2 | \n", "2023-03-08 10:00:00.014767570 | \n", "181.4400 | \n", "200 | \n", "181.47 | \n", "181.41 | \n", "2023-03-08 09:59:59.002564435 | \n", "181.49 | \n", "181.48 | \n", "2023-03-08 10:00:01.000000000 | \n", "181.15 | \n", "181.04 | \n", "2023-03-08 10:00:05.012557243 | \n", "
3 | \n", "2023-03-08 10:00:00.014799259 | \n", "181.4500 | \n", "2 | \n", "181.47 | \n", "181.41 | \n", "2023-03-08 09:59:59.002564435 | \n", "181.49 | \n", "181.48 | \n", "2023-03-08 10:00:01.000000000 | \n", "181.15 | \n", "181.04 | \n", "2023-03-08 10:00:05.012557243 | \n", "
4 | \n", "2023-03-08 10:00:00.015374686 | \n", "181.4400 | \n", "300 | \n", "181.47 | \n", "181.41 | \n", "2023-03-08 09:59:59.002564435 | \n", "181.49 | \n", "181.48 | \n", "2023-03-08 10:00:01.000000000 | \n", "181.15 | \n", "181.04 | \n", "2023-03-08 10:00:05.012557243 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
705 | \n", "2023-03-09 10:00:00.956041264 | \n", "183.5899 | \n", "500 | \n", "183.46 | \n", "183.43 | \n", "2023-03-09 09:59:59.911620614 | \n", "183.59 | \n", "183.54 | \n", "2023-03-09 10:00:01.945769144 | \n", "183.65 | \n", "183.57 | \n", "2023-03-09 10:00:05.954673686 | \n", "
706 | \n", "2023-03-09 10:00:00.967881686 | \n", "183.5800 | \n", "25 | \n", "183.46 | \n", "183.43 | \n", "2023-03-09 09:59:59.963372673 | \n", "183.59 | \n", "183.54 | \n", "2023-03-09 10:00:01.963256371 | \n", "183.66 | \n", "183.57 | \n", "2023-03-09 10:00:05.967652794 | \n", "
707 | \n", "2023-03-09 10:00:00.978963708 | \n", "183.4718 | \n", "136 | \n", "183.46 | \n", "183.42 | \n", "2023-03-09 09:59:59.971349853 | \n", "183.59 | \n", "183.54 | \n", "2023-03-09 10:00:01.963256371 | \n", "183.66 | \n", "183.57 | \n", "2023-03-09 10:00:05.967652794 | \n", "
708 | \n", "2023-03-09 10:00:00.983358396 | \n", "183.5500 | \n", "20 | \n", "183.46 | \n", "183.41 | \n", "2023-03-09 09:59:59.983288366 | \n", "183.59 | \n", "183.54 | \n", "2023-03-09 10:00:01.963256371 | \n", "183.66 | \n", "183.57 | \n", "2023-03-09 10:00:05.967652794 | \n", "
709 | \n", "2023-03-09 10:00:00.990945922 | \n", "183.5650 | \n", "200 | \n", "183.44 | \n", "183.41 | \n", "2023-03-09 09:59:59.988781014 | \n", "183.59 | \n", "183.54 | \n", "2023-03-09 10:00:01.963256371 | \n", "183.66 | \n", "183.57 | \n", "2023-03-09 10:00:05.967652794 | \n", "
710 rows × 12 columns
\n", "\n", " | Time | \n", "market_vwap | \n", "
---|---|---|
0 | \n", "2023-05-15 09:30:01 | \n", "412.212012 | \n", "
\n", " | Time | \n", "arrival | \n", "exit | \n", "sym | \n", "
---|---|---|---|---|
0 | \n", "2003-12-01 00:00:00.000 | \n", "2023-05-15 09:30:00.000 | \n", "2023-05-15 09:30:01.000 | \n", "SPY | \n", "
1 | \n", "2003-12-01 00:00:00.001 | \n", "2023-05-15 09:30:07.934 | \n", "2023-05-15 09:30:10.556 | \n", "QQQ | \n", "
\n", " | Time | \n", "market_vwap | \n", "arrival | \n", "exit | \n", "sym | \n", "
---|---|---|---|---|---|
0 | \n", "2023-05-15 09:30:00.000 | \n", "412.212012 | \n", "2023-05-15 09:30:00.000 | \n", "2023-05-15 09:30:01.000 | \n", "SPY | \n", "
1 | \n", "2023-05-15 09:30:00.001 | \n", "325.318988 | \n", "2023-05-15 09:30:07.934 | \n", "2023-05-15 09:30:10.556 | \n", "QQQ | \n", "