This example works for a single instrument. To use it with multiple instruments, will need to extend it to keep separate books for each instrument.
Examples and tutorials
Options
            
            
              Equity options: Introduction
            
          
        
          
            
            
              Options on futures: Introduction
            
          
        
          
            
            
              All options with a given underlying
            
          
        
          
            
            
              Join options with underlying prices
            
          
        
          
            
            
              US equity options volume by venue
            
          
        
          
            
            
              Resample US equity options NBBO
            
          
        
          
            
            
              Estimate implied volatility
            
          
        
          
            
            
              Get symbols for 0DTE options
            
          
        
          
            
            
              Calculate daily statistics for equity options
            
          
        Historical data
            
            
              Request a large number of symbols
            
          
        
          
            
            
              Programmatic batch downloads
            
          
        
          
            
            
              Best bid, best offer, and midprice
            
          
        
          
            
            
              Custom OHLCV bars from trades
            
          
        
          
            
            
              Join schemas on instrument ID
            
          
        
          
            
            
              Plot a candlestick chart
            
          
        
          
            
            
              Calculate VWAP and RSI
            
          
        
          
            
            
              End-of-day pricing and portfolio valuation
            
          
        
          
            
            
              Benchmark portfolio performance
            
          
        
          
            
            
              Market halts, volatility interrupts, and price bands
            
          
        
          
            
            
              Resample OHLCV from 1-minute to 5-minute
            
          
        Algorithmic trading
            
            
              A high-frequency liquidity-taking strategy
            
          
        
          
            
            
              Build prediction models with machine learning
            
          
        
          
            
            
              Execution slippage and markouts
            
          
        
          
            
            
              Matching engine latencies
            
          
        
          
            
            
              Using messaging rates as a proxy for implied volatility
            
          
        
          
            
            
              Mean reversion and portfolio optimization
            
          
        
          
            
            
              Pairs trading based on cointegration
            
          
        
          
            
            
              Build a real-time stock screener
            
          
        
            
            
              Core concepts
            
          
        Venues and datasets
            
            
              CME Globex MDP 3.0
            
          
        
          
            
            
              Cboe BYX Depth
            
          
        
          
            
            
              Cboe BYZ Depth
            
          
        
          
            
            
              Cboe EDGA Depth
            
          
        
          
            
            
              Cboe EDGX Depth
            
          
        
          
            
            
              Databento US Equities Basic
            
          
        
          
            
            
              Databento US Equities Mini
            
          
        
          
            
            
              Databento US Equities Summary
            
          
        
          
            
            
              Eurex Exchange
            
          
        
          
            
            
              European Energy Exchange
            
          
        
          
            
            
              ICE Endex iMpact
            
          
        
          
            
            
              ICE Europe Commodities iMpact
            
          
        
          
            
            
              ICE Europe Financials iMpact
            
          
        
          
            
            
              ICE Futures US iMpact
            
          
        
          
            
            
              IEX TOPS
            
          
        
          
            
            
              MEMX Memoir
            
          
        
          
            
            
              MIAX Depth of Market
            
          
        
          
            
            
              Nasdaq Basic with NLS Plus
            
          
        
          
            
            
              Nasdaq TotalView-ITCH
            
          
        
          
            
            
              NYSE American Integrated
            
          
        
          
            
            
              NYSE Arca Integrated
            
          
        
          
            
            
              NYSE Texas Integrated
            
          
        
          
            
            
              NYSE National Trades and BBO
            
          
        
          
            
            
              NYSE Integrated
            
          
        
          
            
            
              OPRA Pillar
            
          
        
          
            
            
              Corporate actions
            
          
        
          
            
            
              Adjustment factors
            
          
        
          
            
            
              Security master
            
          
        
            
            
              API Reference
            
          
        
          
            
            
              Resources
            
          
        Release notes
