Skip to content
aadya

aadya-m1

The full model. 256M parameters, open weights, and the best accuracy among open-source models for forecasting the next period.

At a glance

Built for laptops, desktops and servers you control.

256M
parameters
open weights
~1 GB
weights in fp32
about 512 MB in fp16
1 to 120
days, a probability for each
the full forecast distribution
Apache-2.0
licence
code and weights

Use it for

  • Apps and tools that show when a period is likely to start, with honest uncertainty
  • Research and education on probabilistic forecasting of cycle timing
  • Fine-tuning, when you have far more real data than we did

Not for

  • Diagnosis, treatment decisions or screening
  • Contraception, conception planning or “safe days”
  • Anything that sends a person’s cycle data to a server
Accuracy

First on all three public benchmarks.

Error is CRPS on AadyaBench. Lower is better. The usual tracker method is a rolling median of recent cycles.

aadya-m1 against the usual tracker method

Mean CRPS on each track.

Usual tracker method (rolling median; 28-day for cold start)aadya-m1Error aadya-m1 removes
View the numbers
TrackDataUsualaadya-m1Lower byAgainst the strongest comparison
Simulated users, all cases539 users3.702.9221%slightly ahead of the best competitor (LSTM)
Hard case: life-stage mix (S4)simulated6.834.7830%better than the Bayes reference
Real data: all public users (pooled)364 users2.351.9318%slightly ahead of the Bayes reference (small but clear)
Real data: Creighton (cross-fitted)251 users2.542.0917.6%slightly ahead of the Bayes reference (small but clear)
Real data: Marquette113 users1.951.5719.4%on par with the Bayes reference
Mid-cycle on real data, no marker (mcPHASES)110 cycles3.492.4330.2%Poisson-with-skips slightly ahead (2.34 vs 2.43; significance not tested)
With an ovulation-test marker (mcPHASES)110 cycles, 41 people3.491.7051.2%better than the best competitor (Poisson-with-skips)
20% of period logs missed (simulated)simulated12.459.5523.3%on par with the Bayes reference
No history, Marquette (cold start)113 users2.132.18-2.3%on par with the 28-day baseline

The lead over the classical Bayes reference is small on real users, about 1% of the error. Full tables and intervals are on Benchmarks.

Against the strongest comparison

Mean CRPS on the three public boards. Lower is better.

Zoomed: the axis starts at 1.400, not 0.
View the numbers
MethodValue95% interval
Simulated: aadya-m12.925-
Simulated: Bayes ref.3.026-
Creighton: aadya-m12.091-
Creighton: Bayes ref.2.119-
Marquette: aadya-m11.572-
Marquette: Bayes ref.1.580-

Simulated users stand in for real people. The two real boards are Creighton (251 users, cross-fitted) and Marquette (113 users).

Inputs and outputs

Four inputs in, one distribution out.

InputMeaning
Past cycle lengthsDays, oldest first. May be empty.
Days since last period0 right after a period starts, then increasing.
Age groupOptional: 18-24, 25-34, 35-44, 45+.
Ovulation-test dayOptional and experimental.
Output120 probabilities, one per cycle length from 1 to 120 days.
# Python 3.10+. Weights are downloaded once, then everything runs offline.
pip install numpy scipy torch safetensors huggingface_hub
Optional input

With an ovulation test, the window narrows.

12 → 7
days, the 80% window
without and with the test
1.70
error with the test
against 3.49 for the usual method
41
people, 110 cycles
one small study

Experimental. Studied on one small dataset and never presented as an ovulation date. See the case study.

Ask about Aadya on