Astrology18 MIN READ43 / 116

Vedic Strength Systems — Specification (V-06)

Status: Draft specification · Task: V-06 · Updated: 2026-10-25 (revision 2: §3.4 reductions, §4.5 kala/chesta formulas) · Implements nothing: no runtime export is added by this document.

This document defines the strength systems the Vedic engine may later calculate, the inputs each factor needs, and which of those inputs Composer can already supply. It is the gate for V-07 ashtakavarga and V-19 audited strength system. A system or factor not fully defined here stays unadvertised.

1. Assumptions pending upstream tasks

V-06 formally follows V-01 (profiles) and reads Composer facts defined by C-01. Neither is frozen, so this specification uses the assumed identifiers below. When V-01/C-01 land, rename these identifiers to the frozen ones; no formula or table in this document depends on the spelling.

Assumed identifier Meaning Reconcile with
Profile parashari-lahiri@1 Sidereal Lahiri ayanamsa, geocentric positions (from Earth’s centre), true nodes, whole-sign houses V-01 profile catalog
ChartSnapshot.bodies[].position Binder-normalized longitude (deg), speed (deg/day or null) C-01 BodyFacts
ChartSnapshot.bodies[].sign Binder sign id and degree within sign C-01 SignFacts
ChartSnapshot.angles Ascendant, midheaven, twelve cusps, ARMC (right ascension of the meridian); null when position-only C-01 snapshot
RiseSetResult Sunrise, next sunrise, optional sunset as UTC epoch ms C-01 port; real data needs B-01 and C-05
VargaChart(Dn) Sign id per body and lagna for varga (divisional chart) n V-03/V-04 result
DignityState Own (domicile)/exalted/debilitated/moolatrikona and compound relationship V-02 result

Rule-family ids such as strength.shadbala.naisargika are proposed names for V-17 bundles.

2. Systems in scope

System Status after V-06 Ships in
Ashtakavarga (BA…/…/…/research/astrology-vocabulary/SAV) Defined (§3); table transcription is a review gate V-07
Shadbala, independent factors Defined (§4.3); formula fixtures in §6 V-19 (first slice)
Shadbala, full six-fold total Defined but gated on missing upstream capabilities (§5) V-19 only after the gates clear
Vimshopaka bala Not defined Unadvertised
Ishta/Kashta phala Not defined; depends on full Shadbala Unadvertised
Bhava bala Not defined Unadvertised

Strength results always expose individual factors. An aggregate is returned only when every factor it sums is present (§4.4). Neither zero nor an estimate stands in for a missing factor.

3. Ashtakavarga

3.1 Definition

Eight contributors — Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn and lagna — each give a bindu (benefic point) to specific signs counted from the contributor’s own D1 sign. The seven Bhinna Ashtakavargas (BAV) belong to the seven planets; their sign-wise sum is the Sarvashtakavarga (SAV).

offset(contributor, sign) = ((signIndex(sign) − signIndex(contributor)) mod 12) + 1   // 1–12, inclusive count
BAV[target][sign] = count of contributors c where offset(c, sign) ∈ table[target][c]
SAV[sign]         = Σ over the seven targets of BAV[target][sign]

Sign indices come from Binder’s sign id (aries = 0 … pisces = 11). Ashtakavarga never reads a longitude degree, so sign-boundary behavior is entirely Binder’s half-open rule.

3.2 Inputs

Input Source Missing behavior
D1 sign of the seven planets ChartSnapshot.bodies[].sign Request fails: every BAV needs all eight contributors
Lagna sign Sign of ChartSnapshot.angles.ascendant via the shared sign primitive Position-only snapshot cannot produce ashtakavarga
Contribution table Rule family strength.ashtakavarga.contributions Bundle load fails
Reduction flag Profile convention C17: none, trikona, trikona+ekadhipatya Profile admission fails

Rahu and Ketu (the lunar nodes) are not contributors and have no BAV: querying their BAV returns null (unavailable), never zero.

3.3 Contribution table schema and invariants

The table is target → contributor → sorted unique offsets (1–12): 7 targets × 8 contributors. Load-time validation rejects a missing cell, duplicate offset, offset outside 1–12 or wrong total.

Target BAV Sun Moon Mars Mercury Jupiter Venus Saturn Total
Expected bindus 48 49 39 54 56 52 39 337

