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.
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-Close/Sell-Open
Hold only through the overnight gap, and sell the moment the market reopens. Never held during the trading day.
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.)
| Metric | Buy-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 volatility | 0.79% | 1.26% |
| Annualized volatility | 12.5% | 19.9% |
| Share of up days | 70.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.
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 days | 70.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.


댓글 쓰기