Translate

Buy at the Open, Sell at the Close vs. Buy at the Close, Sell at the Open: A 6-Year Korean Stock Backtest

Korean equity data study · Backtest across all KOSPI/KOSDAQ stocks

Buy-Open/Sell-Close vs Buy-Close/Sell-Open,
tested against six years of data

What if you didn't pick any stocks, and just spread your money equally across every KOSPI/KOSDAQ stock, every day? We turned two trading rules into index-like return series using six years of data and compared them.

Period 2020.06.12 – 2026.07.16 (1,495 trading days) Fees & taxes assumed at 0% Filters: market cap ≥ ₩100B, 5-day avg. trading value ≥ ₩500M

🌐 한국어로 읽기 (Read in Korean)

Same period, same stocks, same capital — the only thing that changed was when you bought and sold. Six years later, the two results went in opposite directions. See exactly how different, below.

Does it matter whether you buy and sell in the morning or overnight? We didn't pick any individual stocks — we assumed you spread your money equally across every KOSPI/KOSDAQ stock, every day, and calculated what happened.

  • Buy-Open/Sell-Close — buy at that day's opening price, sell at the same day's closing price, every day.
  • Buy-Close/Sell-Open — buy at that day's closing price, sell at the next day's opening price, every day.

Think of it as putting equal money into every stock that met the day's conditions. This isn't about picking good stocks — it's about looking at a pattern across the whole market. And we assumed fees and taxes were 0% — meaning we compared pure price returns with no trading costs. How much that assumption matters is shown later in this post, once we add real fees back in.

What we compared, and how

Buy-Open/Sell-Close

Hold only while the market is open, and close the position before the bell. Never held overnight.

Buy at today's openSell at today's close

Buy-Close/Sell-Open

Hold only through the overnight gap, and sell the moment the market reopens. Never held during the trading day.

Buy at yesterday's closeSell at today's open

Which stocks qualified

These conditions were re-checked every day, using only information available through the previous day — nothing was calculated with knowledge of the future.

  • Market cap (previous close × shares outstanding) of at least ₩100 billion
  • Average trading value over the prior 5 trading days of at least ₩500 million
  • Any day where fewer than 50 stocks qualified was excluded from the results (mostly early, thin-sample periods)

Each stock used only its most recent 1,500 trading days. Every calculation ran on pre-collected historical KOSPI/KOSDAQ data — no live prices or orders were used.

The result: the two indexes went opposite ways over six years

This is what happened using data from June 2020 through July 2026, averaging 1,179 qualifying stocks per day. Over the same stretch, KOSPI rose about +230% and KOSDAQ about +10%. Buying at the close and selling at the next open beat both benchmarks by a wide margin, while buying at the open and selling at the same day's close kept losing ground regardless of what the broader market did. (The full chart, including the fee-adjusted version, comes later in this post.)

MetricBuy-Close/Sell-Open
(buy at close → sell at next open)
Buy-Open/Sell-Close
(buy at open → sell at same-day close)
Total return+940.8%−88.2%
Annualized return+46.9%−29.6%
Max drawdown−10.9%−88.2%
Daily volatility0.79%1.26%
Annualized volatility12.5%19.9%
Share of up days70.3%48.8%

* Daily volatility = standard deviation of daily average returns. Share of up days = percentage of days where the average return was positive.

Why "buy at the close, sell at the open" won

This isn't unique to the Korean market. Markets like the US have long reported the same pattern — returns from market close to the next open consistently beating intraday returns. Here's the most concrete clue this dataset (1,179 stocks a day, on average) offers.

Prices often spike right at the open, then give a lot of that spike back during the day. Look at how much prices swing during the day versus overnight: the intraday swing (Buy-Open/Sell-Close) is much bigger than the overnight swing (Buy-Close/Sell-Open) — 1.26% vs. 0.79%. Yet intraday still had a lower share of up days (48.8% vs. 70.3%). Put those two numbers together and a picture emerges — prices tend to run up right when the market opens, then cool off and give some of that back as the day goes on.

  • Buying at the open and selling at the close (intraday) buys into an already-inflated price and sells after it deflates — a losing setup.
  • Buying at the close and selling at the next open (overnight) buys at a price that's already settled down, and sells right as it spikes again the next morning — a winning setup.
