Methodology and limits
What each tool does, where the data comes from, and what the numbers can and cannot tell you. Every result in the product also states its own data window, sample size, and assumptions.
Data sources
- Insider trades: SEC EDGAR Forms 4 and 4/A, ingested from 2021-01-01. A filing with several reporting owners is recorded under the first owner listed. Some filings may be missing or late.
- Congressional trades: STOCK Act disclosures collected by Disclosed Capitol, 17,935 trades disclosed 2012–2026. Amounts are reported as ranges. Only trades that match a listed ticker can be measured.
- Futures: 1-minute bars from Databento for MNQ, MES, MYM, NQ, ES, and YM, stitched into continuous series. Micro contracts start in 2019; full-size in 2010.
- Stock prices for follow-up returns: daily prices from EODHD, compared with the S&P 500 (SPY).
Dates and timing
Disclosure research is measured from the first trading day after a filing became public, not from the trade date — nobody else could have acted on the trade before then. Insiders file within two business days; members of Congress may file up to 45 days after a trade, and the gap is shown in the tables.
Futures times are New York time. Regular trading hours are 9:30–16:00 ET; the overnight session is treated separately. Backtest entries happen on the bar after the signal bar, never the same bar. If a stop and a target are both touched in one bar, the stop is assumed to hit first, and a stop that gaps fills at the gap price.
Futures roll and adjusted prices
Index futuresA futures contract expires, so a long history is stitched from several contracts. The series here is back-adjusted: older prices are shifted so there is no artificial jump at each roll. That keeps point moves and strategy results sensible, but it means old price levels differ from what actually traded, and long-horizon percent changes are approximate. Questions that hinge on absolute price levels, or on the exact days around a roll, should be read with that in mind.
- MNQ: 2019-05-06 to 2026-09-06
- MES: 2019-05-06 to 2026-09-07
- MYM: 2019-05-06 to 2026-09-07
- NQ: 2010-06-06 to 2026-09-08
- ES: 2010-06-06 to 2026-09-08
- YM: 2010-06-06 to 2026-09-08
Historical questions
Index futuresYou ask in plain English and confirm a restated version of the question and its credit cost before anything runs. Code is then written for your question, run in a sandbox with no network access against the real bars, and reviewed by a second pass. This happens up to 25 times independently; you see how many attempts completed, how many agreed on what was measured, and the figures reported are the median of the agreeing group.
What that does and does not prove: agreement between attempts lowers the chance of a one-off coding slip. It does not prove the code measures what you meant. Read the definitions and the code, which are always shown. If too few observations match (under 15), no number is reported and you are not charged.
1bars_et = to_et(bars)2rth = rth_session(bars_et)3rth = rth.copy()4rth['date'] = trading_date(rth)56daily = rth.groupby('date').agg(open=('open','first'), high=('high','max'), low=('low','min'), close=('close','last'))7daily = daily.sort_index()89prev_close = daily['close'].shift(1)10daily['prev_close'] = prev_close1112# gap up: today's open above prior day's close13gap_up = daily[daily['open'] > daily['prev_close']].copy()1415# filled same day if the low of the day trades back down to/through prev_close16gap_up['filled'] = gap_up['low'] <= gap_up['prev_close']1718n = len(gap_up)19if n > 0:20fill_rate = gap_up['filled'].mean()21avg_gap_size = (gap_up['open'] - gap_up['prev_close']).mean()22else:23fill_rate = None24avg_gap_size = None2526result = {27'sample_size': int(n),28'fill_rate': float(fill_rate) if fill_rate is not None else None,29'num_filled': int(gap_up['filled'].sum()) if n > 0 else 0,30'num_not_filled': int(n - gap_up['filled'].sum()) if n > 0 else 0,31'avg_gap_size_points': float(avg_gap_size) if avg_gap_size is not None else None,32}
One of the 25 independently generated attempts for “How often does a gap up on MNQ get filled the same day” — real code that actually ran, not a mockup. Every answer's own code is shown the same way, in an expandable panel next to the result.
Strategy backtests
Index futuresYou pick a rule template, set entries, stops, targets, and size, and choose the contracts, date range, bar size, commission, and slippage. Results show net profit after costs, win rate, expectancy, profit factor, maximum drawdown, the trade log, and a buy-and-hold figure for scale (not a like-for-like comparison). Sweeps and walk-forward runs test how results hold up across parameter choices and later data.
Not modeled: partial fills, queue position, market impact, taxes, financing, and exchange-specific rules beyond the settings you choose. Backtests are hypothetical and rules are fixed in advance; adjusting them after seeing results overfits to the past.
Stocks and ETFs: not supported by the backtester yet. Stock research today is disclosure-based (insiders and Congress).
Insider and congressional research
StocksOpen-market purchases and sales are kept separate from grants, option exercises, gifts, and tax withholding. Follow-up returns compare each stock with the S&P 500 from the first trading day after the filing.
Sample sizes: several purchases of the same stock in one month count as one observation, because they are not independent evidence. Each figure shows that count. With fewer than about 15 observations, treat a result as a rough estimate at best; with more, it is still an average, not a prediction.
Uncertainty: averages come with a 95% interval. Excess returns are differences in percentage points, not percent gains. When the interval includes zero, the data cannot tell the result apart from no difference, and the copy says so.
Credits
Analyses cost credits, quoted before you confirm; failed runs are refunded. See pricing for the current costs.
This tool provides historical statistical information only. It is not investment advice, and past performance does not indicate future results. Trading involves risk of loss.
See it applied: real examples.