Astro Natal Chart

Other

Calculates and interprets the natal chart by date, time and place of birth with the positions of planets, houses and main aspects.

Install

openclaw skills install astro-natal-chart

Astrology — Natal Chart

Engine: Swiss Ephemeris (pyswisseph 2.10.3.2)

This skill uses pyswisseph 2.10.3.2, the Python binding for the Swiss Ephemeris — the gold standard of astrological computation.

Why Swiss Ephemeris?

Compared to simplified formulas (e.g., Meeus approximations or fixed-position lookup tables):

FeatureSimplified formulasSwiss Ephemeris (pyswisseph)
Source dataMathematical approximationsNASA JPL DE431 ephemerides
Sun accuracy~0.5–1°~0.001°
Moon accuracy~1–5°~0.005°
Planet accuracy~1–15° (outer planets)~0.003°
House systemOften Static Equal / Whole SignIterative Placidus (swe.houses_ex)
Retrograde detectionBasic sign-basedPrecise velocity (FLG_SPEED)
Time coverageLimited (~0–3000 AD)13201 BC – AD 17191
ComputationAnalytical approx.Numerical integration

In practice this means:

  • Outer planets (Uranus, Neptune, Pluto) — simplified formulas can be off by 10–15°, Swiss Ephemeris keeps error within 0.003°
  • Moon position — up to error vs 0.005° with SWE
  • House cusps — iterative Placidus gives exact critical-point cusps, unlike analytical approximations
  • Retrograde — detected from true velocity sign, not interpolated

Library info

  • Package: pyswisseph v2.10.3.2 (build 20230604)
  • License: AGPL-3.0 (commercial use permitted with open-source compliance; otherwise GPL-2.0)
  • The .pyd file is bundled locally in scripts/ — no system-wide installation needed
  • No external dependencies — libswe and sqlite3 are compiled into the .pyd; works out of the box on Python 3.10+
  • Windows .pyd compiled with MSVC 14.44 (Build Tools 2022), tested with Python 3.14.5

Input Parameters

  1. Birth date — DD.MM.YYYY
  2. Birth time — HH:MM (local time)
  3. Birth place — city name

If the birth time is unknown, use 12:00 (noon), but warn the user that house cusps and ASC will be approximate.

Calculation Algorithm

  1. Determine city coordinates from the built-in database (50+ cities)
  2. Determine timezone and UTC offset
  3. Convert local time to UTC, then to Julian Day via swe.julday()
  4. Calculate all planets via swe.calc_ut() with FLG_SWIEPH | FLG_SPEED
  5. Calculate house cusps via swe.houses_ex() (Placidus system)
  6. Calculate aspects (conjunction, opposition, trine, square, sextile, and minor)
  7. Generate interpretation

Execution

python scripts/natal_chart_swe.py 24.04.1983 06:00 Ижевск

Output Format

🌟 NATAL CHART  [Swiss Ephemeris vX.XX]
📅 Date: [date]  ⏰ Time: [time]  📍 Place: [city]
🌍 Coordinates: [lat], [lon]  🕐 Timezone: [tz] (UTC+/-offset)
📊 JD: [julian_day]

⬆️ ASC — [sign] [degrees]′
🜨 MC — [sign] [degrees]′

PLANETS:
☀️ Sun — [sign] [degrees]′ [house] [℞] (speed °/day)
🌙 Moon — [sign] [degrees]′ [house]
☿ Mercury — [sign] [degrees]′ [house]
♀ Venus — [sign] [degrees]′ [house]
♂ Mars — [sign] [degrees]′ [house] [℞]
♃ Jupiter — [sign] [degrees]′ [house] [℞]
♄ Saturn — [sign] [degrees]′ [house] [℞]
♅ Uranus — [sign] [degrees]′ [house] [℞]
♆ Neptune — [sign] [degrees]′ [house] [℞]
♇ Pluto — [sign] [degrees]′ [house] [℞]

HOUSES:
I house — [sign] [degrees]′
... (all 12 houses)

