Try Astrologer API

Subscribe to support and grow the project.

Profections (Annual) #

ProfectionsFactory computes annual profections, a traditional timing technique that activates one house per year of life. Starting from the 1st house at birth, the profected house advances one house each birthday, cycling every 12 years. The sign on the activated cusp determines the Lord of the Year — the traditional domicile ruler of that sign.

The profection timeline follows the subject’s own house system: a whole-sign chart profects through whole signs by construction, while a Placidus chart profects through Placidus cusps.

BCE births are fully supported (astronomical year numbering), and birthday anniversaries on February 29 correctly roll to March 1 in common years.

Basic Usage #

from kerykeion import AstrologicalSubjectFactory, ProfectionsFactory

subject = AstrologicalSubjectFactory.from_birth_data(
    "Jane", 1990, 6, 15, 12, 0,
    lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
)

profections = ProfectionsFactory.from_subject(subject, target_date="2026-06-04")
print(f"Age {profections.current.age}: {profections.current.house}th house")
print(f"Sign: {profections.current.sign}, Lord: {profections.current.lord}")

Methods #

from_subject(subject, *, target_date=None, years_before=3, years_after=4) #

Build the profection years around a target date.

Parameter Type Default Description
subject AstrologicalSubjectModel The natal chart. Requires the twelve house cusps. BCE births are supported.
target_date str (ISO YYYY-MM-DD) or None None Date the “current” year is resolved against. Astronomical year numbering accepted (e.g. '-0550-10-07'). When omitted, today in the subject’s timezone.
years_before int 3 Past years to include in the table.
years_after int 4 Future years to include in the table.

Returns: ProfectionsModel

Raises: KerykeionException when cusps are missing, the target date is unparseable, or the target date precedes the birth date.

Data Models #

ProfectionsModel #

Field Type Description
current ProfectionYearModel The profection year containing the target date.
years list[ProfectionYearModel] Window of profection years (past and future around the current one).

ProfectionYearModel #

Field Type Description
age int Completed age the profection year begins at (0 = birth).
house int Profected house number (1-12), cycling every 12 years.
sign Sign Sign on the cusp of the profected house, in the subject’s house system.
lord ClassicalPlanet Traditional (domicile) ruler of that sign — the Lord of the Year.
year_start str ISO date (YYYY-MM-DD) the profection year begins (the birthday anniversary).
year_end str ISO date the profection year ends (the next anniversary).