C++
            
            
              0.42.0 - 2025-08-19
            
          
        
          
            
            
              0.41.0 - 2025-08-12
            
          
        
          
            
            
              0.40.0 - 2025-07-29
            
          
        
          
            
            
              0.39.1 - 2025-07-22
            
          
        
          
            
            
              0.39.0 - 2025-07-15
            
          
        
          
            
            
              0.38.2 - 2025-07-01
            
          
        
          
            
            
              0.38.1 - 2025-06-25
            
          
        
          
            
            
              0.38.0 - 2025-06-10
            
          
        
          
            
            
              0.37.1 - 2025-06-03
            
          
        
          
            
            
              0.37.0 - 2025-06-03
            
          
        
          
            
            
              0.36.0 - 2025-05-27
            
          
        
          
            
            
              0.35.1 - 2025-05-20
            
          
        
          
            
            
              0.35.0 - 2025-05-13
            
          
        
          
            
            
              0.34.2 - 2025-05-06
            
          
        
          
            
            
              0.34.1 - 2025-04-29
            
          
        
          
            
            
              0.34.0 - 2025-04-22
            
          
        
          
            
            
              0.33.0 - 2025-04-15
            
          
        
          
            
            
              0.32.1 - 2025-04-07
            
          
        
          
            
            
              0.32.0 - 2025-04-02
            
          
        
          
            
            
              0.31.0 - 2025-03-18
            
          
        
          
            
            
              0.30.0 - 2025-02-11
            
          
        
          
            
            
              0.29.0 - 2025-02-04
            
          
        
          
            
            
              0.28.0 - 2025-01-21
            
          
        
          
            
            
              0.27.0 - 2025-01-07
            
          
        
          
            
            
              0.26.0 - 2024-12-17
            
          
        
          
            
            
              0.25.0 - 2024-11-12
            
          
        
          
            
            
              0.24.0 - 2024-10-22
            
          
        
          
            
            
              0.23.0 - 2024-09-25
            
          
        
          
            
            
              0.22.0 - 2024-08-27
            
          
        
          
            
            
              0.21.0 - 2024-07-30
            
          
        
          
            
            
              0.20.1 - 2024-07-16
            
          
        
          
            
            
              0.20.0 - 2024-07-09
            
          
        
          
            
            
              0.19.1 - 2024-06-25
            
          
        
          
            
            
              0.19.0 - 2024-06-04
            
          
        
          
            
            
              0.18.1 - 2024-05-22
            
          
        
          
            
            
              0.18.0 - 2024-05-14
            
          
        
          
            
            
              0.17.1 - 2024-04-08
            
          
        
          
            
            
              0.17.0 - 2024-04-01
            
          
        
          
            
            
              0.16.0 - 2024-03-01
            
          
        
          
            
            
              0.15.0 - 2024-01-16
            
          
        
          
            
            
              0.14.1 - 2023-12-18
            
          
        
          
            
            
              0.14.0 - 2023-11-23
            
          
        
          
            
            
              0.13.1 - 2023-10-23
            
          
        
          
            
            
              0.13.0 - 2023-09-21
            
          
        
          
            
            
              0.12.0 - 2023-08-24
            
          
        
          
            
            
              0.11.0 - 2023-08-10
            
          
        
          
            
            
              0.10.0 - 2023-07-20
            
          
        
          
            
            
              0.9.1 - 2023-07-11
            
          
        
          
            
            
              0.9.0 - 2023-06-13
            
          
        
          
            
            
              0.8.0 - 2023-05-16
            
          
        
          
            
            
              0.7.0 - 2023-04-28
            
          
        
          
            
            
              0.6.1 - 2023-03-28
            
          
        
          
            
            
              0.6.0 - 2023-03-24
            
          
        
          
            
            
              0.5.0 - 2023-03-13
            
          
        
          
            
            
              0.4.0 - 2023-03-02
            
          
        
          
            
            
              0.3.0 - 2023-01-06
            
          
        
          
            
            
              0.2.0 - 2022-12-01
            
          
        
          
            
            
              0.1.0 - 2022-11-07
            
          
        Python
            
            
              0.63.0 - 2025-09-02
            
          
        
          
            
            
              0.62.0 - 2025-08-19
            
          
        
          
            
            
              0.61.0 - 2025-08-12
            
          
        
          
            
            
              0.60.0 - 2025-08-05
            
          
        
          
            
            
              0.59.0 - 2025-07-15
            
          
        
          
            
            
              0.58.0 - 2025-07-08
            
          
        
          
            
            
              0.57.1 - 2025-06-17
            
          
        
          
            
            
              0.57.0 - 2025-06-10
            
          
        
          
            
            
              0.56.0 - 2025-06-03
            
          
        
          
            
            
              0.55.1 - 2025-06-02
            
          
        
          
            
            
              0.55.0 - 2025-05-29
            
          
        
          
            
            
              0.54.0 - 2025-05-13
            
          
        
          
            
            
              0.53.0 - 2025-04-29
            
          
        
          
            
            
              0.52.0 - 2025-04-15
            
          
        
          
            
            
              0.51.0 - 2025-04-08
            
          
        
          
            
            
              0.50.0 - 2025-03-18
            
          
        
          
            
            
              0.49.0 - 2025-03-04
            
          
        
          
            
            
              0.48.0 - 2025-01-21
            
          
        
          
            
            
              0.47.0 - 2024-12-17
            
          
        
          
            
            
              0.46.0 - 2024-12-10
            
          
        
          
            
            
              0.45.0 - 2024-11-12
            
          
        
          
            
            
              0.44.1 - 2024-10-29
            
          
        
          
            
            
              0.44.0 - 2024-10-22
            
          
        
          
            
            
              0.43.1 - 2024-10-15
            
          
        
          
            
            
              0.43.0 - 2024-10-09
            
          
        
          
            
            
              0.42.0 - 2024-09-23
            
          
        
          
            
            
              0.41.0 - 2024-09-03
            
          
        
          
            
            
              0.40.0 - 2024-08-27
            
          
        
          
            
            
              0.39.3 - 2024-08-20
            
          
        
          
            
            
              0.39.2 - 2024-08-13
            
          
        
          
            
            
              0.39.1 - 2024-08-13
            
          
        
          
            
            
              0.39.0 - 2024-07-30
            
          
        
          
            
            
              0.38.0 - 2024-07-23
            
          
        
          
            
            
              0.37.0 - 2024-07-09
            
          
        
          
            
            
              0.36.3 - 2024-07-02
            
          
        
          
            
            
              0.36.2 - 2024-06-25
            
          
        
          
            
            
              0.36.1 - 2024-06-18
            
          
        
          
            
            
              0.36.0 - 2024-06-11
            
          
        
          
            
            
              0.35.0 - 2024-06-04
            
          
        
          
            
            
              0.34.1 - 2024-05-21
            
          
        
          
            
            
              0.34.0 - 2024-05-14
            
          
        
          
            
            
              0.33.0 - 2024-04-16
            
          
        
          
            
            
              0.32.0 - 2024-04-04
            
          
        
          
            
            
              0.31.1 - 2024-03-20
            
          
        
          
            
            
              0.31.0 - 2024-03-05
            
          
        
          
            
            
              0.30.0 - 2024-02-22
            
          
        
          
            
            
              0.29.0 - 2024-02-13
            
          
        
          
            
            
              0.28.0 - 2024-02-01
            
          
        
          
            
            
              0.27.0 - 2024-01-23
            
          
        
          
            
            
              0.26.0 - 2024-01-16
            
          
        
          
            
            
              0.25.0 - 2024-01-09
            
          
        
          
            
            
              0.24.1 - 2023-12-15
            
          
        
          
            
            
              0.24.0 - 2023-11-23
            
          
        
          
            
            
              0.23.1 - 2023-11-10
            
          
        
          
            
            
              0.23.0 - 2023-10-26
            
          
        
          
            
            
              0.22.1 - 2023-10-24
            
          
        
          
            
            
              0.22.0 - 2023-10-23
            
          
        
          
            
            
              0.21.0 - 2023-10-11
            
          
        
          
            
            
              0.20.0 - 2023-09-21
            
          
        
          
            
            
              0.19.1 - 2023-09-08
            
          
        
          
            
            
              0.19.0 - 2023-08-25
            
          
        
          
            
            
              0.18.1 - 2023-08-16
            
          
        
          
            
            
              0.18.0 - 2023-08-14
            
          
        
          
            
            
              0.17.0 - 2023-08-10
            
          
        
          
            
            
              0.16.1 - 2023-08-03
            
          
        
          
            
            
              0.16.0 - 2023-07-25
            
          
        
          
            
            
              0.15.2 - 2023-07-19
            
          
        
          
            
            
              0.15.1 - 2023-07-06
            
          
        
          
            
            
              0.15.0 - 2023-07-05
            
          
        
          
            
            
              0.14.1 - 2023-06-16
            
          
        
          
            
            
              0.14.0 - 2023-06-14
            
          
        
          
            
            
              0.13.0 - 2023-06-02
            
          
        
          
            
            
              0.12.0 - 2023-05-01
            
          
        
          
            
            
              0.11.0 - 2023-04-13
            
          
        
          
            
            
              0.10.0 - 2023-04-07
            
          
        
          
            
            
              0.9.0 - 2023-03-10
            
          
        
          
            
            
              0.8.1 - 2023-03-05
            
          
        
          
            
            
              0.8.0 - 2023-03-03
            
          
        
          
            
            
              0.7.0 - 2023-01-10
            
          
        
          
            
            
              0.6.0 - 2022-12-02
            
          
        
          
            
            
              0.5.0 - 2022-11-07
            
          
        
          
            
            
              0.4.0 - 2022-09-14
            
          
        
          
            
            
              0.3.0 - 2022-08-30
            
          
        HTTP API
            
            
              0.35.0 - TBD
            
          
        
          
            
            
              0.34.1 - 2025-06-17
            
          
        
          
            
            
              0.34.0 - 2025-06-09
            
          
        
          
            
            
              0.33.0 - 2024-12-10
            
          
        
          
            
            
              0.32.0 - 2024-11-26
            
          
        
          
            
            
              0.31.0 - 2024-11-12
            
          
        
          
            
            
              0.30.0 - 2024-09-24
            
          
        
          
            
            
              0.29.0 - 2024-09-03
            
          
        
          
            
            
              0.28.0 - 2024-06-25
            
          
        
          
            
            
              0.27.0 - 2024-06-04
            
          
        
          
            
            
              0.26.0 - 2024-05-14
            
          
        
          
            
            
              0.25.0 - 2024-03-26
            
          
        
          
            
            
              0.24.0 - 2024-03-06
            
          
        
          
            
            
              0.23.0 - 2024-02-15
            
          
        
          
            
            
              0.22.0 - 2024-02-06
            
          
        
          
            
            
              0.21.0 - 2024-01-30
            
          
        
          
            
            
              0.20.0 - 2024-01-18
            
          
        
          
            
            
              0.19.0 - 2023-10-17
            
          
        
          
            
            
              0.18.0 - 2023-10-11
            
          
        
          
            
            
              0.17.0 - 2023-10-04
            
          
        
          
            
            
              0.16.0 - 2023-09-26
            
          
        
          
            
            
              0.15.0 - 2023-09-19
            
          
        
          
            
            
              0.14.0 - 2023-08-29
            
          
        
          
            
            
              0.13.0 - 2023-08-23
            
          
        
          
            
            
              0.12.0 - 2023-08-10
            
          
        
          
            
            
              0.11.0 - 2023-07-25
            
          
        
          
            
            
              0.10.0 - 2023-07-06
            
          
        
          
            
            
              0.9.0 - 2023-06-01
            
          
        
          
            
            
              0.8.0 - 2023-05-01
            
          
        
          
            
            
              0.7.0 - 2023-04-07
            
          
        
          
            
            
              0.6.0 - 2023-03-10
            
          
        
          
            
            
              0.5.0 - 2023-03-03
            
          
        
          
            
            
              0.4.0 - 2022-12-02
            
          
        
          
            
            
              0.3.0 - 2022-08-30
            
          
        
          
            
            
              0.2.0 - 2021-12-10
            
          
        
          
            
            
              0.1.0 - 2021-08-30
            
          
        Raw API
            
            
              0.6.4 - TBD
            
          
        
          
            
            
              0.6.3 - 2025-09-07
            
          
        
          
            
            
              0.6.2 - 2025-08-02
            
          
        
          
            
            
              0.6.1 - 2025-06-29
            
          
        
          
            
            
              0.6.0 - 2025-05-24
            
          
        
          
            
            
              0.5.6 - 2025-04-06
            
          
        
          
            
            
              0.5.5 - 2024-12-01
            
          
        
          
            
            
              0.5.4 - 2024-10-02
            
          
        
          
            
            
              0.5.3 - 2024-10-02
            
          
        
          
            
            
              0.5.1 - 2024-07-24
            
          
        
          
            
            
              2024-07-20
            
          
        
          
            
            
              2024-06-25
            
          
        
          
            
            
              0.5.0 - 2024-05-25
            
          
        
          
            
            
              0.4.6 - 2024-04-13
            
          
        
          
            
            
              0.4.5 - 2024-03-25
            
          
        
          
            
            
              0.4.4 - 2024-03-23
            
          
        
          
            
            
              0.4.3 - 2024-02-13
            
          
        
          
            
            
              0.4.2 - 2024-01-06
            
          
        
          
            
            
              0.4.0 - 2023-11-08
            
          
        
          
            
            
              0.3.0 - 2023-10-20
            
          
        
          
            
            
              0.2.0 - 2023-07-23
            
          
        
          
            
            
              0.1.0 - 2023-05-01
            
          
        Rust
            
            
              0.33.1 - TBD
            
          
        
          
            
            
              0.33.0 - 2025-08-19
            
          
        
          
            
            
              0.32.0 - 2025-08-12
            
          
        
          
            
            
              0.31.0 - 2025-07-30
            
          
        
          
            
            
              0.30.0 - 2025-07-22
            
          
        
          
            
            
              0.29.0 - 2025-07-15
            
          
        
          
            
            
              0.28.0 - 2025-07-01
            
          
        
          
            
            
              0.27.1 - 2025-06-25
            
          
        
          
            
            
              0.27.0 - 2025-06-10
            
          
        
          
            
            
              0.26.2 - 2025-06-03
            
          
        
          
            
            
              0.26.1 - 2025-05-30
            
          
        
          
            
            
              0.26.0 - 2025-05-28
            
          
        
          
            
            
              0.25.0 - 2025-05-13
            
          
        
          
            
            
              0.24.0 - 2025-04-22
            
          
        
          
            
            
              0.23.0 - 2025-04-15
            
          
        
          
            
            
              0.22.0 - 2025-04-01
            
          
        
          
            
            
              0.21.0 - 2025-03-18
            
          
        
          
            
            
              0.20.0 - 2025-02-12
            
          
        
          
            
            
              0.19.0 - 2025-01-21
            
          
        
          
            
            
              0.18.0 - 2025-01-08
            
          
        
          
            
            
              0.17.0 - 2024-12-17
            
          
        
          
            
            
              0.16.0 - 2024-11-12
            
          
        
          
            
            
              0.15.0 - 2024-10-22
            
          
        
          
            
            
              0.14.1 - 2024-10-08
            
          
        
          
            
            
              0.14.0 - 2024-10-01
            
          
        
          
            
            
              0.13.0 - 2024-09-25
            
          
        
          
            
            
              0.12.1 - 2024-08-27
            
          
        
          
            
            
              0.12.0 - 2024-07-30
            
          
        
          
            
            
              0.11.4 - 2024-07-16
            
          
        
          
            
            
              0.11.3 - 2024-07-09
            
          
        
          
            
            
              0.11.2 - 2024-06-25
            
          
        
          
            
            
              0.11.1 - 2024-06-11
            
          
        
          
            
            
              0.11.0 - 2024-06-04
            
          
        
          
            
            
              0.10.0 - 2024-05-22
            
          
        
          
            
            
              0.9.1 - 2024-05-15
            
          
        
          
            
            
              0.9.0 - 2024-05-14
            
          
        
          
            
            
              0.8.0 - 2024-04-01
            
          
        
          
            
            
              0.7.1 - 2024-03-05
            
          
        
          
            
            
              0.7.0 - 2024-03-01
            
          
        
          
            
            
              0.6.0 - 2024-01-16
            
          
        
          
            
            
              0.5.0 - 2023-11-23
            
          
        
          
            
            
              0.4.2 - 2023-10-23
            
          
        
          
            
            
              0.4.1 - 2023-10-06
            
          
        
          
            
            
              0.4.0 - 2023-09-21
            
          
        
          
            
            
              0.3.0 - 2023-09-13
            
          
        
          
            
            
              0.2.1 - 2023-08-25
            
          
        
          
            
            
              0.2.0 - 2023-08-10
            
          
        
          
            
            
              0.1.0 - 2023-08-02
            
          
        Data
            
            
              2025-08-26
            
          
        
          
            
            
              2025-08-05
            
          
        
          
            
            
              2025-07-25
            
          
        
          
            
            
              2025-07-06
            
          
        
          
            
            
              2025-07-01
            
          
        
          
            
            
              2025-06-27
            
          
        
          
            
            
              2025-06-17
            
          
        
          
            
            
              2025-06-10
            
          
        
          
            
            
              2025-05-20
            
          
        
          
            
            
              2025-05-07
            
          
        
          
            
            
              2025-04-05
            
          
        
          
            
            
              2025-04-01
            
          
        
          
            
            
              2025-03-13
            
          
        
          
            
            
              2025-02-26
            
          
        
          
            
            
              2025-02-01
            
          
        
          
            
            
              2025-01-15
            
          
        
          
            
            
              2024-12-14
            
          
        
          
            
            
              2024-12-03
            
          
        
          
            
            
              2024-12-02
            
          
        
          
            
            
              2024-10-22
            
          
        
          
            
            
              2024-10-24
            
          
        
          
            
            
              2024-07-05
            
          
        
          
            
            
              2024-06-25
            
          
        
          
            
            
              2024-06-18
            
          
        
          
            
            
              2024-05-07
            
          
        
          
            
            
              2024-01-18
            
          
        
          
            
            
              2023-11-17
            
          
        
          
            
            
              2023-10-04
            
          
        
          
            
            
              2023-08-29
            
          
        
          
            
            
              2023-07-23
            
          
        
          
            
            
              2023-05-01
            
          
        
          
            
            
              2023-04-28
            
          
        
          
            
            
              2023-03-07
            
          
        
