aapl_trace
Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-09-18, from stock-split-candidates.
| month | period_label | highest_close | lowest_close |
|---|---|---|---|
| 2014-01-01 | Jan 2014 | 557.36 | 499.78 |
| 2014-02-01 | Feb 2014 | 545.99 | 501.53 |
| 2014-03-01 | Mar 2014 | 544.99 | 524.69 |
| 2014-04-01 | Apr 2014 | 594.09 | 517.96 |
| 2014-05-01 | May 2014 | 635.38 | 585.54 |
| 2014-06-01 | Jun 2014 | 647.35 | 90.28 |
| 2014-07-01 | Jul 2014 | 99.02 | 93.09 |
| 2014-08-01 | Aug 2014 | 102.5 | 94.48 |
| 2014-09-01 | Sep 2014 | 103.3 | 97.87 |
| 2014-10-01 | Oct 2014 | 108 | 96.26 |
| 2014-11-01 | Nov 2014 | 119 | 108.6 |
| 2014-12-01 | Dec 2014 | 115.93 | 106.75 |
| 2015-01-01 | Jan 2015 | 118.9 | 105.99 |
| 2015-02-01 | Feb 2015 | 133 | 118.63 |
| 2015-03-01 | Mar 2015 | 129.36 | 122.24 |
| 2015-04-01 | Apr 2015 | 132.65 | 124.25 |
| 2015-05-01 | May 2015 | 132.54 | 125.01 |
| 2015-06-01 | Jun 2015 | 130.54 | 124.53 |
| 2015-07-01 | Jul 2015 | 132.07 | 120.07 |
| 2015-08-01 | Aug 2015 | 119.72 | 103.12 |
| 2015-09-01 | Sep 2015 | 116.41 | 107.72 |
| 2015-10-01 | Oct 2015 | 120.53 | 109.5 |
| 2015-11-01 | Nov 2015 | 122.57 | 112.34 |
| 2015-12-01 | Dec 2015 | 119.03 | 105.26 |
| 2016-01-01 | Jan 2016 | 105.35 | 93.42 |
| 2016-02-01 | Feb 2016 | 98.12 | 93.7 |
| 2016-03-01 | Mar 2016 | 109.56 | 100.53 |
| 2016-04-01 | Apr 2016 | 112.1 | 93.74 |
| 2016-05-01 | May 2016 | 100.41 | 90.34 |
| 2016-06-01 | Jun 2016 | 99.65 | 92.04 |
| 2016-07-01 | Jul 2016 | 104.34 | 94.99 |
| 2016-08-01 | Aug 2016 | 109.48 | 104.48 |
| 2016-09-01 | Sep 2016 | 115.57 | 103.13 |
| 2016-10-01 | Oct 2016 | 118.25 | 112.52 |
| 2016-11-01 | Nov 2016 | 111.8 | 105.71 |
| 2016-12-01 | Dec 2016 | 117.26 | 109.11 |
| 2017-01-01 | Jan 2017 | 121.95 | 116.02 |
| 2017-02-01 | Feb 2017 | 137.11 | 128.53 |
| 2017-03-01 | Mar 2017 | 144.12 | 138.68 |
| 2017-04-01 | Apr 2017 | 144.77 | 140.68 |
| 2017-05-01 | May 2017 | 156.1 | 146.53 |
| 2017-06-01 | Jun 2017 | 155.45 | 142.27 |
| 2017-07-01 | Jul 2017 | 153.46 | 142.73 |
| 2017-08-01 | Aug 2017 | 164 | 150.05 |
| 2017-09-01 | Sep 2017 | 164.05 | 150.55 |
| 2017-10-01 | Oct 2017 | 169.04 | 153.48 |
| 2017-11-01 | Nov 2017 | 176.24 | 166.89 |
| 2017-12-01 | Dec 2017 | 176.42 | 169.01 |
| 2018-01-01 | Jan 2018 | 179.26 | 166.97 |
| 2018-02-01 | Feb 2018 | 178.97 | 155.15 |
| 2018-03-01 | Mar 2018 | 181.72 | 164.94 |
| 2018-04-01 | Apr 2018 | 178.24 | 162.32 |
| 2018-05-01 | May 2018 | 190.04 | 169.1 |
| 2018-06-01 | Jun 2018 | 193.98 | 182.17 |
| 2018-07-01 | Jul 2018 | 194.82 | 183.92 |
| 2018-08-01 | Aug 2018 | 227.63 | 201.5 |
| 2018-09-01 | Sep 2018 | 228.36 | 217.66 |
| 2018-10-01 | Oct 2018 | 232.07 | 212.24 |
| 2018-11-01 | Nov 2018 | 222.22 | 172.29 |
| 2018-12-01 | Dec 2018 | 184.82 | 146.83 |
| 2019-01-01 | Jan 2019 | 166.44 | 142.19 |
| 2019-02-01 | Feb 2019 | 174.87 | 166.52 |
| 2019-03-01 | Mar 2019 | 195.09 | 172.5 |
| 2019-04-01 | Apr 2019 | 207.48 | 191.24 |
| 2019-05-01 | May 2019 | 211.75 | 175.07 |
| 2019-06-01 | Jun 2019 | 199.8 | 173.3 |
| 2019-07-01 | Jul 2019 | 213.04 | 200.02 |
| 2019-08-01 | Aug 2019 | 212.64 | 193.34 |
| 2019-09-01 | Sep 2019 | 223.97 | 205.7 |
| 2019-10-01 | Oct 2019 | 249.05 | 218.96 |
| 2019-11-01 | Nov 2019 | 267.84 | 255.82 |
| 2019-12-01 | Dec 2019 | 293.65 | 259.45 |
| 2020-01-01 | Jan 2020 | 324.34 | 297.43 |
| 2020-02-01 | Feb 2020 | 327.2 | 273.36 |
| 2020-03-01 | Mar 2020 | 302.74 | 224.37 |
| 2020-04-01 | Apr 2020 | 293.8 | 240.91 |
| 2020-05-01 | May 2020 | 319.23 | 289.07 |
| 2020-06-01 | Jun 2020 | 366.53 | 321.85 |
| 2020-07-01 | Jul 2020 | 425.04 | 364.11 |
| 2020-08-01 | Aug 2020 | 506.09 | 129.04 |
| 2020-09-01 | Sep 2020 | 134.18 | 106.84 |
| 2020-10-01 | Oct 2020 | 124.4 | 108.86 |
| 2020-11-01 | Nov 2020 | 120.3 | 108.77 |
| 2020-12-01 | Dec 2020 | 136.69 | 121.78 |
- Rows × columns
- 84 × 4
- Period covered
- to
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
month |
date | 2014-01-01 to 2020-12-01 | |
period_label |
text | 84 distinct values (Apr 2014, Apr 2015, Apr 2016…) | |
highest_close |
number | 98.12 to 647.35 | US dollars |
lowest_close |
number | 90.28 to 585.54 | US dollars |
Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.
the exact SQL behind every number
WITH
on_file AS
(
SELECT
execution_date,
any(split_from) AS from_shares,
any(split_to) AS to_shares
FROM global_markets.stocks_splits
WHERE ticker = 'AAPL'
AND execution_date <= today()
GROUP BY execution_date
),
restated AS
(
SELECT
d.date AS date,
any(toFloat64(d.close)) * arrayProduct(groupArray(if(s.execution_date > d.date, toFloat64(s.to_shares) / toFloat64(s.from_shares), 1.0))) AS raw_close
FROM
(
SELECT date, close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2014-01-01'
AND date < '2021-01-01'
) AS d
CROSS JOIN on_file AS s
GROUP BY d.date
)
SELECT
toString(toStartOfMonth(date)) AS month,
formatDateTime(toStartOfMonth(date), '%b %Y') AS period_label,
round(max(raw_close), 2) AS highest_close,
round(min(raw_close), 2) AS lowest_close
FROM restated
GROUP BY toStartOfMonth(date)
ORDER BY toStartOfMonth(date)
Run your own version of this
The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.