Reproducible Vedic astrology backtesting
Every lift figure on the Tempora calibration page is recomputable from public files. The calibration engine, the natal-chart records and the labelled event sets are all open. A reader who clones the repository can rerun the pipeline and obtain the same numbers. This is unusual in astrology and standard in any empirically grounded research field. The article walks through the inputs, the pipeline and the failure modes that a reproducibility discipline catches.
What reproducibility means in this framework
Reproducibility is an operational property. A claim is reproducible if a third party, given the published inputs and code, can independently regenerate the published outputs. The reproducibility is not "trust me to run my own code"; it is "here is the code, here are the inputs, here is the command, the output should match within stated tolerance".
For Tempora's calibrated lift table, reproducibility means three things together. The calibration engine that produces the lift figures is published. The natal chart records that anchor the calibration are published. The labelled event sets used to compute event-set hit rates are published. A reader who has all three can rerun the engine and obtain the same numbers within Monte Carlo seed variance.
This is the difference between publishing claims and publishing computations. Tempora publishes computations. The article on calibrated lift documents what the figures mean; this article documents how to produce them yourself.
The three open inputs
Every Tempora lift figure depends on three inputs. All three are published under the CC-BY 4.0 license.
The calibration engine. The engine module loads a natal chart record, evaluates the nine calibrated signatures on each event date in the labelled event set, generates 300 Monte Carlo random dates and scores them and computes per-signature lift as the ratio of event-set hit rate to baseline hit rate at the activation threshold. The engine is plain Python with the Swiss Ephemeris bindings (pyswisseph) handling planetary positions and the True Pushya Paksha ayanamsa for sidereal alignment.
The natal chart records. Each calibrated chart has a JSON record containing the date, time and timezone of the chart's birth moment, the planetary positions at that moment, the sidereal ayanamsa offset, the house cusps under the Whole Sign convention and the ascendant degree. The records live in the tools natals folder. They are deterministic outputs of Swiss Ephemeris computation against the documented birth moment; any other reader running the same Swiss Ephemeris call against the same moment obtains the same record.
The labelled event sets. Each chart's event set is a list of historically significant events, each with a date, a category and a source citation. Event sets currently range from four to fifteen events per chart. The selection process is the most subjective step in the pipeline; it is the input the audit discipline is hardest on.
How to run a backtest yourself
The reproducibility procedure is three commands. Clone the repository. Install Python dependencies including pyswisseph, numpy and pandas. Invoke the calibration module on a country code.