Collapse all
Examples and tutorials
Order book
State management of resting orders
Overview
This example shows how to track orders and update them according to the different MBO actions. Order tracking is simpler to implement than a full limit order book: it keeps track of all resting orders, but not the book levels. The book levels such as the top of book (BBO) can be constructed from a map of resting orders, but it requires inefficiently iterating over all the orders.
Info
Order events
| Name | Value | Action | 
|---|---|---|
| Add | A | 
Insert a new order into the book. | 
| Modify | M | 
Change an order's price and/or size. | 
| Cancel | C | 
Fully or partially cancel an order from the book. | 
| Clear | R | 
Remove all resting orders for the instrument. | 
| Trade | T | 
An aggressing order traded. Does not affect the book. | 
| Fill | F | 
A resting order was filled. Does not affect the book. | 
| None | N | 
No action: does not affect the book, but may carry flags or other information. | 
Trade and Fill actions do not affect the book because all fills will be accompanied by cancel actions that do update the book.
Handling F_LAST
A single event from a publisher can be normalized into a multiple records.
Databento sets the flag F_LAST to denote the last record for an instrument in an event.
The book state should only be examined after a record with F_LAST set.
Example
from dataclasses import dataclass, field
import databento as db
OrderId = int
UnixTimestamp = int
@dataclass
class Order:
    side: str
    price: int
    size: int
    ts_event: UnixTimestamp
