Research

We tested our own dasha engine against 866 dated life events

A pre-registered validation across 111 birth charts, scored against a coverage-normalised baseline rather than a raw hit rate.

Study run July 2026 · n = 111 subjects · 866 events · Swiss Ephemeris, Lahiri ayanamsa

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.

1 · Why this needed testing

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.

2 · The engine under test

2.1 Natal promise

Each question maps to a primary house, weighted supporting houses, obstructing houses, and natural karakas. A graha's significator score:

S(g) = Σ(h,w) ∈ H [ 3w·rules(g,h) + 2w·occupies(g,h) + 1w·aspects(g,h) ] + 2·karaka(g) − 1.5·Σh ∈ O obstructs(g,h) + 0.5·S(dispositor) [nodes only]

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.

2.2 Vimshottari activation

Periods derive from the natal Moon's nakshatra traversal. The balance at birth is

b = (1 − frac(λMoon / 13°20′)) × Y[L₀] Y = [7, 20, 6, 10, 7, 18, 16, 19, 17] (Ketu → Mercury, 120 years)

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.

2.3 Gochar confirmation

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).

2.4 Varga refinement

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.

3 · Dataset and provenance

111 volunteers supplied birth data and dated life events, yielding 866 dated events across 18 categories.

Table 1 — Birth-time provenance and precision
Attribute Valuen
Birth certificate60
Family janampatri51
Stated precision 1 minute92
Stated precision 5–15 minutes20
Events flagged "exact date"52%449
Birth years spanned1953–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.

4 · The metric: why raw hit rate is meaningless

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:

coverage c = Σ(w.end − w.start) / lifespan ratio R = P(event falls inside a listed window) / c

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.

5 · Result 1 — full engine, all events

R = 1.02 across 768 scored events Hit rate 10.7% against coverage 10.5%. The full four-stage engine performs at chance.
Table 2 — Per-event breakdown, full engine, all subjects
Eventn Hits Rate Coverage Ratio
Promotion411024.4%10.4%2.35
Second child51815.7%10.1%1.55
Job loss25416.0%10.4%1.54
Business29517.2%11.9%1.45
Engagement721013.9%10.9%1.28
First childbirth871112.6%10.2%1.24
First job65913.8%11.5%1.21
Marriage971111.3%10.7%1.06
Relocation3738.1%8.9%0.91
Property4337.0%10.0%0.70
Accident1616.2%9.6%0.65
Surgery3425.9%9.2%0.64
Foreign travel3226.2%10.3%0.61
Illness2214.5%10.2%0.45
Higher education6223.2%10.8%0.30
Job change4200.0%11.0%0.00
Separation700.0%9.8%0.00
Third child600.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.

6 · Result 2 — permutation control

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.

Table 3 — True versus permuted pairing
Pairing Hits Rate Coverage Ratio
True (chart with own events)82/76810.7%10.5%1.02
Permuted (chart with stranger's events)63/7688.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.

7 · Result 3 — split-half on the best events

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.

Table 4 — Exploration versus held-out half. Selection was made on the exploration half only.
Event Exploration R Held-out R Change
Marriage1.081.05−0.03
First child1.151.30+0.15
Second child3.280.60−2.68
Combined1.511.04−0.47
Second child: 3.28 → 0.60 The exploration half's headline finding was 6 hits from 19 subjects. On the sealed half it fell below chance. This is the clearest demonstration in the study of why held-out validation is not optional.

8 · Result 4 — a single sharp classical claim

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%.

24.1% of marriages occurred in Venus or Jupiter mahadasha (held-out) Against a 30.0% baseline — a ratio of 0.80. Marriages occurred in the karaka's own periods less often than chance, not more.
Table 5 — Mahadasha lord at marriage, all 97 marriages. Expected % is the lord's share of the 120-year cycle.
Mahadasha lord Observed Obs % Exp % Ratio
Sun1010.3%5.0%2.06
Rahu2929.9%15.0%1.99
Mars99.3%5.8%1.59
Jupiter1515.5%13.3%1.16
Mercury1111.3%14.2%0.80
Venus (karaka)1010.3%16.7%0.62
Moon55.2%8.3%0.62
Ketu33.1%5.8%0.53
Saturn55.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.

9 · Result 5 — per-subject calibration

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:

θ = (w_rules, w_occupies, w_aspects, w_karaka, w_obstruct, w_dispositor, floor) minimise Q(θ) = (1/|K|) Σ e ∈ K rank(e; θ) / |W|

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.

Table 6 — Prediction of a held-out fourth event, n = 92
Condition Hit rate Coverage Ratio
Calibrated on 3 known events12.0%9.8%1.22
Uncalibrated (fixed weights)13.0%10.3%1.26
Calibrated, applied to a stranger's chart11.0%
Calibration did not improve prediction R = 1.22 calibrated versus 1.26 uncalibrated — within noise of each other, and both short of the 1.30 threshold registered before the run. A chart calibrated on one person's events predicted a stranger's event at the same age nearly as well (11.0% versus 12.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.

10 · What this study can and cannot rule out

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.