A pre-registered validation across 111 birth charts, scored against a coverage-normalised baseline rather than a raw hit rate.
Summary. We built an event-timing engine implementing standard Parashari method — natal significator analysis, three-level Vimshottari activation, Jupiter/Saturn transit confirmation, and divisional-chart refinement. We then tested whether the periods it produces actually contain the events they are supposed to time.
They do not. Across 768 scored events the engine's windows contained the real event 10.7% of the time while covering 10.5% of the lifespan — a coverage-normalised ratio of 1.02, indistinguishable from marking off the same amount of calendar at random. Five independent tests, including a held-out split and a per-subject parameter fit, all returned ratios between 0.80 and 1.26.
We publish the negative result and have removed date predictions from the product. The Events section no longer shows a score out of 100 or confidence bands from "Very Strong" to "Weak" — a numeric confidence is a claim about likelihood, and we have no grounds for one.
What it shows instead is the classical reasoning itself, made explicit and checkable: which grahas carry the significations for your question and by what rule; which Vimshottari periods activate them at all three levels; whether Jupiter and Saturn confirm by transit and in what dignity; and what the relevant divisional chart says. Periods are named — "Mars–Venus" — with the dasha's own boundary dates and corresponding ages, because those are arithmetic rather than prediction. You can also enter events that have already happened and see what the same rules say about them.
Vimshottari dasha assigns every moment of a life to a nested hierarchy of planetary periods. Classical texts hold that an event fructifies when the ruling periods activate the houses and significators associated with it, and when the slow-moving grahas confirm by transit. This is a falsifiable claim: it says events cluster in identifiable periods rather than distributing arbitrarily across a life.
Almost no astrological software tests it. The obstacle is not philosophical but statistical: a long scan produces many candidate periods, and with enough candidates some will fall near almost any date. Without a coverage-normalised baseline, an engine that flags 40% of a lifespan and "hits" 40% of events looks impressive while having demonstrated nothing.
Each question maps to a primary house, weighted supporting houses, obstructing houses, and natural karakas. A graha's significator score:
H is the weighted house set (primary weight 1.35), O the obstructing houses. Aspects follow the classical special aspects: Mars 4/7/8, Jupiter 5/7/9, Saturn 3/7/10, the rest 7th only. Rahu and Ketu own no sign, so rulership is undefined for them; they act through their dispositor at half weight. A chart carries the promise only if at least one graha connects to the primary house — without that constraint nearly every chart promises nearly every event.
Periods derive from the natal Moon's nakshatra traversal. The balance at birth is
We use the sidereal year of 365.25636305 days rather than the Gregorian 365.2425. The difference is 0.0139 d/yr, but dasha boundaries are measured from birth across the whole elapsed span, so the error accumulates to roughly 1.5 days by the end of the cycle. Professional ephemeris packages use the sidereal value.
A period is activated when its lord is a significator scoring at least 30% of that chart's peak significator. Reporting is at antardasha level: a pratyantar averages about two months, finer than the classical unit an event is said to occur within.
The classical double-transit rule — dasha promises, transit delivers. Jupiter and Saturn occupying or aspecting the relevant houses at the period midpoint contribute up to 25 points, scaled by house weight and by the transiting graha's dignity (exalted ×1.30, own sign ×1.15, debilitated ×0.55).
The question's divisional chart — D-9 marriage, D-7 children, D-10 career, D-4 property, D-24 education — is checked for the period lords, contributing up to 15 points. Final score is the sum, capped at 100; the six highest-scoring periods are taken as the engine's answer.
111 volunteers supplied birth data and dated life events, yielding 866 dated events across 18 categories.
| Attribute | Value | n |
|---|---|---|
| Birth certificate | — | 60 |
| Family janampatri | — | 51 |
| Stated precision 1 minute | — | 92 |
| Stated precision 5–15 minutes | — | 20 |
| Events flagged "exact date" | 52% | 449 |
| Birth years spanned | 1953–2025 | — |
Birth-time quality matters more here than sample size. The lagna advances about 1° every 4 minutes and the Moon about 13°/day, so an error of a few minutes shifts nakshatra traversal and can move dasha boundaries by weeks. A dataset sourced predominantly from certificates and contemporaneous janampatri is materially stronger than one relying on recall. No chart had been rectified against the events being tested, which would have been circular.
If an engine marks off a fraction c of a lifespan, it will contain a fraction c of that person's events by chance alone. The quantity of interest is therefore not the hit rate but its ratio to coverage:
R = 1.0 is chance. R > 1 means the engine selects periods better than their width alone explains; R < 1 means worse than random. This normalisation is what makes the result falsifiable — widening windows raises hit rate and coverage in equal measure, leaving R unchanged, so the metric cannot be gamed by generosity.
| Event | n | Hits | Rate | Coverage | Ratio |
|---|---|---|---|---|---|
| Promotion | 41 | 10 | 24.4% | 10.4% | 2.35 |
| Second child | 51 | 8 | 15.7% | 10.1% | 1.55 |
| Job loss | 25 | 4 | 16.0% | 10.4% | 1.54 |
| Business | 29 | 5 | 17.2% | 11.9% | 1.45 |
| Engagement | 72 | 10 | 13.9% | 10.9% | 1.28 |
| First childbirth | 87 | 11 | 12.6% | 10.2% | 1.24 |
| First job | 65 | 9 | 13.8% | 11.5% | 1.21 |
| Marriage | 97 | 11 | 11.3% | 10.7% | 1.06 |
| Relocation | 37 | 3 | 8.1% | 8.9% | 0.91 |
| Property | 43 | 3 | 7.0% | 10.0% | 0.70 |
| Accident | 16 | 1 | 6.2% | 9.6% | 0.65 |
| Surgery | 34 | 2 | 5.9% | 9.2% | 0.64 |
| Foreign travel | 32 | 2 | 6.2% | 10.3% | 0.61 |
| Illness | 22 | 1 | 4.5% | 10.2% | 0.45 |
| Higher education | 62 | 2 | 3.2% | 10.8% | 0.30 |
| Job change | 42 | 0 | 0.0% | 11.0% | 0.00 |
| Separation | 7 | 0 | 0.0% | 9.8% | 0.00 |
| Third child | 6 | 0 | 0.0% | 11.0% | 0.00 |
The spread looks encouraging until you notice it is not systematic. The cells above 1.0 are predominantly small-n categories where sampling variance is widest; the largest and best-attested categories — marriage (n=97), childbirth (n=87), higher education (n=62) — sit at or below chance. If the underlying method worked, the well-powered cells should be the strongest, not the weakest.
To separate genuine chart-reading from demographic structure, we paired each subject's chart with a different subject's events and re-ran the engine.
| Pairing | Hits | Rate | Coverage | Ratio |
|---|---|---|---|---|
| True (chart with own events) | 82/768 | 10.7% | 10.5% | 1.02 |
| Permuted (chart with stranger's events) | 63/768 | 8.2% | 10.3% | 0.80 |
True pairings did modestly better. That gap is not evidence for the astrology: the engine enforces plausible-age bounds — no marriage windows before 18, no first-job windows before 16 — and those bounds align with a person's real timeline only when the chart is paired with the right person. The gap measures demographic realism, not chart-reading. It also failed to replicate: on the split-half below, the permuted control returned R = 1.01 against a true-pairing R = 1.04, erasing the difference entirely.
Marriage, first child and second child are the largest and most precisely dated categories. Selecting them after seeing Table 2 would be circular, so we split subjects randomly in half with a fixed seed, examined one half, and held the other sealed.
| Event | Exploration R | Held-out R | Change |
|---|---|---|---|
| Marriage | 1.08 | 1.05 | −0.03 |
| First child | 1.15 | 1.30 | +0.15 |
| Second child | 3.28 | 0.60 | −2.68 |
| Combined | 1.51 | 1.04 | −0.47 |
Testing a fifty-parameter engine is a blunt instrument. We therefore tested one specific, widely-taught proposition: marriage tends to occur during the periods of Venus or Jupiter. Venus is the natural karaka for marriage; this is about as central as Jyotish timing claims get. Venus and Jupiter jointly own 36 of the 120 Vimshottari years, a base rate of 30.0%.
| Mahadasha lord | Observed | Obs % | Exp % | Ratio |
|---|---|---|---|---|
| Sun | 10 | 10.3% | 5.0% | 2.06 |
| Rahu | 29 | 29.9% | 15.0% | 1.99 |
| Mars | 9 | 9.3% | 5.8% | 1.59 |
| Jupiter | 15 | 15.5% | 13.3% | 1.16 |
| Mercury | 11 | 11.3% | 14.2% | 0.80 |
| Venus (karaka) | 10 | 10.3% | 16.7% | 0.62 |
| Moon | 5 | 5.2% | 8.3% | 0.62 |
| Ketu | 3 | 3.1% | 5.8% | 0.53 |
| Saturn | 5 | 5.2% | 15.8% | 0.33 |
A caution about the Rahu cell. Rahu mahadasha shows twice its expected share of marriages. We are not reporting this as a finding. It emerges from inspecting nine cells after the fact — precisely the procedure that manufactured the 3.28 in Table 4. There is also a plausible confound: Rahu's 18-year period is long, and where it falls relative to a person's twenties depends on birth nakshatra, which is not uniformly distributed in a cohort born across a few decades in one country. To mean anything it would have to be declared in advance and tested on fresh charts.
A natural proposal: rather than fixed weights, let each user supply three known events, fit the engine's free parameters to them, then predict a fourth. We tested this directly on the 92 subjects with four or more dated events.
Seven free parameters were fitted by random-restart hill climbing with occasional uphill moves, minimising the mean normalised rank of the window containing each known event:
The fit succeeds. Mean improvement in Q was 0.197, with 6–7 of the 7 parameters moving for most subjects; individual cases went from 1.000 (event in no window at all) to 0.433 (event in the top-ranked windows). Calibration genuinely pulls known events into high-scoring periods.
| Condition | Hit rate | Coverage | Ratio |
|---|---|---|---|
| Calibrated on 3 known events | 12.0% | 9.8% | 1.22 |
| Uncalibrated (fixed weights) | 13.0% | 10.3% | 1.26 |
| Calibrated, applied to a stranger's chart | 11.0% | — | — |
This is textbook overfitting. Seven free parameters against three constraints is underdetermined by four dimensions: infinitely many parameter vectors place those three events perfectly and disagree about everything else. The optimiser selects one arbitrarily, learning the noise in three dates rather than anything transferable about the chart.
The product implication is sharper than the statistical one. A calibrated display would show the user's own marriage and first child landing precisely in the top windows — apparent proof the system understands their chart — while predicting the future no better than before. Higher apparent credibility with unchanged accuracy is worse than no feature at all.
A null result bounds an effect; it does not erase one. The limits of what 111 charts can settle are as much a part of the finding as the ratio itself, and several of them cut in the engine's favour.