@dataclass
class PriceLevel:
    price: int | None = None
    size: int = 0
    count: int = 0
@dataclass
class Book:
    orders: dict[OrderId, Order] = field(default_factory=dict)
    def bbo(self) -> tuple[PriceLevel, PriceLevel]:
        best_ask = PriceLevel()
        best_bid = PriceLevel()
        for order in self.orders.values():
            if order.side == "A":
                if best_ask.price is None or best_ask.price > order.price:
                    best_ask = PriceLevel(
                        price=order.price,
                        size=order.size,
                        count=1,
                    )
                elif best_ask.price == order.price:
                    best_ask.size += order.size
                    best_ask.count += 1
            elif order.side == "B":
                if best_bid.price is None or best_bid.price < order.price:
                    best_bid = PriceLevel(
                        price=order.price,
                        size=order.size,
                        count=1,
                    )
                elif best_bid.price == order.price:
                    best_bid.size += order.size
                    best_bid.count += 1
        return best_bid, best_ask
    def apply(
        self,
        ts_event: UnixTimestamp,
        action: str,
        side: str,
        order_id: int,
        price: int,
        size: int,
        flags: db.RecordFlags,
    ) -> None:
        # Trade, Fill, or None: no change
        if action in ("T", "F", "N"):
            return
        # Clear book: remove all resting orders
        if action == "R":
            self.orders.clear()
        # Add: insert a new order
        elif action == "A":
            # For top-of-book publishers, remove previous order associated with this side
            if flags & db.RecordFlags.F_TOB:
                self.orders = {i: o for i, o in self.orders.items() if o.side != side}
                # UNDEF_PRICE indicates the price level was removed. There's no new level to add
                if price == db.UNDEF_PRICE:
                    return
            self.orders[order_id] = Order(side, price, size, ts_event)
        # Cancel: partially or fully cancel some size from a resting order
        elif action == "C":
            existing_order = self.orders[order_id]
            assert existing_order.size >= size
            existing_order.size -= size
            # If the full size is cancelled, remove the order from the book
            if existing_order.size == 0:
                self.orders.pop(order_id)
        # Modify: change the price and/or size of a resting order
        elif action == "M":
            existing_order = self.orders[order_id]
            # The order loses its priority if the price changes or the size increases
            if existing_order.price != price or existing_order.size < size:
                existing_order.ts_event = ts_event
            existing_order.size = size
            existing_order.price = price
# First, create a historical client
client = db.Historical("YOUR_API_KEY")
# Next, we will request MBO data starting from the beginning of pre-market trading hours
data = client.timeseries.get_range(
    dataset="XNAS.ITCH",
    start="2022-08-26T08:00:00",
    end="2022-08-26T14:30:00",
    symbols="MSFT",
    schema="mbo",
)
# Then, we replay the data, updating the book with each record
book = Book()
book_is_ready = False
for mbo in data:
    book.apply(mbo.ts_event, mbo.action, mbo.side, mbo.order_id, mbo.price, mbo.size, mbo.flags)
    book_is_ready = mbo.flags & db.RecordFlags.F_LAST
# Finally we inspect the final BBO
if book_is_ready:
    best_bid, best_ask = book.bbo()
    print(f"Best ask  {float(best_ask.price) / db.FIXED_PRICE_SCALE} × {best_ask.size}")
    print(f"Best bid  {float(best_bid.price) / db.FIXED_PRICE_SCALE} × {best_bid.size}")