The unreduced SAV total is always 337 because each BAV total is independent of planetary placement. That invariant applies before any reduction; trikona and ekadhipatya shodhana change totals, so V-07 checks 337 only at the unreduced stage and records the reduction stage.

Reference row — Sun’s BAV (offsets from each contributor), used for fixture F-AV1 below:

Contributor Offsets Count
Sun 1, 2, 4, 7, 8, 9, 10, 11 8
Moon 3, 6, 10, 11 4
Mars 1, 2, 4, 7, 8, 9, 10, 11 8
Mercury 3, 5, 6, 9, 10, 11, 12 7
Jupiter 5, 6, 9, 11 4
Venus 6, 7, 12 3
Saturn 1, 2, 4, 7, 8, 9, 10, 11 8
Lagna 3, 4, 6, 10, 11, 12 6

Review gate: the remaining six BAV tables must be transcribed from one named edition of Brihat Parashara Hora Shastra (research §9), with edition and chapter recorded in the bundle manifest. The per-BAV totals above are the load-time check; V-07 does not start fixtures until a second reviewer has compared the transcription.

3.4 Reductions

Stage Applies Invariant
unreduced Always computed first SAV = 337
trikona When profile C17 ≠ none Per BAV, per trine group; no total invariant
ekadhipatya After trikona, when selected Per BAV, per dual-lordship pair; no total invariant

Each result names its stage. Both reductions run on each of the seven BAVs separately, never on the SAV. The procedures below follow B. V. Raman, Ashtakavarga System of Prediction, as summarized in [R4], and agree with BPHS ch. 67–68 (Santhanam, vol. 2) once E4 is read as below. Both are implemented and parashari-lahiri@2 selects them.

Trikona shodhana. Trine groups: fire (aries, leo, sagittarius), earth (taurus, virgo, capricorn), air (gemini, libra, aquarius), water (cancer, scorpio, pisces). For each group, apply the first matching case:

Case Rule Example
T1 Exactly one figure is 0 No change: 3, 4, 0 → 3, 4, 0
T2 Two figures are 0 All become 0: 5, 0, 0 → 0, 0, 0
T3 All three equal All become 0: 3, 3, 3 → 0, 0, 0
T4 Otherwise Subtract the smallest from each: 5, 4, 5 → 1, 0, 1

Ekadhipatya shodhana. Runs on the trikona-reduced figures, for the five pairs ruled by one planet: Mars (aries, scorpio), Venus (taurus, libra), Mercury (gemini, virgo), Jupiter (sagittarius, pisces), Saturn (capricorn, aquarius). Cancer and Leo are never reduced. “Occupied” means a natal planet stands in the sign; convention AV-V1 selects whether Rahu and Ketu count (default: the seven planets only, as in [R4]). First matching case:

Case Occupancy Figures Rule
E1 Both signs occupied any No change
E2 any One figure is 0 No change
E3 One occupied Occupied figure greater or equal Unoccupied figure becomes 0
E4 One occupied Occupied figure smaller Unoccupied figure is lowered to the occupied figure
E5 Neither occupied Equal Both become 0
E6 Neither occupied Unequal The larger is lowered to the smaller

[R4] states E4 as “raise the unoccupied figure to match”, but in that case the unoccupied figure is already the larger one; BPHS ch. 68’s “made equal” therefore lowers it, as implemented.

Fixture F-AV4 (from [R4], Sun BAV of the Standard Horoscope): fire 5, 4, 5 → 1, 0, 1; earth 3, 4, 0 → unchanged; air 5, 3, 5 → 2, 0, 2; water 4, 5, 5 → 0, 1, 1.

3.5 Transit use

A transiting body’s sign reads the natal BAV/SAV value for that sign. Moving positions never recompute the tables (V-07, V-09).

4. Shadbala

Shadbala is six groups of factors in virupas (shashtiamsas); 60 virupas = 1 rupa. It is defined for the seven planets only; Rahu, Ketu and lagna have no Shadbala.

4.1 Factor catalog

