Does foreign and institutional buying
move Korean stocks?
Korea publishes something most markets do not: a daily, per-stock breakdown of who bought and who sold — foreigners, institutions, or retail. Every Korean broker app shows it. Every market report quotes it. I checked what it is actually worth, using six years of it.
01What this data actually is
If you trade US or European equities, there is no daily equivalent of this. You might see 13F filings quarterly, or short interest twice a month. Korea publishes investor-category flow for every listed stock, every single day.
- Foreigners — trades routed through accounts registered as foreign
- Institutions — domestic funds, pensions, insurers, securities firms
- Retail — individuals, which is simply what is left over
Each is reported as net buying in number of shares, per stock, per day. When foreigners and institutions both buy the same stock on the same day, Korean media call it ssang-kkeul-i (쌍끌이) — "pulled from both sides" — and treat it as a strong signal.
Two things about the Korean market matter before going further.
KOSPI is the main board — large caps like Samsung Electronics and SK Hynix. KOSDAQ is the secondary board, closer to the Nasdaq in spirit: smaller, more technology and biotech, considerably more volatile. The regular session runs 09:00 to 15:30 Korea Standard Time (UTC+9), with no lunch break.
And the detail that shapes this entire article: the confirmed investor-flow numbers are published after the close. You cannot see the final figure during the session. Whatever you do with it, you are doing it the next day at the earliest.
02The rule I had to use
There is a common mistake when testing this data: calculating "what if I had bought at the close on the day foreigners bought."
You could not have. The number did not exist yet at 15:30. Including it means using information from the future, and the result comes out better than anything achievable in real life.
- The market closes and the flow figures are published
- If the signal fires, I buy at the next morning's open
- I sell at the open after a fixed holding period
Nothing here requires information I could not have had at the time.
I also need something to compare against. "A 48% win rate" tells you nothing on its own. Throughout this article the benchmark is buying a random stock and holding it for the same period.
03Just following the flow
The simplest version. Foreigners were net buyers today, so I buy tomorrow's open and hold for a month.
| Win rate | Average return | |
|---|---|---|
| Following foreign buying | 48.30% | +1.83% |
| Buying at random | 47.85% | +1.76% |
| Difference | +0.45%p | +0.08%p |
It did beat random. By 0.08%.
Korean brokerage commission plus the securities transaction tax comes to roughly 0.2% for a round trip. You would be paying 0.2% to earn 0.08%. Worse than doing nothing.
Requiring three or five consecutive days of net buying did not change this. Holding periods behaved differently, though — I come back to that in section 09.
04What about really heavy buying?
Not a little buying — a lot. Only days where foreign net buying exceeded 5% of that day's entire volume.
Buying at random returned +5.70% over the same periods, so the signal was 1.43 percentage points worse.
Read literally: the harder foreigners buy, the worse it goes. I nearly stopped writing here.
But it was too neatly backwards to accept. So instead of testing the signal again, I looked at what kind of day it fires on.
05The days it fires on are bad days
The answer was immediate. To absorb 5% of a day's volume, that day's volume has to be enormous. This signal only appears on days when trading explodes.
And in Korea, the day after a volume explosion is a poor day to buy — signal or no signal. Here is what happens if you take every day where turnover exceeded KRW 50 billion (about USD 36 million) and simply buy the next open, with no other condition at all.
| Holding period | Win rate | Average return |
|---|---|---|
| 1 week | 43.08% | −0.31% |
| 1 month | 40.87% | −0.56% |
| 3 months | 39.64% | +0.12% |
These days are only 4% of all trading days, and they are days you should not buy into.
So the −1.43%p was not measuring the signal. It was measuring the kind of day the signal happens to live on. I had compared a signal that only fires on bad days against ordinary days in general, and the signal took the blame.
The fix is to compare it against other high-volume days only.
Compared only against other high-volume days, −1.43%p became +5.68%p. This is the first moment heavy foreign buying looked genuinely good.
06But it only fires on 109 stocks
A good result deserves more suspicion than a bad one. So I counted how many different stocks this signal ever appears on.
- Fires on only 109 stocks out of roughly 2,000
- The top 10 stocks account for half of all occurrences
- The single most frequent is Samsung Biologics, at 376 occurrences
Then Samsung SDI, LG Chem, and LG Energy Solution.
This was not a signal detecting events. It was a list of the large caps foreign investors trade heavily anyway. Those names did well over this particular six-year window, and the "signal" inherited their performance.
There is a clean way to check. Compare within each stock. Measure Samsung Biologics' signal days against Samsung Biologics' ordinary days. Do that and the benefit of having picked good stocks disappears, leaving only what the signal itself is worth.
| Compared against | Extra return |
|---|---|
| All days | −1.43%p |
| Other high-volume days | +5.68%p |
| The same stock's ordinary days | −0.27%p |
Gone again. Within the same stock, days of heavy foreign buying did slightly worse than that stock's ordinary days.
07Measuring against the stock's own normal
There was a flaw worth fixing. "5% of volume" is an absolute yardstick. A stock where foreigners routinely handle 20% of daily volume and a stock they rarely touch were being held to the same bar — so only the first kind ever qualified.
So I changed the definition to be relative to each stock's own normal.
A stock where foreigners usually trade −200,000, +100,000, +200,000 shares
suddenly sees +1,500,000 shares bought in a day.
"Heavy" is judged against that specific stock's usual scale, not a fixed threshold.
This time it looked different.
| 5% of volume (absolute) | Versus its own normal (relative) | |
|---|---|---|
| Stocks it fires on | 109 | 2,100 |
| Share from top 10 stocks | 50% | 1.6% |
| Within the same stock (3 months) | −0.27%p | +2.18%p |
Spread across 2,100 stocks — not the product of a handful of names. And it survived the within-stock comparison, across roughly 20,000 trades, which is hard to dismiss as luck.
This was the second moment it looked real.
08Why the second one collapsed too
Comparing "within the same stock" requires knowing what kind of stock it is. But the classification I used was computed from the whole 2020–2026 window. Buying in 2022 using a number derived partly from 2025 data. Not something you could have done at the time.
So I rebuilt it using only the twelve months before each purchase: how often that stock had shown a buying spike in the prior year, and nothing after. That is genuinely knowable at the moment of buying.
| Spike frequency | Extra return |
|---|---|
| Almost never | −1.32%p |
| 1–2% | −0.11%p |
| 2–4% | +1.24%p |
| 4–8% | +0.46%p |
| Very often | −0.85%p |
Some positive, some negative, no pattern. And with samples this size, chance alone produces swings of roughly ±1.5%p. Every number above sits inside that. Which means none of them mean anything.
The best group fell from +2.18%p to +1.24%p and landed inside the noise.
The one signal that looked genuine evaporated the moment I restricted it to information available in real time.
09What if you only hold for a day?
Everything so far assumed holding for a month or a quarter. But people who trade on this data do not hold that long. They are usually out within a day or two.
So I recounted everything with a one-day hold, still comparing within each stock.
| Signal | Trades | Extra return | Verdict |
|---|---|---|---|
| Foreign net buying | 306,483 | −0.002% | Indistinguishable |
| Institutional net buying | 289,857 | +0.011% | Indistinguishable |
| Both buying (ssang-kkeul-i) | 139,041 | −0.024% | Indistinguishable |
| Spike versus own normal | 19,783 | −0.106% | Not chance |
| Both spiking together | 4,226 | −0.214% | Not chance |
The first three rows are zero. Take them or leave them.
The last two are not. They are reliably negative — with 19,783 and 4,226 trades, a deviation this consistent is very unlikely to be noise. Over three months the spike signal was "impossible to tell"; over one day it is "present, and pointing the wrong way."
Held long, the signal was nothing. Held short, it was a loss.
10Ssang-kkeul-i, and what the data cannot tell you
The both-sides-buying signal was never at the top of any test. Its one-month win rate was 47.24% against 47.85% for buying at random, and tightening it to three consecutive days pushed it down to 45.97%. Separating the two categories worked better than combining them.
Now the limits.
- The market closes
- The confirmed flow figures are published
- You buy at the next morning's open
That is the rule from section 02, and it is the only entry method measured here.
The same data can be used in other ways — when and how you enter changes the trade entirely. I tested one of them. The others are not disproved here; they are simply not covered.
Plenty is outside this dataset altogether: the order book, trade intensity, news and disclosures, and the discretionary judgement of someone who knows why a particular stock is different today.
Two more caveats. Delisted companies are absent — the dataset is built from currently listed stocks, so firms that disappeared are missing. This affects both sides of every comparison equally, so the comparisons hold, but the absolute numbers are flattered. And the window includes the post-COVID recovery.
11So what is this data good for?
- Buy the next open after net buying → cannot cover fees
- Only days above 5% of volume → worse still
- Compared against other high-volume days → looked good (illusion 1)
- Compared within the same stock → gone
- Measured against the stock's own normal → looked good again (illusion 2)
- Restricted to real-time information → inside the noise
- Held for a single day → not noise, but a loss
Reading the published flow figures and buying the next morning did not make money. Not for both-sides buying, not for heavy buying, not for sudden spikes. Held long it was nothing; held short it lost.
The data does explain why. Heavy foreign buying marks a day when something has already happened.
- It only occurs when volume explodes — the top 4% of trading days
- It is a day the stock rose, not a day it fell
- Those stocks were already up an average of +28.8% over the prior 20 sessions
Whatever made the stock worth buying is already in the price by the time the figure is published.
Korea's investor-flow data is an excellent record of what happened today. It is not an instruction for tomorrow.
That is still worth something. If you follow the Korean market from abroad, this data tells you who was on which side of a move, in a level of detail almost no other market publishes. Just do not expect the stocks at the top of the net-buying table to keep rising — by construction they are the ones where volume exploded and the price already ran.
One footnote: there were two moments in this analysis where I thought I had found something, and both were illusions produced by what I was comparing against. I wrote about why good-looking backtest numbers are so often wrong in Overfitting — A Good Backtest Number Is Not a Good Strategy.


댓글 쓰기