MAJOR ASPECTS:
☌ Conjunction: [planet]-[planet] (orb: X.X°)
□ Square: [planet]-[planet] (orb: X.X°)
△ Trine: [planet]-[planet] (orb: X.X°)
☍ Opposition: [planet]-[planet] (orb: X.X°)
✶ Sextile: [planet]-[planet] (orb: X.X°)

INTERPRETATION:
[detailed interpretation]

Aspect Orbs

AspectSymbolOrb
Conjunction±8°
Opposition±8°
Square±7°
Trine±7°
Sextile±5°
Semisextile±2°
Quincunx±2°
Semisquare±2°

Zodiac Signs — Keywords

  • ♈ Aries: initiative, energy, impulsiveness
  • ♉ Taurus: stability, sensuality, stubbornness
  • ♊ Gemini: sociability, intellect, curiosity
  • ♋ Cancer: emotionality, nurturing, intuition
  • ♌ Leo: creativity, leadership, pride
  • ♍ Virgo: analytical, practical, perfectionist
  • ♎ Libra: harmony, diplomacy, partnership
  • ♏ Scorpio: depth, transformation, intensity
  • ♐ Sagittarius: optimism, philosophy, freedom
  • ♑ Capricorn: ambition, discipline, responsibility
  • ♒ Aquarius: originality, independence, innovation
  • ♓ Pisces: intuition, compassion, dreaminess

Planets — Meanings

  • Sun — ego, essence, vitality, father
  • Moon — emotions, subconscious, mother, instincts
  • Mercury — thinking, communication, learning
  • Venus — love, beauty, values, finances
  • Mars — energy, action, aggression, sexuality
  • Jupiter — expansion, luck, wisdom, growth
  • Saturn — limitations, discipline, karma, structure
  • Uranus — change, rebellion, innovation, suddenness
  • Neptune — illusion, spirituality, creativity, dissolution
  • Pluto — transformation, power, death/rebirth

Houses — Life Areas

  1. I (ASC) — personality, appearance, self-presentation
  2. II — money, values, resources
  3. III — communication, siblings, learning
  4. IV (IC) — home, family, roots
  5. V — creativity, children, romance
  6. VI — health, work, routine
  7. VII (DSC) — partnership, marriage
  8. VIII — transformation, shared resources, intimacy
  9. IX — philosophy, travel, higher education
  10. X (MC) — career, reputation, goals
  11. XI — friends, hopes, groups
  12. XII — solitude, subconscious, karma

Interpretation Guidelines

When interpreting, consider:

  1. Sun — core personality
  2. Moon — emotional nature
  3. Ascendant — mask, first impression
  4. MC — career aspirations
  5. Stelliums (3+ planets in one sign/house)
  6. Retrograde planets — energy turned inward
  7. Major aspects — personality dynamics
  8. Dominant elements (fire, earth, air, water)

Disclaimer

This is an entertainment/educational tool, not a scientific method. Do not make medical or financial predictions based on astrological readings.


Changelog

v2.0.0 (2026-05-28)

  • Switched to Swiss Ephemeris (pyswisseph 2.10.3.2) as the primary calculation engine — replaces simplified analytical formulas
  • Replaced swe.JUPITER hardcoded positions with swe.calc_ut() using NASA JPL DE431 ephemerides
  • House calculation now uses swe.houses_ex() (exact iterative Placidus) instead of analytical approximations
  • Added retrograde detection via FLG_SPEED flag (velocity sign)
  • Bundled swisseph.cp314-win_amd64.pyd (2 MB) in scripts/ — no system-wide installation required
  • Version detection: swe.__version__ returns int 20230604 — formatted as vYY.MM.BLD string
  • Expanded city database to 50+ cities with coordinates and timezone data
  • Added proper Julian Day conversion through swe.julday()
  • Removed legacy scripts: natal_chart.py, placidus_iterative.py, placidus_meeus.py and all debug/fix scripts (11 files)
  • SKILL.md rewritten in English with full documentation

v1.x (earlier)

  • Initial release using simplified analytical formulas
  • Separate iterative and Meeus-based Placidus implementations
  • Planet positions calculated with approximate algorithms (0.5–15° error range)