This isn't proof of cause and effect — it's the most plausible story we can piece together from two numbers (volatility and the share of up days). Why prices tend to run hot right at the open isn't something this data alone can tell us. Treat it as a reference point, not a conclusion.

But add just a 0.35% fee, and everything flips

So far, we assumed fees and taxes were 0%. What actually happens if buying costs 0.35% (the standard fee assumption used for this analysis)? We reran the index for Buy-Close/Sell-Open with that fee included.

Line chart comparing cumulative returns of Buy-Open/Sell-Close (0% fee), Buy-Close/Sell-Open (0% fee), Buy-Close/Sell-Open (0.35% fee), KOSPI, and KOSDAQ - at 0% fee Buy-Close/Sell-Open rose about 940% over six years, but adding just a 0.35% buy-side fee flips it to about -94%
Adding a version of Buy-Close/Sell-Open with a 0.35% buy-side fee (light dashed line) to the comparison

The light red dashed line is the version with a 0.35% fee. It starts splitting off from the solid red line (0% fee) in early 2021 and keeps sinking. Six years later it finishes even lower than Buy-Open/Sell-Close (blue, 0% fee). A +940.8% return turns into −94.4%. Why? Because this strategy trades every single day. 0.35% sounds small, but multiply it 1,495 times and it becomes enormous.

Metric Buy-Close/Sell-Open
(0% fee)
Buy-Close/Sell-Open
(0.35% fee)
Total return+940.8%−94.4%
Annualized return+46.9%−37.6%
Max drawdown−10.9%−95.0%
Share of up days70.3%40.5%

* The 0.35% fee is assumed to apply only on the buy side (no fee on selling). Compounded daily over 1,495 trading days, this small cost is large enough to flip the entire result.

The share of up days also dropped sharply, from 70.3% to 40.5%. Days that originally returned somewhere between 0% and 0.35% flip to negative the moment the fee is subtracted — meaning a large number of days simply didn't clear the fee in the first place.

Why you shouldn't take these numbers at face value

As shown above, the fee assumption alone completely changes the outcome. A few more limits are worth knowing before treating any of this as real.

  • We didn't account for actual fill prices. The open/close prices used here are theoretical — there's no guarantee every trade would actually fill at those exact prices.
  • We assumed unlimited capital. Putting money into every single qualifying stock on the same day, simultaneously, isn't possible in the real world. In practice you'd have to hold a much smaller, limited set of stocks.
  • We may have looked only at stocks that survived. Any stock that got delisted along the way may have dropped out of the dataset, which could make the results look better than reality.

So how should this actually be used?

Looking at the numbers alone, Buy-Close/Sell-Open looks overwhelmingly good. But this isn't a strategy you can run as-is in the real world. It requires rotating through hundreds to thousands of stocks every single day, and as shown above, adding just a 0.35% fee flips +940.8% into −94.4%. In other words, buying every stock at the close and selling it at the next open, as a new trading strategy, simply doesn't hold up.

So where is this data actually useful? Not for starting new trades — for deciding when to sell stocks you already hold. If you already have to sell a position anyway, the fee is a one-time cost, not something you pay every day. When you're deciding "should I sell at today's close, or hold one more day and sell at tomorrow's open," this result — that the period after the close tends to outperform the trading day — is worth keeping in mind as a reference.


Methodology, in brief

For every stock, we calculated two daily returns: Buy-Open/Sell-Close as (close ÷ open − 1), and Buy-Close/Sell-Open as (today's open ÷ yesterday's close − 1). Each day, we determined which stocks qualified using the rules above, then averaged the qualifying stocks' returns equally by date. We compounded that daily average day by day to build the index, and plotted it against KOSPI and KOSDAQ normalized the same way. The 0.35%-fee version simply subtracts an extra 0.35% from that daily average, every day. All of this ran entirely on pre-collected historical KOSPI/KOSDAQ data — no live API calls were made.

This post is a data analysis for informational purposes only and is not investment advice. It's built on theoretical assumptions (including a 0% fee baseline) using historical data, and doesn't guarantee real-world returns. Investment decisions, and their consequences, are entirely your own.

Data period: 2020-06-12 to 2026-07-16 · Universe: all KOSPI/KOSDAQ stocks (liquidity filters applied) · Compiled: 2026-07-22

댓글 쓰기