All posts
·Shubh Time Teamengineeringaccuracyephemeris

Why We Calculate Every Chart Twice

Every planet position matters

In Vedic astrology, a degree of difference in planetary longitude can change which nakshatra the Moon occupies. That changes the Vimshottari Dasha sequence. That changes the Mahadasha lord. That changes which remedies are recommended, which Muhurta windows score highest, and which life periods are emphasized in a chart reading.

Most astrology software calculates planetary positions once and moves on. If the calculation is wrong — due to an engine bug, an ayanamsa rounding error, or a timezone edge case — the entire downstream analysis is silently incorrect.

We decided that wasn't acceptable.

Two engines, one truth

Shubh Time's chart calculation service uses two independent engines:

Swiss Ephemeris (SwissEph) — The gold standard in astronomical computation. Used by research astronomers and professional astrology software worldwide. Sub-arcsecond accuracy for all nine Vedic grahas (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu). Runs locally with no external dependency.

AstrologyAPI — An independent third-party calculation service. Uses its own ephemeris data and reduction pipeline. Serves as a cross-reference validation source.

When you request a birth chart through the Shubh Time API, the system attempts calculation via the primary engine. If that engine is unavailable (network issue, circuit breaker open), the fallback engine calculates the chart. The result always comes from a real ephemeris calculation — never an approximation, never a lookup table.

What "sub-arcsecond" means in practice

One arcsecond is 1/3600th of a degree. The Moon moves through all 27 nakshatras in roughly 27.3 days, spending about 1 day in each nakshatra (covering ~13.3 degrees). A sub-arcsecond error means the Moon's position is accurate to within 0.00028 degrees — less than one ten-thousandth of a nakshatra's span.

For context: if you're timing a wedding using Muhurta and the Moon needs to be in Rohini nakshatra, a sub-arcsecond calculation ensures we know the Moon is in Rohini — not at the boundary where it might be in Mrigashira instead.

This level of precision matters most at nakshatra boundaries (sandhi), sign transitions, and when determining whether a planet is in the final degrees of debilitation.

The Lahiri ayanamsa

All calculations use the Lahiri ayanamsa — the standard adopted by the Indian government's Calendar Reform Committee and used by the vast majority of practicing Jyotishis. This isn't a default we chose for convenience; it's the ayanamsa that aligns with the Parashari tradition our scoring methodology is built on.

For practitioners who use Raman, KP, or Fagan-Bradley ayanamsa: we acknowledge the difference. Phase 1 uses Lahiri exclusively. Additional ayanamsa options may be offered in future releases based on practitioner feedback.

How the 10-step scoring pipeline uses these positions

Once the birth chart is calculated, the Muhurta scoring engine runs a 10-step pipeline on every candidate time window:

| Step | What It Evaluates | Why It Matters | |------|-------------------|----------------| | 1. Tithi | Lunar day quality | Certain lunar days are classically favorable for specific events | | 2. Vara | Weekday suitability | Thursday for marriage, Tuesday for courage-requiring events | | 3. Nakshatra | Lunar mansion quality | The Moon's nakshatra is the single most important Muhurta factor | | 4. Yoga | Sun+Moon longitude combination | 27 yogas, each with distinct qualities | | 5. Karana | Half-tithi unit | Vishti (Bhadra) karana is universally avoided | | 6. Panchaka | Nakshatra avoidance rules | Last 5 nakshatras carry specific risks for certain events | | 7. Rahu Kala | Inauspicious period exclusion | Rahu Kala, Yamaganda, and Gulika windows are hard blocks | | 8. Transit strength | Event lord's current dignity | Exalted event lord = strong timing; debilitated = weak | | 9. Lagna strength | Rising sign quality | Fixed signs for marriage, movable for business | | 10. Chandra Bala | Moon strength vs. natal Moon | Transit Moon's position relative to your birth Moon sign |

These 10 steps fold into 6 weighted score buckets:

| Bucket | Max Points | What Feeds It | |--------|-----------|---------------| | Panchaanga | 20 | Steps 1-5 (the five classical Panchanga elements) | | Nakshatra Fit | 15 | Step 3 (event-specific bonus) + Step 6 (Panchaka check) | | Transit Strength | 20 | Step 7 (exclusion) + Step 8 (event lord dignity + combustion) | | Dasha Harmony | 20 | Step 10 (Chandra Bala) + Paksha bonus (waxing vs. waning) | | Yogas | 15 | Beneficial planetary combinations (Guru Pushya, Sarvartha Siddhi, etc.) | | Lagna Strength | 10 | Step 9 (rising sign quality + malefic conjunction check) |

The weights are configurable per event type. Marriage prioritizes fixed-sign Lagnas and favorable Tithis. Career events weight Transit Strength and Dasha Harmony higher. Business launches emphasize movable-sign Lagnas and strong event lord transits.

The final score is 0-100, bucketed into five recommendation tiers:

  • 80-100: Highly auspicious
  • 60-79: Auspicious
  • 40-59: Neutral
  • 20-39: Inauspicious
  • 0-19: Highly inauspicious

What we don't do

We don't use machine learning to "predict" outcomes. The scoring engine is deterministic: same inputs, same score, every time. The methodology is classical — derived from texts like Muhurta Chintamani and Brihat Samhita — not trained on user behavior data.

We don't claim that a high score guarantees a good outcome, or that a low score means disaster. Muhurta is one input into a decision, not a substitute for judgment.

We don't hide the methodology. Every score breakdown is transparent — you can see exactly which steps contributed to the final number and why.

Try it yourself

When the API is live at api.shubhtime.app, you can calculate a birth chart and score any time window with a single POST request. The response includes the full score breakdown, so you can verify the methodology against your own understanding of the Panchanga.

curl -X POST https://api.shubhtime.app/v1/muhurta/windows \
  -H "Content-Type: application/json" \
  -d '{
    "eventType": "marriage",
    "dateRangeStart": "2026-04-01T00:00:00Z",
    "dateRangeEnd": "2026-04-30T23:59:59Z",
    "location": {
      "latitude": 19.076,
      "longitude": 72.8777,
      "timezone": "Asia/Kolkata"
    },
    "birthData": {
      "birthDateTimeUtc": "1990-03-15T01:12:00Z",
      "latitude": 19.076,
      "longitude": 72.8777,
      "timezone": "Asia/Kolkata"
    },
    "limit": 5
  }'

The engine scores every day in the range, returning the top windows sorted by score. Each window is exactly 48 minutes — 2 ghatikas, the classical Muhurta unit.

For practitioners

If you're a working Jyotishi and want to test these calculations against your own methods, we're looking for design partners. We want you to find where we're wrong — before anyone else does. Early access, no cost, no obligation beyond honest feedback.


Shubh Time is open source. The scoring algorithm, engine orchestration, and weight configuration are all inspectable in the repository.

Shubh Time is in private beta. Get early access to auspicious timing for the moments that matter.

Join waitlist