ArdenAlgo · Blog · The only peer-reviewed paper that says FVGs work: we read it, and ran its code
Research

The only peer-reviewed paper that says FVGs work: we read it, and ran its code

22 Aug 2026 · 7 min read · ArdenAlgo Research · claims about the engine refer to mechanization v1 (frozen 16 Jul 2026) — changes land in the changelog

If you search for evidence that fair value gaps "work", you land on the same document: Quantifying Fair Value Gaps: A Novel Metric for Price Reaction Prediction in Financial Markets (Kondapally, 2026), published in the World Journal of Applied Mathematics and Statistics 2(1) and also posted to SSRN. It reports 32,202 FVG events across forex, indices, commodities and crypto, a 78.3% "success rate" for its low-degree gaps, a backtest with a 2.17 Sharpe ratio and a 72.4% win rate, and a public GitHub repository "for full python implementation".

We run a public, append-only ledger of mechanically detected ICT/SMC setups — including every losing one — so we have a direct interest in whether this evidence holds. We read the paper end to end and ran the code it points to. This is what we found, with every step listed at the bottom so you can repeat it.

What the paper claims about its data

Page 3, "Data Sources and Quality": "Primary Source: Interactive Brokers API (tick-by-tick data)", "Data Frequency: 1-second OHLC for degree calculation, 1-minute for FVG identification", covering January 2023 to June 2025. The paper's central metric — the "degree" of a gap — is the slope of a regression line fitted to 1-second prices during the three minutes the gap forms. Everything downstream (the 78.3%, the backtest, the Sharpe ratio) depends on those 1-second prices being real.

What the code it cites actually does

The paper gives one code reference, github.com/aryan1ko/fvg-degree-study, which now redirects to a repository named Time-series-modeling containing a README and a single file, fvg.py (1,445 lines; created 18 July 2025, last changed 26 September 2025). We read it in full.

There is no Interactive Brokers client in the file. Market data enters through one function that downloads one-minute candles from Yahoo Finance (yfinance, default period='5d', interval='1m'). The 1-second series the degree metric needs is then produced by a function whose own docstring reads:

Generate simulated 1-second tick data from 1-minute OHLC data
This creates realistic intrabar price movements

The function walks each one-minute candle along a fixed path — open toward high for the first 30% of the minute, high toward low for the next 40%, low toward close for the last 30% — and adds np.random.normal noise at each second. The returned dictionary labels the result, in its own words, tick_1sec (simulated).

A second function, generate_sample_data(), builds an entirely synthetic market from np.random.seed(42); its docstring says it is not called by default, and we confirmed it is not. In the Yahoo-Finance entry point, the call that would actually run the FVG analysis over the loaded data is commented out.

We want to be precise about what this does and does not show. It shows that the only implementation the paper makes public cannot have produced tick-level results from Interactive Brokers data, because it contains no such data path and synthesises the intrabar prices the headline metric is computed on. It does not show what the author ran privately. But a reader who wants to reproduce the 78.3% has nothing to reproduce it with, and the published code's degree values are measurements of a simulated path, not of a market.

Other things a careful reader would notice

Why this matters beyond one paper

This article is cited, in forum posts and in product pages, as the academic evidence for fair value gaps. If your confidence in FVGs rests on "there's a peer-reviewed study with 32,000 samples", you now know what that study's public code measures.

Our own position has not moved: we do not know whether FVG entries beat random entries after costs. We have a pre-registered test running for exactly that question, with its design frozen before any result, and we will publish the outcome whichever way it goes. Until then, the honest answer to "do fair value gaps work?" is the same one it was before this paper: not established.

Verification log

Everything above was checked on 22 August 2026:

  1. Paper PDFmkscienceset.com/articles_file/862-_article1772532938.pdf, 8 pages, read in full. Quotes: p.1 (abstract, keywords, dates), p.3 ("Data Sources and Quality", code URL), p.4 (Table 1, 32,202; 78.3%), p.5 (backtest: 147.3%, Sharpe 2.17, win rate 72.4%), p.6 (cost section, 28.3% net), p.8 (references, CC-BY notice).
  2. Repositorygithub.com/aryan1ko/fvg-degree-study → redirects to aryan1ko/Time-series-modeling; files: README.md, fvg.py. Commit history: 18 Jul 2025 (initial, "Create fvg.py"), README edits to 26 Sep 2025. fvg.py read in full; quoted lines: import yfinance as yf (l.9), load_market_data (returns tick_1sec (simulated)), generate_tick_data_from_ohlc (l.951–1007), generate_sample_data (l.1136–1214, np.random.seed(42)), analysis call commented out (l.1122–1127).
  3. Publishermkscienceset.com home and journal page: no fee stated on either page; "double-blind review" claimed without duration; indexing shown as unlabeled logos. ResearchGate thread on the publisher: flags as summarised above.
  4. SSRN listing (abstract id 6032676) exists; the page itself returned 403 to our fetch, so we cite the PDF, not SSRN, for all quotes.

Corrections welcome at hello@ardenalgo.com. If the author publishes the Interactive Brokers data pipeline, we will run it and update this page with the result, whatever it is.

Three questions we expect

Is this an attack on the author? No. It is a check of a claim that many people repeat. The author is welcome to publish the data path; we will update this page.

Do you think FVGs don't work? We think nobody has shown it either way after costs. We are running a pre-registered test and will publish it.

Why should we trust your numbers instead? You shouldn't trust them; you should check them. Our ledger is public and append-only, losses included.

Reading this deep? That's exactly who the waitlist is for.

Joining locks the launch rate before the evaluation verdict is out — and gets you two mails, ever: launch + the verdict, whichever way it goes.

Keep reading