Technical reference
Calculation Reference
This page is the compact specification for the current public birth-chart calculation profile. It describes implemented rules, not general astrology tradition or a promise about unavailable inputs.
Editorial standards overseen by Luis PhamMethodology
Zodiac framework
The current web profile is Western modern v1: tropical zodiac, true node and Placidus houses by default. Zodiac sign boundaries are the twelve 30-degree tropical sectors starting at 0° Aries.
| Property | Current value |
|---|---|
| Profile | western-modern-v1 |
| Zodiac | Tropical |
| Default house system | Placidus |
| Node type | True node |
| Chart schema | 1.3.0 |
Ephemeris and coordinates
Planetary, lunar, node, Chiron, house and angle calculations use Swiss Ephemeris through the `pyswisseph` binding. The package declares `pyswisseph>=2.10.3.2`; the web source does not claim a tighter runtime binding version here.
The engine accepts geographic latitude in [-90, 90], longitude in [-180, 180], an IANA timezone and an optional altitude. Altitude is stored but is not applied to positions or houses. Place names are resolved by the website before coordinates reach the package.
Supported bodies and points
The natal body set contains the following IDs. Derived points are separate outputs and are only present when their required geometry is available.
| Category | Implemented values |
|---|---|
| Bodies | Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto |
| Nodes and minor body | True Node, Mean Node, Chiron |
| Angles | Ascendant, Midheaven, Descendant, IC |
| Derived points | Vertex, Part of Fortune when geometry allows |
| Derived facts | Big Three, Moon phase, element/modality balances and other profile-derived values |
House systems
The engine library contains more house-system implementations than the public web natal API exposes. The current website selector exposes Placidus, Whole Sign and Equal. Placidus and Koch are undefined beyond the polar circles; the engine raises an explicit error instead of silently changing systems.
| System | Engine library | Web natal API |
|---|---|---|
| Placidus | Supported; polar-limited | Supported and default |
| Whole Sign | Supported | Supported |
| Equal | Supported | Supported |
| Koch | Supported; polar-limited | Not exposed |
| Porphyry, Campanus, Regiomontanus, Alcabitius, Topocentric, Morinus, Meridian | Supported by engine registry | Not exposed |
Aspect types and orbs
Natal aspects use the versioned `modern-major-v1` profile. An aspect is included when the shortest angular separation falls within the configured orb. Applying/separating phase is derived from relative motion; it is not a user-entered label.
| Aspect | Exact angle | Orb |
|---|---|---|
| Conjunction | 0° | 8° |
| Sextile | 60° | 5° |
| Square | 90° | 7° |
| Trine | 120° | 7° |
| Opposition | 180° | 8° |
Synastry and relationship calculations
Synastry compares two already-calculated natal charts. It can produce directional cross-chart aspects, house overlays when the receiving chart has houses, and body-to-angle interactions when the target chart has angles. A missing birth time removes the corresponding house and angle facts rather than adding substitutes.
Synastry uses a separate `synastry-major-v1` profile: conjunction 7°, sextile 3°, square 6°, trine 6° and opposition 7°. Cross-chart phase is indeterminate by default because two natal charts do not share a physical timeline. Composite charts use the natal aspect profile.
Timezone and local time
The engine requires an IANA timezone and converts a local date/time with the runtime's `zoneinfo` data. Historical offsets and daylight-saving rules are applied for that date. Spring-forward gaps raise `NONEXISTENT_LOCAL_TIME`; fall-back overlaps raise `AMBIGUOUS_LOCAL_TIME` unless an explicit fold is supplied.
Unknown birth time
Unknown time must be explicit. The engine resolves the start of the supplied local date for body calculation, emits `UNKNOWN_BIRTH_TIME`, and does not present that midnight as the actual birth time.
| Output | Behavior |
|---|---|
| Planetary bodies | Computed at local-date start; Moon sign/degree may vary across the day |
| Ascendant, MC, DSC, IC | Omitted |
| House cusps and body houses | Omitted / empty |
| Rising sign | Unavailable |
| Moon sign in the web product | Shown as stable only after an interval check; otherwise possible signs are marked ambiguous |
Version reference
Current web pin: v1.12.1. Calculation engine: 1.12.1. Installable package: 1.12.2. Chart schema: 1.3.0. See the open-source engine (opens in a new tab), PyPI package (opens in a new tab) and archived release (opens in a new tab).