Group Factor Formula (virupas) Variants (profile/rulebook)
Sthana Uchcha arc(longitude, debilitationPoint) / 3, where arc is the shortest separation (0–180) Exaltation degrees table (C12)
Sthana Saptavargaja Σ over D1, D2, D3, D7, D9, D12, D30 of the dignity score in that varga Score scale SB-V1; varga schemes (C9, C10)
Sthana Ojhayugma 15 in D1 + 15 in D9 when the sign parity matches the planet’s preference Parity table
Sthana Kendradi 60 in a kendra, 30 in a panaphara, 15 in an apoklima house House frame SB-V2
Sthana Drekkana 15 when the planet occupies its gender’s decanate: male 1st, neutral 2nd, female 3rd Gender table
Dig Dig (180 − arc(longitude, strongPoint)) / 3 Strong points SB-V3
Kala Nathonnata Night planets: 60 × proximity to midnight; day planets: inverse; Mercury 60 Needs sunrise/sunset
Kala Paksha Benefics: arc(moon, sun) / 3; malefics: 60 − arc(moon, sun) / 3 Benefic classification, Moon doubling SB-V4
Kala Tribhaga 60 to the lord of the current third of day or night; Jupiter always 60 Needs sunrise/sunset
Kala Abda, Masa, Vara, Hora 15, 30, 45, 60 to the respective lords Year/month lord epoch SB-V5
Kala Ayana From the planet’s declination (angle north or south of the celestial equator) Needs declination
Kala Yuddha Transfer between combatants in planetary war Needs war rule (V-02) and disc diameters
Chesta Chesta From the chesta kendra (mean versus true longitude); Sun/Moon use substitutes Needs mean longitudes
Naisargika Naisargika Fixed: Sun 60, Moon 51.43, Venus 42.86, Jupiter 34.29, Mercury 25.71, Mars 17.14, Saturn 8.57 Constant table
Drik Drik Net of benefic minus malefic aspect values received Needs degree-based (sphuta) drishti values

Constant tables used above:

Planet Exaltation point Debilitation point Ojhayugma parity Drekkana gender Dig strong point (SB-V3 default)
Sun 10° Aries (10°) 10° Libra (190°) Odd Male Midheaven (10th)
Moon 3° Taurus (33°) 3° Scorpio (213°) Even Female Nadir (4th)
Mars 28° Capricorn (298°) 28° Cancer (118°) Odd Male Midheaven (10th)
Mercury 15° Virgo (165°) 15° Pisces (345°) Odd Neutral Ascendant (1st)
Jupiter 5° Cancer (95°) 5° Capricorn (275°) Odd Male Ascendant (1st)
Venus 27° Pisces (357°) 27° Virgo (177°) Even Female Nadir (4th)
Saturn 20° Libra (200°) 20° Aries (20°) Odd Neutral Descendant (7th)

All numbers above are rulebook rows, not code constants (chart-core rule 5). Naisargika values are 60 × k / 7 for k = 7 … 1; the table stores the exact fractions and rounds only at output.

4.2 Named variants

Id Variant Options seen Proposed default
SB-V1 Saptavargaja dignity scores 45/30/20/15/10/4/2 or 45/30/22.5/15/7.5/3.75/1.875 (moolatrikona, own, great friend, friend, neutral, enemy, great enemy) integer in parashari-lahiri@2
SB-V2 House frame for kendradi Whole-sign houses or bhava (cusp) houses Profile house frame
SB-V3 Dig strong point Angle longitude (ascendant/MC and their opposites) or bhava madhya of houses 1/4/7/10 Angle longitude
SB-V4 Moon’s paksha bala Single or doubled doubled in parashari-lahiri@2
SB-V5 Abda/masa lord epoch Day count (ahargana) from a named epoch; formula in §4.5 surya-siddhanta-1860
SB-V6 Apparent midnight for nathonnata Midpoint of sunset and next sunrise, or local mean midnight Midpoint of sunset and next sunrise
SB-V7 Hora length Equal 60-minute horas from sunrise, or day/12 and night/12 Equal 60-minute horas from sunrise ([R1] notes to v.13)

A variant without a selected option makes its factor unavailable; the engine never picks one.

4.3 Input map and independent factors

