Zodiacal Releasing (Aphesis) #
The ZodiacalReleasingFactory computes zodiacal releasing (aphesis), a Hellenistic time-lord technique (Vettius Valens). Periods unfold from a Lot’s sign in zodiacal order: each sign rules for its “general years”, subdividing into months, days and finer levels, with the “loosing of the bond” jump applied as the sequence circles back. Peak (angular) periods are marked relative to the Lot of Fortune.
A known birth time is required (the technique is built from the Ascendant and the Lots).
Basic Usage #
from kerykeion import AstrologicalSubjectFactory, ZodiacalReleasingFactory
# Offline mode: explicit coordinates, no GeoNames lookup
subject = AstrologicalSubjectFactory.from_birth_data(
"Jane", 1990, 6, 15, 12, 0,
lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False,
)
zr = ZodiacalReleasingFactory.from_subject(subject, lot="fortune", levels=2, target_date="2026-06-04")
print(zr.lot_sign, len(zr.periods), "top-level periods")
for period in zr.periods:
print(period)
Methods #
from_subject(subject, *, lot="fortune", levels=2, target_date=None, life_cap_years=...) #
Build the zodiacal-releasing periods for a subject.
| Parameter | Type | Default | Description |
|---|---|---|---|
subject |
AstrologicalSubjectModel |
– | The natal chart (requires a known birth time / Ascendant). |
lot |
"fortune" / "spirit" |
"fortune" |
Which Lot to release from. |
levels |
int | 2 | Subdivision levels to compute (1–4). L1/L2 are built in full; deeper levels only along the target-date path. |
target_date |
str (ISO YYYY-MM-DD) or None |
None | Date used to mark the current period chain. When omitted, only full levels (≤ 2) are built. |
life_cap_years |
int | 100 | How far the L1 timeline extends, in years of life (DEFAULT_LIFE_CAP_YEARS). |
When target_date falls beyond life_cap_years, the L1 timeline is extended to
cover the target date plus a ten-year margin, so the current path is always
resolvable. A shorter cap is never applied in that case.
Returns: ZodiacalReleasingModel
Raises: KerykeionException for an unknown lot; an unresolvable Lot
(missing birth time, so no Ascendant/Sun/Moon); an unparseable target_date; a
timezone-aware target_date (pass a bare ISO date such as "2026-06-04"); or a
subject with no single moment in time to anchor the timeline — a midpoint
composite. Returns and Davison charts are accepted: they resolve through their
ISO timestamp.
Data Models #
ZodiacalReleasingModel #
| Field | Type | Description |
|---|---|---|
lot |
str | The Lot released from ("fortune" / "spirit"). |
lot_sign |
str | Sign of the Lot (the L1 starting sign). |
lot_degree |
float | Absolute longitude of the Lot in the subject’s zodiac. |
periods |
list[ZRPeriodModel] |
The top-level (L1) periods, each with nested levels. |
current_path |
list[ZRPeriodModel] |
The chain of active periods (L1→Ln) at target_date, when one was supplied. |
ZRPeriodModel #
One period at a given level of subdivision. Periods nest: an L1 (years) period contains L2 (months) sub-periods, and so on.
| Field | Type | Description |
|---|---|---|
sign |
str | Three-letter code of the sign ruling the period ("Ari" … "Pis"). |
ruler |
str or None | Traditional (domicile) ruler of that sign. |
level |
int | Subdivision level (1 = years, 2 = months, 3 = days, …). |
start |
str | Start date (ISO YYYY-MM-DD). |
end |
str | End date (ISO YYYY-MM-DD). |
years |
float | Nominal length in years at this level (the sign’s general years divided by 12 ** (level - 1)). |
is_angular |
bool | True for a peak period: the sign is angular (1st/4th/7th/10th) from the natal Lot of Fortune, the reference used for every released lot. |
is_loosing_the_bond |
bool | True when the period begins after a “loosing of the bond” jump to the opposite sign. |
subperiods |
list[ZRPeriodModel] |
Nested sub-periods one level deeper (possibly empty). |