In 2025, I set up a remote telescope observatory, IAU Minor Planet Code R60, to reach millimagnitude photometry; the engineering story is in Building My Remote Observatory. This post is the exoplanet science it has produced in the last year to support the European Space Agency's Ariel mission.
Over that year the telescope did one thing, again and again: it watched a star dim by a fraction of a percent as a planet crossed its face, and timed the crossing to the minute. Do that on enough planets, on enough nights, and you are no longer just taking pictures; you are helping to keep a future space telescope on schedule. Here is what a year of it looked like, and the one planet that turned out to be running late.
What ExoClock is, and why the timing matters
When a planet passes in front of its star, the star fades for a few hours, and the exact midpoint of that fade is a clock reading. Predict those readings years ahead and you have an ephemeris: a timetable of future transits. The trouble is that ephemerides drift. Tiny errors in a planet's period accumulate, and after a few years the predicted mid-time can be tens of minutes out. That matters to a space telescope, which must book its observations in advance and point during the transit, not before or after.
ExoClock exists to stop that drift. It is a worldwide network of observers, professional and amateur, who time exoplanet transits from the ground and pool the results, keeping the predicted transit times fresh for the candidate targets of the European Space Agency's Ariel mission. Ariel launches around 2029 to study the atmospheres of roughly a thousand exoplanets, and every ground-based mid-transit time helps ensure it can find its targets when it arrives. A 0.3 m telescope cannot rival a space observatory on any single measurement, but it can give a whole night to one star on the exact date a transit falls, which is precisely what this kind of timing needs. That is the job R60 took on.
A year of observations
Between July 2025 and June 2026 I recorded 29 exoplanet transits of 23 planets with R60, my 0.305 m (12") Ritchey-Chretien in Nerpio, Spain, using a ZWO ASI 2600 Mono camera in the Cousins R band. Three earlier transits, from 2023 and 2024 on shared telescopes, bring my total ExoClock record to 32 transits across 25 planets. Every one was submitted to ExoClock and independently re-fitted and quality-controlled there.
I did not choose these targets at random. ExoClock assigns every planet a priority, Alert, Medium or Low, according to how uncertain its predicted transit time has become, and I worked from the top of that list. Those labels are not fixed. A planet climbs in priority as its ephemeris decays, and drops back to Low once enough observers have re-timed it, so the mostly-Low priorities in the table are partly a measure of success: the collective effort, mine included, keeping these predictions fresh. The exceptions are the tell. WASP-148b stays an Alert because its timing genuinely varies, pulled by its outer companion, and WASP-44b and HAT-P-17b were still Medium when I reached them.
The sample is a cross-section of the hot-Jupiter zoo. The host stars span V = 10.2 to 14.3, from bright enough for a small telescope to faint enough that it has to work for the signal. The transits run from half a percent to nearly three percent deep, and the orbits from ultra-short-period worlds that circle their stars in under a day (TOI-2109b in 16 hours, KELT-16b in 23) to WASP-59b's near-eight-day period. They come from almost every major transit survey: five are TESS objects of interest, one is from the Kepler field, and the rest from ground-based programmes such as WASP, HAT, KELT, TrES, XO and Qatar. Most of the observing fell in an intensive first season from July to October 2025, when these targets sat well placed after dark, with a second run of high-priority follow-ups into 2026.
Each transit yields the same handful of numbers: how late or early it arrived (the observed-minus-calculated residual, O − C), how deep it was, how tightly the planet's size was pinned down (the planet-to-star radius ratio, Rp/Rs), how strong the detection was (signal-to-noise), and how steady the photometry was (the residual scatter). The complete record is below, and the rest of this post is what those numbers mean. Drift is how far the measured radius ratio sits from the published value, in standard deviations; scatter is the residual standard deviation of each light curve, in millimagnitudes. R60 is my telescope; the three earlier transits on shared telescopes are marked.
| Planet | Priority | Obs. date | Depth | Rp/Rs (measured) | Rp/Rs (literature) | Drift | O−C (min) | SNR | Scatter (mmag) | AutoCorr | Shapiro |
|---|---|---|---|---|---|---|---|---|---|---|---|
| HAT-P-23b | Low | 2026-06-25 | 1.17% | 0.1080 ± 0.0049 | 0.1162 | -1.65σ | +2.62 ± 2.16 | 11.0 | 3.62 | 0.234 | 0.027 |
| HAT-P-59b | Low | 2026-06-24 | 1.21% | 0.1099 ± 0.0051 | 0.1045 | +1.04σ | +4.54 ± 1.73 | 10.9 | 2.44 | 0.223 | 0.013 |
| XO-6b | Low | 2026-02-23 | 1.46% | 0.1207 ± 0.0029 | 0.1100 | +1.61σ | -0.20 ± 1.87 | 20.9 | 2.47 | 0.303 | 0.013 |
| TOI-3819b | Low | 2026-02-20 | 0.74% | 0.0862 ± 0.0097 | 0.0783 | +0.81σ | -2.39 ± 4.18 | 4.5 | 2.64 | 0.249 | 0.017 |
| Qatar-3b | Low | 2025-10-02 | 0.77% | 0.0878 ± 0.0047 | 0.0888 | -0.20σ | +2.49 ± 2.74 | 9.3 | 2.96 | 0.288 | 0.020 |
| Qatar-4b | Low | 2025-10-02 | 1.75% | 0.1321 ± 0.0046 | 0.1380 | -1.07σ | +1.98 ± 1.87 | 14.4 | 5.41 | 0.159 | 0.012 |
| HAT-P-59b | Low | 2025-10-01 | 1.30% | 0.1138 ± 0.0078 | 0.1045 | +1.18σ | +2.67 ± 3.60 | 7.4 | 4.57 | 0.339 | 0.019 |
| WASP-44b | Medium | 2025-09-13 | 1.17% | 0.1083 ± 0.0055 | 0.1260 | -2.83σ | +1.38 ± 2.59 | 9.9 | 4.42 | 0.167 | 0.015 |
| TOI-2154b | Low | 2025-09-12 | 1.27% | 0.1126 ± 0.0050 | 0.1069 | +1.11σ | +1.10 ± 2.45 | 11.4 | 3.34 | 0.270 | 0.015 |
| WASP-135b | Low (TTV) | 2025-09-11 | 2.13% | 0.1459 ± 0.0078 | 0.1390 | +0.83σ | -3.22 ± 1.73 | 9.5 | 5.39 | 0.259 | 0.010 |
| Kepler-17b | Low | 2025-09-10 | 1.62% | 0.1273 ± 0.0062 | 0.1303 | -0.49σ | -1.38 ± 2.16 | 10.3 | 6.82 | 0.275 | 0.027 |
| WASP-148b | Alert (TTV) | 2025-09-05 | 0.84% | 0.0914 ± 0.0067 | 0.0807 | +1.59σ | +25.64 ± 3.31 | 6.8 | 3.46 | 0.290 | 0.020 |
| HAT-P-17b | Medium | 2025-09-03 | 1.65% | 0.1285 ± 0.0032 | 0.1238 | +1.40σ | +2.87 ± 1.87 | 20.1 | 3.12 | 0.209 | 0.034 |
| TrES-2b | Low | 2025-08-10 | 1.76% | 0.1325 ± 0.0044 | 0.1254 | +1.60σ | +1.88 ± 1.73 | 15.4 | 3.69 | 0.206 | 0.013 |
| KELT-16b | Low | 2025-08-08 | 1.23% | 0.1109 ± 0.0037 | 0.1070 | +0.99σ | -2.00 ± 1.35 | 15.0 | 2.84 | 0.192 | 0.017 |
| TOI-2046b | Low | 2025-08-06 | 1.67% | 0.1292 ± 0.0067 | 0.1213 | +1.14σ | +0.88 ± 1.58 | 9.7 | 2.08 | 0.406 | 0.032 |
| TrES-5b | Low | 2025-08-05 | 2.26% | 0.1502 ± 0.0064 | 0.1420 | +1.27σ | +0.48 ± 1.27 | 11.8 | 6.18 | 0.234 | 0.013 |
| KELT-16b | Low | 2025-08-05 | 1.16% | 0.1079 ± 0.0089 | 0.1070 | +0.10σ | -3.45 ± 2.30 | 6.1 | 2.69 | 0.285 | 0.016 |
| HAT-P-23b | Low | 2025-08-04 | 1.17% | 0.1083 ± 0.0033 | 0.1162 | -2.33σ | -0.46 ± 1.34 | 16.4 | 3.26 | 0.345 | 0.015 |
| WASP-59b | Low | 2025-08-04 | 1.92% | 0.1385 ± 0.0018 | 0.1300 | +2.37σ | -0.97 ± 0.79 | 38.6 | 2.48 | 0.233 | 0.012 |
| TrES-3b | Low (TTV) | 2025-08-03 | 2.23% | 0.1492 ± 0.0047 | 0.1631 | -2.95σ | -2.27 ± 1.09 | 16.4 | 3.72 | 0.276 | 0.011 |
| TOI-4463Ab | Low | 2025-08-02 | 0.96% | 0.0981 ± 0.0046 | 0.1145 | -2.70σ | -4.07 ± 1.87 | 10.9 | 1.90 | 0.324 | 0.023 |
| TOI-2109b | Low | 2025-07-22 | 0.69% | 0.0832 ± 0.0036 | 0.0815 | +0.46σ | +3.24 ± 2.16 | 11.6 | 1.52 | 0.292 | 0.018 |
| WASP-2b | Low | 2025-07-22 | 1.76% | 0.1328 ± 0.0040 | 0.1326 | +0.05σ | -1.22 ± 1.09 | 16.8 | 2.06 | 0.217 | 0.034 |
| HAT-P-7b | Low (TTV) | 2025-07-21 | 0.62% | 0.0788 ± 0.0075 | 0.0781 | +0.09σ | -0.51 ± 1.87 | 5.3 | 1.63 | 0.189 | 0.011 |
| KELT-12b | Low | 2025-07-21 | 0.61% | 0.0778 ± 0.0029 | 0.0772 | +0.17σ | +2.74 ± 3.02 | 13.4 | 1.90 | 0.259 | 0.006 |
| Qatar-4b | Low | 2025-07-20 | 1.95% | 0.1397 ± 0.0042 | 0.1380 | +0.33σ | +0.14 ± 1.44 | 16.7 | 6.46 | 0.269 | 0.021 |
| WASP-2b | Low | 2025-07-19 | 1.82% | 0.1348 ± 0.0030 | 0.1326 | +0.71σ | -2.86 ± 0.95 | 22.7 | 1.67 | 0.332 | 0.028 |
| WASP-148b | Alert (TTV) | 2025-07-15 | 0.51% | 0.0717 ± 0.0061 | 0.0807 | -1.47σ | +32.08 ± 8.06 | 5.9 | 4.56 | 0.270 | 0.007 |
| KELT-16b [Alnitak] | Low | 2024-07-27 | 1.00% | 0.1000 ± 0.0130 | 0.1070 | -0.54σ | +5.31 ± 5.62 | 3.9 | 5.81 | 0.203 | 0.009 |
| WASP-52b [Alnitak] | Low (spots) | 2024-07-02 | 2.83% | 0.1683 ± 0.0037 | 0.1646 | +0.95σ | -1.65 ± 1.05 | 22.9 | 7.05 | 0.161 | 0.005 |
| KPS-1b [BurkeGaffney] | Low | 2023-07-07 | 1.33% | 0.1152 ± 0.0073 | 0.1140 | +0.14σ | -0.62 ± 2.74 | 8.0 | 6.51 | 0.188 | 0.007 |
Did it reach millimagnitude precision?
Start with the plainest number. Each light curve is a stream of brightness measurements, and its scatter, the residual standard deviation or STD, is simply how much those points jitter around the fitted transit curve. A scatter of three millimagnitudes means a typical measurement sits about three thousandths of a magnitude, roughly a third of a percent, from the smooth model. It gauges how steady the photometry is: not the depth of the transit, nor whether the model fits, but the raw steadiness of the light. Smaller is better, and a clean instrument on a clear night is what makes it small.
The observatory was built and funded, through the Masason Foundation grant, to reach one benchmark above all others: millimagnitude photometry, the ability to measure a star's brightness to within about a thousandth of a magnitude. Across the 29 R60 transits the scatter runs from 1.5 to 6.8 millimagnitudes, with a median of 3.1. The tightest, TOI-2109b at 1.5, approaches the millimagnitude floor; the loosest, Kepler-17b at 6.8, is the faintest star in the set at V = 14.3. This is per-point scatter, a few millimagnitudes on each exposure; averaged over the hundreds of points in a transit it beats down to the roughly one-millimagnitude precision on the fitted depth and mid-time the observatory was built for, which is what makes the shallowest transits here, such as WASP-148b's half-percent dip, measurable at all. For comparison, my three earlier transits on shared telescopes scatter 5.8 to 7.0 millimagnitudes, but on different targets and nights, so it is not a controlled test; one was even a larger 17-inch. What building R60 changed decisively was not aperture but control: the freedom to schedule these targets, and to return to them, whenever the science required.
Reading the clock: precision, accuracy and a flat baseline

Figure 1. Transit timing across the whole programme. Each point is one transit's observed-minus-calculated (O − C) mid-transit time, in minutes, against the night it was observed; the dashed line at zero is the constant-period prediction. The R60 transits (blue) scatter tightly about zero, with an error-weighted mean of −0.28 ± 0.32 minutes and no clock or reduction bias; error bars show each transit's timing precision. WASP-148b (orange) sits 26 to 32 minutes late, the one known timing variation in the set. Grey squares are three earlier transits on shared telescopes.
Every transit gives a mid-transit time, which I compare with the predicted time to get the residual O − C. Two things describe how good it is. Precision, the per-transit uncertainty, has a median of 1.9 minutes, from a best of 0.79 (WASP-59b) to 4.2 on the faintest target; 17 of 29 transits are timed to better than two minutes. Accuracy, any systematic offset, is the sterner test: across the 24 planets with no known timing anomaly the error-weighted mean residual is −0.28 ± 0.32 minutes, consistent with zero to about twenty seconds. There is no clock or reduction bias, and the scatter is only slightly larger than the formal uncertainties (reduced chi-square near 1.6), so the error bars are, if anything, mildly optimistic. That flat, zero-centred baseline is the whole point: it is what lets a single genuine outlier stand up and mean something.
What sets the precision is not how bright the star is but how deep the transit is. Timing precision barely changes across the roughly 40-fold range of host-star brightness in the sample (correlation −0.03): Kepler-17b at V = 14.3 was timed as well as targets three magnitudes brighter, because on these stars the limit is the transit signal, not photon noise from the star. Depth does drive it (correlation −0.49), a deeper dip giving the fit more to lock onto; even so R60 times a 0.6 percent dip, six parts in a thousand, to about two minutes. And the depths are accurate as well as precise: every measured radius ratio agrees with the literature to within three standard deviations, with no net bias (mean drift +0.11σ). The one real cost is time. Transits here last from 1.4 to 5.8 hours, and each needs an hour of steady baseline on either side, so the longest demand an unbroken run approaching eight hours, the kind of commitment a dedicated telescope can make and a shared one cannot.
Clean light curves, not just precise ones
Two further checks confirm the light curves are honest. AutoCorrelation, which hunts for correlated systematics in the residuals, stays low on every transit but one (TOI-2046b, taken in a Clear filter). The Shapiro statistic, which tests for outliers and departures from a Gaussian, is comfortably in the good band throughout. The residuals look like clean noise, which is what makes the error bars, and therefore the timing, trustworthy.
A planet running late: WASP-148b
Against that flat baseline, one system refuses to keep time. WASP-148b is a known two-planet system: its transits are already documented to arrive early or late as its outer companion, WASP-148c, pulls on it, and ExoClock flags it "Alert". My measurements recover that signal cleanly. Both transits I caught arrive late, by 26 and 32 minutes, far outside the zero baseline set by the other 24 planets, and a third epoch agrees. You can almost see it by eye.

Figure 2. WASP-148b on 15 July 2025, running late. The fitted transit (red) sits to the right of the constant-period prediction (teal); that horizontal shift is the planet transiting about 32 minutes late. The dip is shallow, around five millimagnitudes, yet the offset is unmistakable.
Recovering a published timing variation with a 0.3 m telescope, against a demonstrably unbiased baseline, is what building for precision is for. Turning an offset like this into the mass and orbit of the unseen perturbing planet is exactly what my NEPTUNE pipeline is built to do, so WASP-148b is both a measurement and a working test case for that method (the fuller analysis is here). Three more targets, WASP-135b, TrES-3b and HAT-P-7b, are flagged for possible timing variations and are worth continued watching.
What it feeds: orbital decay and ESA Ariel
A long timing baseline does more than catch today's anomalies; it reveals slow ones. The two shortest-period planets here, TOI-2109b on a 16-hour orbit and KELT-16b on a 23-hour orbit, are candidates for tidal orbital decay, a gradual shrinking of the period that only years of dense timing can confirm, and repeated ExoClock measurements are how that baseline is built.
Every planet here is also an Ariel target. Each mid-transit time I contribute narrows its predicted schedule a little further. Across 29 transits it is a small but concrete contribution: an observatory built to catch thousandth-of-a-magnitude dips, now helping, one mid-transit time at a time, to keep a space telescope pointed at the right star at the right moment.
The 29 transits
Every transit below was reduced and quality-controlled by ExoClock. Each card shows the folded lightcurve, the fit, and the measured mid-transit time, and prints its scatter (STD) in parts per thousand of flux; the diagnostic table converts these to the millimagnitudes used throughout this post (2.3 parts per thousand is about 2.5 millimagnitudes).
WASP-148b · 2025-07-15

The known timing variation, at its larger epoch. O − C +32.08 ± 8.06 min · SNR 5.9 · scatter 4.56 mmag
WASP-2b · 2025-07-19

O − C -2.86 ± 0.95 min · SNR 22.7 · scatter 1.67 mmag
Qatar-4b · 2025-07-20

O − C +0.14 ± 1.44 min · SNR 16.7 · scatter 6.46 mmag
HAT-P-7b · 2025-07-21

O − C -0.51 ± 1.87 min · SNR 5.3 · scatter 1.63 mmag
KELT-12b · 2025-07-21

O − C +2.74 ± 3.02 min · SNR 13.4 · scatter 1.90 mmag
TOI-2109b · 2025-07-22

One of the shallowest dips in the set, cleanly recovered. O − C +3.24 ± 2.16 min · SNR 11.6 · scatter 1.52 mmag
WASP-2b · 2025-07-22

O − C -1.22 ± 1.09 min · SNR 16.8 · scatter 2.06 mmag
TOI-4463Ab · 2025-08-02

O − C -4.07 ± 1.87 min · SNR 10.9 · scatter 1.90 mmag
TrES-3b · 2025-08-03

O − C -2.27 ± 1.09 min · SNR 16.4 · scatter 3.72 mmag
HAT-P-23b · 2025-08-04

O − C -0.46 ± 1.34 min · SNR 16.4 · scatter 3.26 mmag
WASP-59b · 2025-08-04

The cleanest light curve of the programme. O − C -0.97 ± 0.79 min · SNR 38.6 · scatter 2.48 mmag
KELT-16b · 2025-08-05

O − C -3.45 ± 2.30 min · SNR 6.1 · scatter 2.69 mmag
TrES-5b · 2025-08-05

O − C +0.48 ± 1.27 min · SNR 11.8 · scatter 6.18 mmag
TOI-2046b · 2025-08-06

O − C +0.88 ± 1.58 min · SNR 9.7 · scatter 2.08 mmag
KELT-16b · 2025-08-08

O − C -2.00 ± 1.35 min · SNR 15.0 · scatter 2.84 mmag
TrES-2b · 2025-08-10

O − C +1.88 ± 1.73 min · SNR 15.4 · scatter 3.69 mmag
HAT-P-17b · 2025-09-03

O − C +2.87 ± 1.87 min · SNR 20.1 · scatter 3.12 mmag
WASP-148b · 2025-09-05

The same timing variation, a cleaner epoch. O − C +25.64 ± 3.31 min · SNR 6.8 · scatter 3.46 mmag
Kepler-17b · 2025-09-10

O − C -1.38 ± 2.16 min · SNR 10.3 · scatter 6.82 mmag
WASP-135b · 2025-09-11

O − C -3.22 ± 1.73 min · SNR 9.5 · scatter 5.39 mmag
TOI-2154b · 2025-09-12

O − C +1.10 ± 2.45 min · SNR 11.4 · scatter 3.34 mmag
WASP-44b · 2025-09-13

O − C +1.38 ± 2.59 min · SNR 9.9 · scatter 4.42 mmag
HAT-P-59b · 2025-10-01

O − C +2.67 ± 3.60 min · SNR 7.4 · scatter 4.57 mmag
Qatar-3b · 2025-10-02

O − C +2.49 ± 2.74 min · SNR 9.3 · scatter 2.96 mmag
Qatar-4b · 2025-10-02

O − C +1.98 ± 1.87 min · SNR 14.4 · scatter 5.41 mmag
TOI-3819b · 2026-02-20

O − C -2.39 ± 4.18 min · SNR 4.5 · scatter 2.64 mmag
XO-6b · 2026-02-23

O − C -0.20 ± 1.87 min · SNR 20.9 · scatter 2.47 mmag
HAT-P-59b · 2026-06-24

O − C +4.54 ± 1.73 min · SNR 10.9 · scatter 2.44 mmag
HAT-P-23b · 2026-06-25

O − C +2.62 ± 2.16 min · SNR 11.0 · scatter 3.62 mmag
Networks: ExoClock (ESA Ariel exoplanet ephemerides); IAU Minor Planet Center observatory code R60.