Factor Required inputs Composer field or missing capability Independent?
Naisargika Planet id Constant Yes
Uchcha D1 longitude bodies[].position.longitude Yes
Kendradi House of planet Whole sign: bodies[].sign + lagna sign; bhava: bodies[].house Yes (needs houses)
Drekkana Degree within sign bodies[].sign.degree Yes
Dig Longitude, angle longitudes bodies[].position.longitude, angles.ascendant, angles.midheaven Yes (needs houses)
Paksha Sun and Moon longitudes, benefic classification bodies[].position.longitude; classification rule table Yes once SB-V4 is selected
Ojhayugma D1 and D9 sign bodies[].sign; D9 from V-03 After V-03
Saptavargaja Sign in seven vargas, compound relationships V-03/V-04 vargas, V-02 relationships After V-02, V-04
Nathonnata, Tribhaga Birth instant, sunrise, sunset Missing: riseSet (B-01 → C-05) No
Vara, Hora Weekday and hour lord from sunrise Missing: riseSet (B-01 → C-05) No
Abda, Masa Year/month lord Missing: SB-V5 definition plus riseSet No
Ayana Declination binder.declinations → declination port No (needs the port)
Chesta Mean longitude, seeghrocca binder.meanLongitudes → mean-longitude port No (needs the port)
Yuddha War pairs, disc diameters Diameters: binder.discDiameters → disc-diameter port. Missing: V-02 war outcome No
Drik Degree-based aspect values Base curve: resolveSphutaDrishti. Missing: reviewed special aspects and aggregation No

A speed-dependent factor treats speedLongitude: null as unavailable, never as zero.

4.4 Completeness and result shape

A strength result for one planet lists every requested factor as either { factor, virupas, ruleIds } or { factor, unavailable: reason }. Group and total sums are present only when every member factor is present:

  • Group complete: all factors of that group are available → group sum returned.
  • Shadbala complete: all six groups complete → total virupas, total rupas and the planet’s required minimum are returned (rule table strength.shadbala.minimums, e.g. Sun 390, Moon 360, Mars 300, Mercury 420, Jupiter 390, Venus 330, Saturn 300 virupas — subject to the review gate).
  • Otherwise complete: false with the missing factor list; no total, ratio or rank is published.

The first V-19 slice may advertise exactly the “Independent: Yes” factors as shadbala-partial; it must not advertise shadbala.

4.5 Kala and chesta formulas (revision 2)

Source [R1]: Brihat Parashara Hora Shastra ch. 27 with R. Santhanam’s notes (Ranjan Publications, vol. 1). Verse numbers are Santhanam’s. Each formula below is now defined, so each factor computes as soon as its input gate opens; until then it stays missing-capability.

Nathonnata (v. 8–9). Unnata = time between apparent midnight (SB-V6) and the birth instant, in ghatis (1 ghati = 24 minutes), at most 30. Nata = 30 − unnata.

Planets Virupas
Moon, Mars, Saturn (night) 2 × nata
Sun, Jupiter, Venus (day) 60 − 2 × nata
Mercury 60 always

Tribhaga (v. 12). Divide daytime [sunrise, sunset) and night [sunset, next sunrise) each into three equal parts (half-open, integer milliseconds as in muhurta). Jupiter always gets 60; one other planet gets 60 and the rest 0:

Part Day Night
First Mercury Moon
Second Sun Venus
Third Saturn Mars

Abda, masa, vara, hora (v. 13). The lord of each period gets 15, 30, 45 and 60 virupas; others get 0. Weekday rulers are Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn for Sunday to Saturday. With A = days elapsed from the SB-V5 epoch to the birth day:

Lord Rule
Abda (year) Weekday ruler of (floor(A / 360) × 3 + 1) mod 7 (1 = Sunday … 0 = Saturday)
Masa (month) Weekday ruler of (floor(A / 30) × 2 + 1) mod 7
Vara (day) Ruler of the panchang vara (sunrise to sunrise)
Hora Hora ruler at birth: the first hora after sunrise belongs to the vara ruler, each next hora to the next planet in the cycle Sun, Venus, Mercury, Moon, Saturn, Jupiter, Mars (the 6th planet onward in weekday order)

The epoch constant [R1] cites (Burgess’s Surya Siddhanta) is 714,404,108,573 days from creation to 1 January 1860. The base year is fixed by F-SB15: within 1840–1900 only 1860 reproduces all three of its lords (abda Jupiter, masa Venus, Friday), and the Kali-yuga epoch plus Burgess’s creation-to-Kali count independently lands in early 1860. Profile value surya-siddhanta-1860. Fixture F-SB15 pins the arithmetic: [R1]'s worked example (birth 1 June 1984, a Friday) gives A-quotient 181 → 181 × 3 + 1 = 544, 544 mod 7 = 5 → Thursday → Jupiter is the abda lord; the masa and vara lords are Venus.

Ayana (v. 15–17). With declination δ (kranti) in degrees and ε = 23°27′:

ayana = (ε + s × |δ|) × 60 / (2ε)        // ≈ (23.45 ± |δ|) × 1.2793, range 0–60
s = +1 for Sun, Mars, Jupiter, Venus with northern δ; Moon, Saturn with southern δ; Mercury always
s = −1 otherwise
Sun's ayana is doubled

