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: falsewith 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.