CL historical data: 1-minute to daily bars, 2008 to 2026

CL is the WTI crude oil futures; it tracks West Texas Intermediate crude oil. MarketParquet holds CL as a futures contract with 1-minute, 5-minute, 30-minute, 1-hour and daily OHLCV bars from 2008-01-02 to 2026-10-30 (4,744 daily bars), continuous contract, ratio-adjusted at each roll, as one Parquet file per trading day.

CL is the most traded commodity future and the standard test bed for energy trend-following and calendar-spread research.

CL is the NYMEX light sweet crude oil contract, traded on CME Globex nearly around the clock from Sunday evening to Friday afternoon US time. One contract is 1,000 barrels, quoted in US dollars and cents per barrel, and the minimum tick is $0.01 per barrel, or $10 per contract. Contracts are listed for every calendar month and settle by physical delivery at Cushing, Oklahoma, so each month stops trading in the second half of the month before delivery.

In this archive CL is one continuous series, ratio-adjusted at every roll so that percentage returns stay continuous across the expiry seam; the roll table and method are on the continuous futures page. The 1-minute to 1-hour files carry the full Globex session, which is where the weekly EIA inventory release (Wednesdays, 10:30 AM ET) and overnight OPEC headlines move the market, so intraday crude strategies can be tested on the bars where those moves actually happened.

CL at a glance

InstrumentWTI crude oil futures (CL)
Asset classFutures (continuous contract)
First bar2008-01-02
Latest bar2026-10-30
Daily bars4,744
Timeframes1-minute, 5-minute, 30-minute, 1-hour, daily
Adjustmentcontinuous contract, ratio-adjusted at each roll
TimezoneUS/Eastern bar open time; intraday files include pre-market and after-hours bars where available
FormatApache Parquet, one file per trading day containing every Futures symbol

Sample: CL 30-minute bars on 2026-10-30

The first regular-session bars from the newest 30-minute file, read live from the archive. Prices are the values as published; the full session has many more rows.

timestampopenhighlowclosevolume
09:30103.76104.43103.65104.3710,592
10:00104.36104.65104.08104.299,217
10:30104.30104.46104.05104.235,966
11:00104.22104.33103.64103.7010,895
11:30103.69104.20103.28104.089,845
12:00104.08104.46104.04104.155,626
12:30104.16104.98103.99104.867,291
13:00104.87104.98104.60104.855,626

Corporate actions in the changelog

CL is a continuous contract: each roll is ratio-adjusted by the data source so percentage returns stay continuous across expiries. There are no splits to record; the continuous futures page explains the roll method, the published roll table and the current re-base status of older history.

Load CL in Python

Files are partitioned by trading day, so pulling one symbol means filtering across files. DuckDB reads the whole daily history in one statement; union_by_name and the COALESCE cover the older daily files, which carry a timestamp column where newer ones carry date:

  import duckdb

  cl = duckdb.sql("""
      SELECT COALESCE(date, CAST(timestamp AS DATE)) AS date,
             open, high, low, close, volume
      FROM read_parquet('by_date/futures_daily/*/*.parquet', union_by_name=true)
      WHERE symbol = 'CL'
      ORDER BY 1
  """).df()

Intraday files all share one schema, so Polars can scan a year of 5-minute bars lazily and keep only CL:

  import polars as pl

  bars = (
      pl.scan_parquet("by_date/futures_5min/2025/*.parquet")
        .filter(pl.col("symbol") == "CL")
        .select(["timestamp", "open", "high", "low", "close", "volume"])
        .sort("timestamp")
        .collect()
  )

Timestamps are US/Eastern bar open times. The Polars guide, the DuckDB guide and the backtrader guide take it from here: multi-year loads, resampling and feeding a backtest engine.

Available Futures files

TimeframeFilesDate range
1-Min5,8922007-12-31 to 2026-10-30
5-Min5,8922007-12-31 to 2026-10-30
30-Min5,8922007-12-31 to 2026-10-30
1-Hour5,8922007-12-31 to 2026-10-30
Daily4,9012007-12-31 to 2026-10-30

Every file holds all Futures symbols for that day, CL included.

Get CL data

Free: a free account can download roughly the last year of daily Futures files, which include CL, from the daily browse page or by API key; CL is one of the 10 futures symbols in the free intraday sample pack. Complete Archive: every timeframe and the full history back to 2008-01-02 for CL and every other symbol, $79 one-time.

> Download the free daily sample > See pricing

FAQ

Is CL history split-adjusted?

Futures do not split. CL is a continuous, ratio-adjusted series: all history sits on one ratio-adjusted basis, rolls inside the trailing 30-day window are re-based nightly and recorded in the roll table (meta/futures_rolls.parquet) -- see data quality.

How far back does CL go?

The first CL bar in the archive is dated 2008-01-02 and the newest is 2026-10-30. New sessions are added the same night, typically by midnight ET.

What timezone are the intraday bars in?

US/Eastern. Regular hours are 9:30 AM to 4:00 PM ET; 1-minute files also carry pre-market from 4:00 AM and after-hours to 8:00 PM where trades occurred.

Can I download only CL?

Files are per day, not per symbol, so you download the daily or intraday files for the dates you need and filter on symbol == "CL". A year of daily files is small; the snippets above do the filtering in one pass.

Related

Futures data hub · browse Futures daily · all symbol pages · pricing

Other Futures pages: ES · NQ · MES · MNQ · YM · RTY · MCL · GC · MGC · SI · NG · ZN · BTC