This is a detailed walkthrough of my NEPTUNE project - the work behind my Regeneron ISEF 2025 poster - broken down section by section. NEPTUNE (N-body Exoplanet Prediction Using TTV for Unseen Exoplanets) detects and characterises planets we cannot see directly, by decoding the gravitational fingerprints they leave in the transit timings of the planets we can.
The challenge: a biased view of planetary systems

Most of the roughly 5,845 confirmed exoplanets were found by the transit method, which only works for planets on short, nearly edge-on orbits. Outer planets - longer periods, slightly inclined - often never transit from our line of sight, so about 78% of known systems appear to be single-planet. That is a selection effect, not reality: we are missing the outer planets, which distorts our picture of how planetary systems are built.
How transit-timing variations reveal hidden planets

In a single-planet system, transits arrive like clockwork. Add an unseen companion and its gravity tugs the transiting planet, making each transit arrive slightly early or late. Plotted over time, those shifts trace a periodic observed-minus-calculated (O-C) curve. The same principle revealed Neptune itself, from the timing anomalies of Uranus. Reading that curve backwards recovers the mass and orbit of the planet you cannot see.
Why this has to be automated - and fast

Despite the payoff, only about 36 exoplanets have been confirmed through TTVs, while Kepler alone shows roughly 260 strong and 650 moderate signals still undecoded. The analysis is hard for two reasons: it needs long baselines (combining Kepler and TESS epochs), and it is degenerate - a high-mass, low-eccentricity planet and a low-mass, high-eccentricity one can produce almost the same O-C curve. NEPTUNE is built to break that degeneracy automatically.
Built on open science, open source, open data

Every input is open: transit catalogues from Kepler and TESS, ephemerides from the NASA Exoplanet Archive, radial-velocity data from HARPS, and observations from shared robotic telescopes (Alnitak in Spain, Burke-Gaffney in Canada). Every tool is open-source: REBOUND for the N-body integration, SciPy/Astropy, scikit-learn for the machine learning, and emcee for the Bayesian inference. Anyone can reproduce or extend it.
Step 1: 80,000 N-body simulations

To learn what TTV signals look like, I simulated 80,000 two-planet systems with the REBOUND IAS15 integrator, spanning 11 parameters - stellar mass, both planets' masses, orbital periods, eccentricities, inclinations, and periastron angles - sampled by Latin hypercube for even coverage. Each system ran 1,200 transit epochs, and I kept only dynamically stable configurations (companions separated by at least 3.5 mutual Hill radii). The result is a library of realistic O-C curves with known answers.
Reading the O-C curve: three signals in one

A real O-C curve is not one clean sinusoid - it is a sum of signals on different timescales: a short synodic signal from planetary conjunctions, a dominant resonance-driven signal on months-to-years periods, and a slow apsidal-precession drift. Separating them in a periodogram is what makes the individual pieces of physical information recoverable - and, as shown next, the synodic signal is the key to breaking the mass-eccentricity degeneracy.
Steps 2 and 3: extract features, then learn priors

From each simulated curve I extract features - the dominant period (via Lomb-Scargle), a secondary period, the amplitude, and a false-alarm probability, keeping only signals with FAP < 0.01 (99% certainty). A Random Forest (500 trees, max depth 15), trained on the 80,000 simulations with 10% added noise, then learns to predict a hidden planet's mass, orbital period, and eccentricity directly from those features. Binning the training set by orbital-period ratio and eccentricity measurably sharpens the predictions.
Step 4: Bayesian inference recovers the parameters

The machine-learning predictions become informed starting points for a Markov Chain Monte Carlo fit (emcee, 100 walkers, 10,000 steps) that samples the full posterior with proper uncertainties. Convergence is verified with trace plots, autocorrelation, and the Gelman-Rubin statistic (trusted only when R < 1.1). A converged chain yields clean, stable corner plots; a non-converged one is visibly unstable - so the diagnostic itself is part of the reliability check.
Result 1: what drives the TTV signal

The first result maps how the signal behaves. TTV amplitude peaks sharply near mean-motion resonances (2:1, 3:2), increases with the perturbing planet's mass, and is amplified by eccentricity. Resonant systems produce long-period, high-amplitude super-period signals; non-resonant ones give shorter synodic signals tied to conjunctions. Knowing these dependencies is what lets NEPTUNE invert a curve into physical parameters.
Result 2: breaking the mass-eccentricity degeneracy

