df-drills pandas · Polars · DuckDB SQL · DuckDB Relational 题目列表 登录

成交匹配最近报价

困难 19-timeseries 时间序列 asofjointime-seriestolerance

给每一笔成交配上“成交那一刻”的最新报价。

  • 对每笔成交,在同一个 ticker 的报价里,找报价时间 ≤ 成交时间的最近一条(时间相同也算)。
  • 如果这条最近的报价比成交早了超过 5 秒,视为报价已过期,不匹配;恰好 5 秒仍然算匹配。
  • 找不到可匹配报价的成交也要保留,bid、ask 为 null。
  • 每笔成交恰好输出一行。

输入

  • trades(trade_id, ticker, ts, qty, side):成交
  • quotes(ticker, ts, bid, ask):报价,同一 ticker 内 ts 不重复

输出

列为 trade_id, ticker, ts, qty, bid, ask,其中 ts 是成交时间。行顺序不限。

输入表 (case base,共 2 个 case:base、edge)

trades stocks/trades
#trade_idint64tickerstringtsdatetimeqtyint64sidestring
1 1 TSLA 2026-08-20 09:30:03 100 sell
2 2 NVDA 2026-08-20 09:30:46 300 buy
3 3 TSLA 2026-08-20 09:30:57 500 buy
4 4 BABA 2026-08-20 09:31:28 200 buy
5 5 MSFT 2026-08-20 09:31:39 1000 sell
6 6 NVDA 2026-08-20 09:32:13 500 sell
7 7 BABA 2026-08-20 09:32:22 300 buy
8 8 TSLA 2026-08-20 09:33:06 300 sell
9 9 AAPL 2026-08-20 09:33:29 500 buy
10 10 BABA 2026-08-20 09:33:43 1000 sell
11 11 NVDA 2026-08-20 09:34:11 300 sell
12 12 AAPL 2026-08-20 09:34:18 200 buy
13 13 MSFT 2026-08-20 09:35:21 300 sell
14 14 BABA 2026-08-20 09:35:24 300 sell
15 15 NVDA 2026-08-20 09:35:45 1000 buy
16 16 AAPL 2026-08-20 09:35:52 1000 buy
17 17 TSLA 2026-08-20 09:35:57 500 sell
18 18 AAPL 2026-08-20 09:36:52 200 buy
19 19 AAPL 2026-08-20 09:37:09 100 sell
20 20 AAPL 2026-08-20 09:37:25 200 sell
显示前 20 行,共 150 行
quotes stocks/quotes
#tickerstringtsdatetimebidfloat64askfloat64
1 TSLA 2026-08-20 09:30:03 239.82 239.92
2 AAPL 2026-08-20 09:30:15 189.59 189.67
3 TSLA 2026-08-20 09:30:31 238.5 238.6
4 TSLA 2026-08-20 09:30:35 239.61 239.71
5 BABA 2026-08-20 09:30:57 85.2 85.23
6 NVDA 2026-08-20 09:31:08 119.67 119.72
7 AAPL 2026-08-20 09:31:12 189.16 189.24
8 TSLA 2026-08-20 09:31:17 239.52 239.62
9 MSFT 2026-08-20 09:31:24 410.06 410.22
10 NVDA 2026-08-20 09:31:25 120.0 120.05
11 NVDA 2026-08-20 09:31:33 119.67 119.72
12 AAPL 2026-08-20 09:31:43 189.23 189.31
13 TSLA 2026-08-20 09:31:43 239.33 239.43
14 NVDA 2026-08-20 09:31:49 119.83 119.88
15 MSFT 2026-08-20 09:32:11 409.81 409.97
16 MSFT 2026-08-20 09:32:20 409.99 410.15
17 MSFT 2026-08-20 09:32:21 409.64 409.8
18 NVDA 2026-08-20 09:32:25 120.05 120.1
19 NVDA 2026-08-20 09:32:35 119.87 119.92
20 AAPL 2026-08-20 09:32:36 189.72 189.8
显示前 20 行,共 396 行

期望输出 (case base,行顺序不限)

#trade_idInt64tickerStringtsDatetime(time_unit='us', time_zone=None)qtyInt64bidFloat64askFloat64
1 1 TSLA 2026-08-20 09:30:03 100 239.82 239.92
2 3 TSLA 2026-08-20 09:30:57 500 null null
3 4 BABA 2026-08-20 09:31:28 200 null null
4 6 NVDA 2026-08-20 09:32:13 500 null null
5 7 BABA 2026-08-20 09:32:22 300 null null
6 8 TSLA 2026-08-20 09:33:06 300 null null
7 12 AAPL 2026-08-20 09:34:18 200 189.25 189.33
8 13 MSFT 2026-08-20 09:35:21 300 null null
9 19 AAPL 2026-08-20 09:37:09 100 null null
10 20 AAPL 2026-08-20 09:37:25 200 null null
11 21 AAPL 2026-08-20 09:37:49 200 189.65 189.73
12 23 MSFT 2026-08-20 09:38:00 300 null null
13 24 MSFT 2026-08-20 09:38:48 500 null null
14 25 NVDA 2026-08-20 09:39:29 500 null null
15 27 BABA 2026-08-20 09:40:00 1000 null null
16 33 BABA 2026-08-20 09:42:30 300 85.05 85.08
17 36 AAPL 2026-08-20 09:44:25 500 null null
18 38 MSFT 2026-08-20 09:44:40 100 null null
19 40 BABA 2026-08-20 09:45:54 300 null null
20 41 TSLA 2026-08-20 09:47:15 100 null null
21 43 AAPL 2026-08-20 09:47:30 500 null null
22 45 NVDA 2026-08-20 09:47:35 100 null null
23 46 AAPL 2026-08-20 09:48:10 200 null null
24 48 BABA 2026-08-20 09:48:14 300 84.91 84.94
25 51 MSFT 2026-08-20 09:49:14 1000 null null
26 53 MSFT 2026-08-20 09:50:21 1000 null null
27 56 NVDA 2026-08-20 09:53:03 500 null null
28 57 TSLA 2026-08-20 09:53:07 300 null null
29 58 BABA 2026-08-20 09:53:39 1000 null null
30 59 NVDA 2026-08-20 09:53:44 100 119.93 119.98
31 61 MSFT 2026-08-20 09:54:30 100 409.8 409.96
32 66 MSFT 2026-08-20 09:55:55 500 null null
33 68 MSFT 2026-08-20 09:56:41 1000 409.75 409.91
34 69 BABA 2026-08-20 09:57:04 300 null null
35 72 BABA 2026-08-20 09:58:55 300 null null
36 73 TSLA 2026-08-20 09:59:01 300 null null
37 76 MSFT 2026-08-20 10:00:06 200 409.97 410.13
38 77 TSLA 2026-08-20 10:00:54 300 null null
39 78 BABA 2026-08-20 10:01:25 100 null null
40 80 BABA 2026-08-20 10:01:40 200 null null
41 82 MSFT 2026-08-20 10:03:11 100 null null
42 84 MSFT 2026-08-20 10:03:26 300 null null
43 86 AAPL 2026-08-20 10:04:17 200 null null
44 87 NVDA 2026-08-20 10:04:21 300 null null
45 89 BABA 2026-08-20 10:04:53 1000 84.9 84.93
46 90 NVDA 2026-08-20 10:04:57 300 null null
47 94 MSFT 2026-08-20 10:05:22 300 null null
48 95 TSLA 2026-08-20 10:05:29 300 null null
49 98 NVDA 2026-08-20 10:08:19 200 null null
50 99 MSFT 2026-08-20 10:08:20 300 null null
显示前 50 行,共 150 行