[R1] uses the fixed 23°27′, not the obliquity of date (the current tilt of the ecliptic to the equator); the constant is a rulebook row.

Chesta (v. 24–25), Mars to Saturn only. Needs, per planet, its mean longitude (madhya) and its seeghrocca from the mean-longitude port, plus the Binder true longitude:

kendra = seeghrocca − (madhya + true) / 2, normalized to 0–360
if kendra > 180: kendra = 360 − kendra
chesta = kendra / 3                      // virupas, 0–60

Sun’s chesta equals its ayana bala and Moon’s equals its paksha bala (v. 18 notes); these need no extra input. The MeanLongitudePort reading carries seeghrocca (null for Sun and Moon).

Minimums (v. 32–36), retained for completeness checks. Totals: Sun 390, Moon 360, Mars 300, Mercury 420, Jupiter 390, Venus 330, Saturn 300 virupas (unchanged from §4.4).

4.6 Sources

Id Source Used for
R1 R. Santhanam (tr.), Brihat Parashara Hora Shastra, vol. 1, ch. 27 (Ranjan Publications), scan §4.5 formulas, minimums
R4 VedAstro, Mastering Ashtakavarga part 3, summarizing B. V. Raman §3.4 reductions (secondary; review against BPHS ch. 67–68)

5. Gates before full Shadbala

Gate Unblocks Owner
Binder rise/set with Hindu definition Nathonnata, Tribhaga, Vara, Hora (formulas defined, §4.5) B-01 → C-05
Declination in Binder positions Ayana (formula defined, §4.5) Done: binder.declinations
Mean longitude and seeghrocca read Chesta (formula defined, §4.5) Done: binder.meanLongitudes
SB-V5 epoch constant verified Abda, Masa (formula defined, §4.5) Strength reviewer
V-02 planetary war rule (diameters done: binder.discDiameters) Yuddha V-02, rulebook
Reviewed sphuta drishti special aspects and drik aggregation (base curve done) Drik V-18 extension
Independent reference-chart fixtures Every advertised factor V-19 reviewer

6. Formula fixtures

These fixtures check each formula against a hand calculation. They are not independent reference-chart fixtures; V-19 still needs published charts with known Shadbala values.

Id Input Expected
F-SB1 Sun at 10° Aries (10°) Uchcha 60
F-SB2 Sun at 10° Cancer (100°) Uchcha 30 (90° from 190°)
F-SB3 Sun at 10° Libra (190°) Uchcha 0
F-SB4 Venus at 2° Aries (2°) Uchcha 58.333… (arc from 177° is 175°)
F-SB5 Jupiter at ascendant longitude 123.4° Dig 60
F-SB6 Jupiter at 303.4° with ascendant 123.4° Dig 0
F-SB7 Saturn 90° from the descendant Dig 30
F-SB8 Mars in whole-sign house 10 / house 2 / house 3 Kendradi 60 / 30 / 15
F-SB9 Moon at 25° of a sign / Moon at 9.999° / Mercury at 10° Drekkana 15 / 0 / 15 (10° starts the second decanate)
F-SB10 Sun 0°, Moon 180° Paksha: Jupiter 60, Saturn 0
F-SB11 Sun 0°, Moon 0° Paksha: Jupiter 0, Saturn 60
F-SB12 Any chart Naisargika matches the constant table exactly; output rounding only
F-SB13 Sun with null speed, factor Chesta requested unavailable: missing-capability, no group or total
F-SB14 Ashtakavarga contribution table with one Sun cell offset removed Bundle load fails: Sun total 47 ≠ 48
F-AV1 All seven planets and lagna in Aries Sun BAV from Aries onward: 3, 3, 3, 4, 2, 5, 4, 3, 5, 6, 7, 3 (sum 48)
F-AV2 Rahu BAV queried null
F-AV3 Any complete unreduced chart SAV total 337

Boundary rules: arc uses the shared angular-separation primitive (no second implementation); decanate boundaries at 10° and 20° are half-open like sign boundaries.

7. Out of scope

  • Interpretation of strong or weak planets, remedies or prose.
  • Bhava bala, Vimshopaka, Ishta/Kashta phala and KP significator strength.
  • Any astronomical quantity not returned by Binder; this document lists such gaps, it does not fill them.