With over a million people in the employment-based green card backlog, the monthly Visa Bulletin matters. I built this site to make waiting more transparent — and predictions more honest. Below is a technical description of how the prediction model works, what was tested and discarded, and where it still falls short.
1. Why Linear Extrapolation Fails
The instinctive approach is to extrapolate from recent pace. If EB-2 India advanced 30 days/month over the last year, project forward at that rate. The chart below shows why this breaks down on real data:
Red shaded bands mark October (fiscal year resets). Each dashed line is a 6-month rolling pace extrapolation launched from a different point in history: orange from Jun 2019 (predicts endless flatness — misses the 2021 surge), red from Sep 2021 (predicts rapid clearing — misses the retrogression that followed), purple from Mar 2022 (predicts continued advance — misses the major retrogression two months later). All three are badly wrong.
Three structural features make Visa Bulletin cutoffs resistant to simple extrapolation:
- October resets: The U.S. fiscal year starts October 1. Unused visa numbers expire September 30. USCIS redistributes the new allocation in October, often causing a discontinuous jump or retrogression — not a trend continuation.
- Retrogression events: When USCIS approves too many cases in a prior month, the next bulletin must retrogress to protect the annual cap. A trend extrapolation predicts advance; the actual bulletin can move backward by months.
- End-of-fiscal-year acceleration: July–September often see accelerated advancement as USCIS processes remaining visa numbers. This seasonal surge is predictable, but a rolling average treats it as noise.
2. What We Optimize For
This model is not optimized for a single MAE number. The actual optimization target is a weighted composite metric that balances several concerns:
| Component | Raw weight | Rationale |
|---|---|---|
| 1-month MAE | 0.38 | Will the cutoff move next month? |
| 6-month MAE | 0.40 | Where will the cutoff be mid-year? |
| 3-month MAE | 0.104 | Near-term trajectory |
| 12-month MAE | 0.255 | Annual planning horizon |
Raw weights sum to 1.139; the composite score is their weighted average (each weight divided by 1.139), so the effective normalized weights are approximately 33%, 35%, 9%, 22%.
Additional adjustments:
- Series weighting: India EB-2 and EB-3 are weighted 1.5× (largest user base); China EB-2 at 1.2×; EB-1 series at 0.8× (smaller backlog, lower user demand).
- Asymmetric penalty: Optimistic predictions — telling someone their date is closer than it really is — receive a 1.3× penalty. The model is calibrated to err on the side of caution.
- Direction accuracy: An 8% weight on whether the model correctly predicts the direction of movement (advance vs. retrogression), separate from magnitude.
- Movement-magnitude weighting: Months with large actual moves count more. We care about catching the big advances, not just predicting "no change."
What MAE Means in Cutoff-Date Space
MAE is measured in days of error between the predicted cutoff date and the actual cutoff date. This is measured in priority date space, not in calendar time.
The natural comparison baseline is 6m-lagged persistence: whatever the cutoff was 6 months ago is the "no change" forecast. During periods when cutoffs advance rapidly, that 6-month lag is large — a model that tracks the trend beats persistence substantially. The chart below shows China EB-2 from 2018. During the 2019–2022 advancing window the model prediction (green) stays much closer to the actual (blue) than the naive persistence baseline (grey). In the stall period after 2022 the three lines converge — the model correctly sees little movement.
China EB-2 filing cutoff, 2018–present. Green dashed: this model's prediction made 6 months before the bulletin. Grey dashed: naive "no-change" persistence from 6 months ago. The gap between grey and actual shows the missed advance that persistence cannot predict; the model closes much of that gap. Lines converge after 2022 when the series stalls — correct behaviour, not a flaw.
3. The Model Architecture
Per-Series, Per-Horizon Dispatch
The model routes each series to the sub-model that performs best for that series at that time horizon. The dispatch was determined by walk-forward backtesting across all combinations:
| Series | 1m & 3m | 6m | 12m |
|---|---|---|---|
| China EB-1 | Regime-Switched | Regime-Switched | GBM Gated |
| China EB-2 | RS (1m) / Expert Ensemble (3m) | Pace | GBM Gated |
| China EB-3 | RS (1m) / Expert Ensemble (3m) | GBM Gated | GBM Gated |
| India EB-1 | Regime-Switched | GBM Gated | GBM Gated |
| India EB-2 | RS (1m) / Expert Ensemble (3m) | Pace | GBM Gated |
| India EB-3 | RS (1m) / Expert Ensemble (3m) | Pace | Pace |
Expert Ensemble (1m–3m, EB-2/3)
For short-horizon EB-2/3 predictions, the model uses a Hedge aggregator: a collection of individual forecasting "experts" whose weights are updated online based on recent accuracy. Experts that have been accurate recently receive more weight.
- Queue simulation: Demand-based model using I-140 petition counts by fiscal year and category.
- Seasonal median: Historical median movement for each calendar month.
- 12-month linear trend: Rolling average that captures sustained advancing periods.
- 3-month momentum: Short-window signal for recent acceleration or deceleration.
- Fiscal year cycle: Explicit model of the October reset behavior.
- Persistence: No-change baseline, always included as a conservative anchor.
The seasonal rhythm chart shows why explicit month-by-month modeling matters:
October (red) marks the fiscal year reset. July–September (green) show the end-of-year acceleration. A model that ignores these structural patterns will systematically mispredict both transitions.
GBM Gated (6m and 12m for most series)
For longer horizons on EB-1 and most China series, the model uses a gradient-boosted machine learning model (GBM) with a gating mechanism trained on 10+ years of bulletin history. The GBM takes 27 features as input:
- Current cutoff date and velocity (recent pace)
- Monthly movement history (1m through 12m, average)
- Fiscal year phase (month of year, months into FY, FY boundary proximity)
- I-140 backlog density near the cutoff (I-485 queue)
- EB-1 surplus indicator (unused EB-1 visa numbers that flow to EB-2 under INA §202)
- ROW (rest-of-world) issuance patterns
- Regime classification (advancing / stalled / retrogressing / recovering / volatile)
The GBM was tuned with Optuna across 50+ trials, and is validated on a strict walk-forward backtest: the model is retrained on all data available before each evaluation point, never using future data.
Regime-Switched (China EB-1 1–11m, India EB-1 1–5m)
EB-1 series are structurally different: they clear rapidly near fiscal year end then retrogress, driven by INA §202 per-country caps and annual visa allocation rather than queue depth. For these series, a regime-aware persistence model that tracks the current monthly velocity outperforms both the expert ensemble and GBM.
Pace (6m for India EB-2/3 and China EB-2; 12m for India EB-3)
For India EB-2, EB-3, and China EB-2 at 6 months, and India EB-3 at 12 months, the Oppenheim Constant Pace extrapolation (12-month rolling average velocity) outperforms the GBM. These series are currently in deep stall — the pace model correctly predicts minimal movement.
4. Benchmarked Against Community Approaches
The most common community approaches to predicting visa bulletin movements, measured on the same walk-forward backtest (2016–2026, 6 series). All horizons (1m, 3m, 6m, 12m) evaluated directly. “This model” is the production dispatch described in Section 3.
The “Composite Score” column is a normalized weighted average of per-horizon MAE: (0.38 × MAE 1m + 0.104 × MAE 3m + 0.40 × MAE 6m + 0.255 × MAE 12m) ÷ 1.139 (days of priority-date space). Lower is better. All values are directly backtested on a walk-forward evaluation (2016–2026, 6 series). “Dir%” is direction accuracy at 6-month horizon. This model wins on both composite (164d vs next-best Pace 180d) and 6m MAE (198d vs 213d), but remains close to persistence at 1m where no EB-2/3 model meaningfully beats no-change.”
| Method | Composite | vs Baseline | MAE 6m | Dir% |
|---|---|---|---|---|
| Persistence (no change) [1] | 195d | baseline | 229d | 8% |
| Oppenheim Constant Pace [2] | 180d | −15d | 213d | 38% |
| Demand-Supply Queue [3] | 193d | −2d | 227d | 69% |
| 12-Month Dashboard Trend [4] | 231d | +36d | 261d | 54% |
| Seasonal Pattern [5] | 199d | +4d | 235d | 27% |
| 3-Month Momentum [6] | 298d | +103d | 331d | 46% |
| Polynomial Trend [7] | 469d | +274d | 479d | 55% |
| This model [8] | 164d | −31d | 198d | 46% |
- Persistence (no change): Control — predict last month's cutoff ↩
- Oppenheim Constant Pace: "Chatting with Charlie" (Charlie Oppenheim, former DOS Chief of Visa Control); 12-month rolling average pace. Written methodology guide. ↩
- Demand-Supply Queue: Queue model; high direction accuracy, worse point estimate. AgentCalc-style methodology ↩
- 12-Month Dashboard Trend: USCIS Visa Availability Dashboard; 12-month moving average; commonly cited by attorneys ↩
- Seasonal Pattern: Historical median by calendar month; discussed on r/USCIS_EB3 forums ↩
- 3-Month Momentum: Recent pace extrapolated; fails on regime changes. Common in r/USCIS quick estimates ↩
- Polynomial Trend: Degree-2 regression on 5 years; badly extrapolates. visabulletintracker.com-style ↩
- This model: Per-series dispatch: RS for China EB-1 (1–11m) and India EB-1 (1–5m); GBM Gated for India EB-1/China EB-3 at 6m and 5 series at 12m; Pace for remaining 6m/12m series; expert ensemble otherwise. Beats Persistence at 6m on all 6 series (198d vs 229d avg). ↩
“Dir%” is conditional direction accuracy — how often the model correctly predicts whether the cutoff will advance or retrogress, given that it actually moves (months where persistence is trivially correct are excluded). The Demand-Supply model achieves the highest Dir% (67%) but worse point error; the Oppenheim Pace model is the strongest single-method community baseline.
Per-series breakdown (h=6): sub-model in parentheses
| Series | Persistence | Pace | Our Model | Winner |
|---|---|---|---|---|
| China EB-1 | 175d | 168d | 158d (RS) | Our model |
| China EB-2 | 196d | 157d | 157d (Pace) | Tied |
| China EB-3 | 217d | 194d | 157d (GBM) | Our model |
| India EB-1 | 292d | 281d | 234d (GBM) | Our model |
| India EB-2 | 225d | 215d | 215d (Pace) | Tied |
| India EB-3 | 269d | 266d | 266d (Pace) | Tied |
Feature Importance: GBM Ablation Study
To measure which inputs actually drive the GBM's predictions, we ran a feature-group ablation study: for each group, we zeroed out all features in that group at inference time and measured the change in 6-month MAE (averaged across all 6 series). The baseline MAE with all features intact is 200d.
| Feature Group | What It Contains | Ablated MAE | Δ MAE | Interpretation |
|---|---|---|---|---|
| Macro / Demand | I-140 approval ratio, I-485 queue size, utilization rate, demand ratio, 6-month velocity | 247d | +47d | Most important group — drives nearly all GBM improvement over simpler baselines |
| Velocity | 1-month through 12-month moving-average cutoff movement | 201d | +1d | Negligible isolated impact at 6-month horizon |
| Seasonality | Month of year, FY boundary flags, months into FY | 199d | −1d | Marginal (seasonal signal captured elsewhere) |
| Demand Drop | ROW velocity, issuance drop ratio | 199d | −1d | Marginal at aggregate level |
| Cross-Series | EB-1 surplus, EB-1 movement signals, near-cutoff I-485 density | 194d | −7d | Model performs better without it — adds noise at this horizon |
Key findings:
- Demand signals dominate: The macro group (I-140 backlog ratio, I-485 pending queue density, visa utilization) accounts for essentially all of the GBM's improvement over simpler baselines like Oppenheim Pace or persistence. Without these features, the GBM degrades by 47 days.
- Cross-series signals hurt at 6 months: The statutory EB-1 → EB-2 overflow rule is real (INA §203), but the GBM picks up noise from the EB-1 surplus features at this horizon. This is consistent with findings that EB-1 spillover only clearly predicts EB-2/3 movement at shorter (1–3 month) windows for some series.
- Velocity and seasonality are redundant at GBM level: These features matter for the 1-month expert ensemble (where seasonal rhythm and recent momentum are primary signals), but the GBM at 6–12 months gets more value from structural demand indicators.
5. What Was Tested and Rejected
- Fiscal year conditional models: Separate experts for FY boundary months vs. steady-state. Insufficient training data (~8 transitions per series).
- Hardcoded regime dispatch: "If advancing, use demand signal; if stalled, use persistence." Cannot be tuned and does not generalize across series. Replaced by trainable Hedge weights.
- GBM at 1-month horizon as point predictor: The base-rate problem: ~80% of months have no significant movement for EB-2/3. The GBM predicts spurious moves. Used only for movement probability classification, not as a point predictor.
- PERM filing volume: Hypothesized as a 12–18 month leading indicator of EB-2/3 demand. Feature ablation (zeroing the feature at inference) showed the GBM trees did not use it in any decision path. The apparent improvement was from accumulating more training data.
6. Known Limitations
- India EB-3: The cutoff has barely moved in years. The structural backlog makes any 6-month prediction inherently uncertain. Confidence intervals are wide; directional guidance is more reliable than point estimates.
- Retrogression events: When USCIS must retrogress to protect the cap, it is typically not predictable from historical patterns. The model will under-predict these events.
- Policy shocks: Congressional action, USCIS fee changes, and I-140 filing surges before policy deadlines are not predictable from the visa bulletin data alone.
Monthly analysis posts compare predictions to actual bulletins. See recent analyses or historical prediction accuracy.