Try Astrologer API

Subscribe to support and grow the project.

Relationship Score Factory #

The RelationshipScoreFactory calculates a quantitative compatibility score between two subjects using the Ciro Discepolo method. It assigns points to specific inter-chart aspects and qualities.

What Is Relationship Scoring? #

While most synastry analysis is qualitative (describing the nature of aspects), the Discepolo method provides a numerical compatibility score. This score focuses on traditional “destiny indicators”:

The Method Prioritizes:

  • Luminaries (Sun and Moon) - Core identity and emotional nature
  • Angles (Ascendant, MC) - How individuals meet the world
  • Venus-Mars - Romantic and sexual compatibility
  • Orb Precision - Tighter aspects score higher (±2° gets bonus points)
  • Quality Matching - Same modality (Cardinal/Fixed/Mutable) adds points

This numerical approach is useful for:

  • Comparing multiple potential partners objectively
  • Research into relationship longevity patterns
  • Quick compatibility screening in dating applications

Basic Usage #

To calculate a score, create two AstrologicalSubject instances (one for each partner) and pass them to the factory.

from kerykeion import AstrologicalSubjectFactory
from kerykeion.relationship_score_factory import RelationshipScoreFactory

# 1. Create Subjects
person_a = AstrologicalSubjectFactory.from_birth_data("Alice", 1990, 6, 15, 12, 0, "London", "GB")
person_b = AstrologicalSubjectFactory.from_birth_data("Bob", 1992, 8, 20, 14, 30, "Roma", "IT")

# 2. Calculate Score
factory = RelationshipScoreFactory(person_a, person_b)
score_model = factory.get_relationship_score()

print(f"Score: {score_model.score_value}")
print(f"Category: {score_model.score_description}")

Constructor Parameters #

Parameter Type Default Description
first_subject Model Required First astrological subject.
second_subject Model Required Second astrological subject.
use_only_major_aspects bool True Only consider major aspects (conj, opp, sq, etc).
axis_orb_limit float None Stricter orb for angles (Asc, MC).

Score Categories #

Score Category Description
0 - 5 Minimal Low compatibility, few significant connections.
5 - 10 Medium Moderate compatibility.
10 - 15 Important Strong compatibility, notable connections.
15 - 20 Very Important High compatibility, significant harmony.
20 - 30 Exceptional Outstanding compatibility.
30+ Rare Exceptional Extraordinary cosmic connection.

Scoring System Details #

The algorithm awards points for specific “Destiny” indicators and aspects.

Indicator Points Note
Destiny Sign +5 If Sun signs share the same quality (Cardinal/Fixed/Mutable).
Sun-Sun (Conj/Opp/Sqr) +8 or +11 +11 if orb ≤ 2°, else +8.
Sun-Moon (Conj) +8 or +11 +11 if orb ≤ 2°, else +8.
Sun-Ascendant +4 Any major aspect.
Moon-Ascendant +4 Any major aspect.
Venus-Mars +4 Any major aspect.
Other Sun/Moon +4 Other major aspects involving Luminaries.

Note: The system prioritizes “Luminaries” (Sun/Moon) and Angles.

Return Model (RelationshipScoreModel) #

The get_relationship_score() method returns a Pydantic model with:

  • score_value (float): The calculated number.
  • score_description (str): The category name.
  • aspects (list): All the aspects that contributed to the score.
  • is_destiny_sign (bool): Whether the “Destiny Sign” bonus was applied.