This is the crux. The synodic signal has a period set by orbital geometry (independent of mass and eccentricity) but an amplitude that grows with perturbing mass - so it carries mass information the dominant signal alone cannot. Using it, NEPTUNE picks the correct solution for Kepler-46c where a naive fit is degenerate: the predicted synodic peak matches the observed one for the right parameters and misses badly for the wrong ones.
Result 3: recovering a known hidden planet (Kepler-46c)

The blind validation: given only 30 mid-transit times of Kepler-46b, NEPTUNE detected a strong TTV signal (period 191.5 +/- 0.2 d, amplitude 59.1 +/- 1.8 min, FAP ~10^-7), fed Random-Forest priors into MCMC, and recovered the unseen Kepler-46c at a period of 57.16 +/- 0.40 days (NASA: 57.01 +/- 0.06, i.e. 99.74%) and a mass of 110.25 +/- 2.22 Earth masses (NASA: 119.49 +/- 6.67, i.e. 92.27%). Recovering the published answer from timing alone is what proves the method works.
Result 4: a candidate in a single-planet system (Kepler-1710)

Turned loose on Kepler-1710 - catalogued as a single-planet system - NEPTUNE reprocessed 70+ transits (via EXOTIC) and found a significant timing signal (dominant O-C period 259.4 +/- 0.3 d, amplitude 37.6 +/- 0.2 min, FAP ~10^-11). The best fit is an unseen, Neptune-sized companion of about 27.5 Earth masses near a 3:2 resonance, which also satisfies the system's radial-velocity constraints (< 1.23 Jupiter masses at 10 AU). This is a candidate, not a confirmed detection - but exactly the kind of hidden planet the method is designed to surface.
Why informed priors matter: about 8x faster

The machine-learning step is not cosmetic - it is what makes the method scalable. With uniform priors, the MCMC walkers wander through unlikely parameter space and take ~2,000 steps (weeks) to converge. With the Random-Forest-informed priors, they start in the right region and converge in ~250 steps (days) - roughly 8x faster, which is the difference between analysing one system and analysing a survey.
Characterising the hidden planets

Once masses and orbits are recovered, NEPTUNE characterises the planets: classifying them as rocky (< 10 Earth masses), Neptune-like (10-100), or gas giants (> 100), and estimating surface temperature and habitable-zone status. Kepler-46c comes out as a ~110 Earth-mass gas giant (0.28 AU, 472 K); the Kepler-1710 candidate as a ~27.5 Earth-mass Neptune-like world (0.15 AU, 658 K) - neither habitable, but both now physically described rather than merely detected.
Reading planetary migration and architecture


The recovered parameters also say something about history. Planet pairs often sit just wide of exact resonance (Kepler-25 b,c at a 2.04 period ratio; Kepler-46 b,c at 1.70), a signature of migration and tidal evolution. Mapping masses against periods distinguishes uniform peas-in-a-pod systems from hot-Jupiter systems - so a timing measurement becomes a window on how the system formed.
Errors and limitations

Being explicit about limits matters. Mid-transit uncertainties from the light curves are propagated through; parameter estimates carry 1-sigma credible intervals; competing models are ranked by sum of squared errors (lower is better). And because the N-body integrations ran on a home computer, they were limited to 200 steps per orbit, giving about 1% cumulative integration error after 1,200 epochs - a known, quantified constraint rather than a hidden one.
Conclusions
NEPTUNE integrates machine learning and Bayesian inference to detect and characterise hidden exoplanets rapidly - about 8x faster than uniform-prior fitting; it resolves the mass-eccentricity degeneracy through multi-period (synodic) fitting; it validates against well-studied systems with full uncertainty quantification; and it scales - it already flagged a candidate companion in Kepler-1710, and the open-source release lets others apply it to the hundreds of understudied TTV systems.
Open science, impact, and what is next

NEPTUNE's analysis has been contributed to the ESA Ariel / ExoClock effort to improve TTV baselines, and I am extending it to mono-transit systems (single-transit detections such as KOI 4307 and KOI 1271), where follow-up is otherwise unlikely. The code and training modules are open-source on GitHub so citizen scientists can help analyse the backlog of TTV systems. I presented this work at the 4th ExoClock Annual Meeting (Portugal, 2024) and the 31st Young Scientists' Conference (Ukraine, 2025). NEPTUNE received the Third Grand Award in Physics and Astronomy at the 2025 Regeneron International Science and Engineering Fair.
The Kepler-46c and Kepler-1710b results here use archival transit times from NASA's Kepler and TESS missions (MAST archive and the NASA Exoplanet Archive), not new telescope observations.