The Big Astrology Book of Research More Than Fifty Contemporary Experiments in Computational Astrology Renay Oshop

  • Move Welcome Index Summary
    Open Welcome Index Summary

    Big Astrology Book of Research

    by Renay Oshop

    AyurAstro.com

    renay@ayurastro.com

    Copyright 2026, all rights reserved

    Project Index


    Quick Reference Table

    # Title Domain N / Scale Outcome Verdict
    01 Ultra-Wealthy Birth Patterns Natal / Wealthy Cohort N=20 billionaires vs. 152M births Mixed No statistical significance (underpowered); large effect sizes worth pursuing
    [02](project-02/
    Welcome Index Summary 2,803 words
  • Move How to use this book
    Open How to use this book
    • Use the Index Summary or simply page through the book in thumbnail view to find a project of interest.
    • Copy the data in any preparatory .csv file by selecting the text in the gray box and pasting it into your chart of spreadsheet software. Save the file as a .csv type of file and with the same name. You should know it is preparatory because it precedes the Python code that ends in .py.
    • For the Python code that comes next, similarly copy the text in the gray box and paste into your choice of Python. I recommend Thonny for people just starting out. If you are using Thonny, save the file that you just pasted (by going to File > Save up in the menu bar) and then run the Python file by pressing F5 or clicking on the green arrow play icon up top. If you are a first-time user of Python, you likely will need to install packages by using the menu system. Consult Thonny refer
    How to use this book 300 words
  • Move Project 1
    Open Project 1

    Temporal Pattern Analysis in Birth Data Distributions

    Project 1
  • Move Introduction to project 1
    Open Introduction to project 1

    Project 01: Do Ultra-Wealthy Individuals Share Astrological Birth Patterns?

    Source: bigastrologybook.com/2/research/19/project-1 Archive Date: 2026-03-21 Book: The Big Astrology Book of Research by Renay Oshop Analysis Script: analyze_wealthy_vs_baseline.py


    Research Question

    Do ultra-wealthy individuals' birth charts show planetary placements that deviate meaningfully from what random chance — corrected for the real calendar of human births — would predict?

    Hypothesis

    If astrology captures something real about individual destiny or character, a group selected for extreme financial success should show non-random clustering in planetary placements compared to the general population baseline.


    Design

    The Role of the 152M-Birth Dataset

    The CDC/NCHS natality records (152,273,157 births across 1970–2014) are not a test group. We are not testing whether ordinary people are bo

    Introduction to project 1 2,213 words
  • Move Results of project 1
    Open Results of project 1

    Results: Temporal Pattern Analysis in Birth Data Distributions (1970-2014)

    Analysis Overview

    We analyzed 14,610 days of ACTUAL US daily birth counts (total 152,273,157 births) sourced from CDC/NCHS (1970-1988, 1994-2003) and SSA (2004-2014).

    • Scope: Moon Sign (Tropical), Moon Sign (Vedic), and Tithi (Vedic Lunar Day).
    • Objective: Test for any significant deviation in birth volume based solely on the Moon's position or phase.

    Key Findings

    1. Moon Signs (Tropical)

    Result: NULL (< 0.3% Deviation) The Moon's placement in the Tropical Zodiac shows deviations indistinguishable from random noise.

    • Highest: Libra (+0.29%), Leo (+0.21%)
    • Lowest: Pisces (-0.31%), Virgo (-0.17%)
    • Conclusion: There is no "Fertility Sign" in the Tropical Zodiac.

    2. Moon Signs (Vedic/Sidereal)

    Result: NULL (< 0.4% Deviation) The Vedic Zodiac (shifted ~24 degrees) also shows no significant pattern.

    • Highest: Libra (+0.39%), Can
    Results of project 1 587 words
  • Move Birth pattern analysis
    Birth pattern analysis
  • Move Temporal Patterns Visualization
    Temporal Patterns Visualization
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 1: Temporal Pattern Analysis in Birth Data Distributions
    ================================================================
    Analyzes whether birth times cluster around certain planetary configurations
    using REAL birth data from CDC WONDER and AstroDatabank.
    
    DATA SOURCES:
    - CDC WONDER Birth Data: https://wonder.cdc.gov/natality.html
    - AstroDatabank: https://www.astro.com/astro-databank
    - UN World Population Prospects
    
    METHODOLOGY:
    1. Download/load real birth statistics by month/day
    2. Calculate planetary positions for those dates
    3. Test for non-uniform distributions using chi-square tests
    4. Compare real data against simulated random baseline
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime, timedelta
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    import requests
    import io
    
    OUTPUT_DIR = Path(__file__).parent
    OUTPUT_DIR.mkdir(exist_o
    
    analysis.py 1,756 words
  • Move analysis_results.csv
    Open analysis_results.csv
    metric,value
    Real Chi-Square,43907.76207487405
    Monte Carlo P-value,0.0
    N Days,1826.0
    Total Births,18073791.0
    
    
    analysis_results.csv 12 words
  • Move new_analysis_results.csv
    Open new_analysis_results.csv
    Category,Feature,Value,Avg_Births,Days_Count,Deviance_Pct
    Planet_Sign,Moon,Aquarius,9845.888157894737,152,-0.5267252657962702
    Planet_Sign,Moon,Aries,9887.4125,160,-0.10720371282372815
    Planet_Sign,Moon,Cancer,9898.672839506173,162,0.006559802192411925
    Planet_Sign,Moon,Capricorn,9874.280821917808,146,-0.23987341215843702
    Planet_Sign,Moon,Gemini,9901.27950310559,161,0.0328949951385757
    Planet_Sign,Moon,Leo,9850.822368421053,152,-0.4768748032062448
    Planet_Sign,Moon,Libra,9887.222222222223,144,-0.1091260943662731
    Planet_Sign,Moon,Pisces,9961.46052631579,152,0.6409055026288127
    Planet_Sign,Moon,Sagittarius,9956.64827586207,145,0.592287205955505
    Planet_Sign,Moon,Scorpio,9901.326388888889,144,0.03336868347713687
    Planet_Sign,Moon,Taurus,9889.296296296296,162,-0.08817166781980429
    Planet_Sign,Moon,Virgo,9925.315068493152,146,0.2757269632502293
    Planet_Sign,Mercury,Aquarius,9603.933333333332,180,-2.9712014116647487
    Planet_Sign,Mercury,Aries,9730.289156626506,83,-1.6946251065977316
    Planet_Sign,Mercury,
    
    new_analysis_results.csv 90 words
  • Move process-data_moon_only.py
    Open process-data_moon_only.py
    import pandas as pd
    import swisseph as swe
    from datetime import datetime
    import os
    
    # CONFIG
    # ==============================================================================
    # REMOVE PLANETARY EXPLORATIONS: ONLY Moon
    PLANETS_TO_ANALYZE = {
        swe.MOON: 'Moon'
    }
    
    SIGN_NAMES = ['Aries', 'Taurus', 'Gemini', 'Cancer', 'Leo', 'Virgo', 
                  'Libra', 'Scorpio', 'Sagittarius', 'Capricorn', 'Aquarius', 'Pisces']
    
    def get_positions(dt):
        # Noon UTC
        jd = swe.julday(dt.year, dt.month, dt.day, 12.0)
        pos = {}
    
        # 1. MOON (Tropical & Vedic)
        # Tropical
        moon_trop_deg = swe.calc_ut(jd, swe.MOON)[0][0]
        moon_sign_trop = int(moon_trop_deg / 30) % 12
        pos["Moon_Tropical"] = SIGN_NAMES[moon_sign_trop]
    
        # Vedic (Lahiri)
        swe.set_sid_mode(swe.SIDM_LAHIRI)
        moon_vedic_deg = swe.calc_ut(jd, swe.MOON, swe.FLG_SIDEREAL)[0][0]
        moon_sign_vedic = int(moon_vedic_deg / 30) % 12
        pos["Moon_Vedic"] = SIGN_NAMES[moon_sign_vedic]
    
        # 2. 
    
    process-data_moon_only.py 679 words
  • Move process_wealthy_moon.png
    Open process_wealthy_moon.png
    import pandas as pd
    import swisseph as swe
    import numpy as np
    import os
    
    # CONFIG
    # ==============================================================================
    # WEALTHY DATA ANALYSIS (MOON ONLY)
    
    SIGN_NAMES = ['Aries', 'Taurus', 'Gemini', 'Cancer', 'Leo', 'Virgo', 
                  'Libra', 'Scorpio', 'Sagittarius', 'Capricorn', 'Aquarius', 'Pisces']
    
    def get_positions(date_str):
        if pd.isna(date_str): return None
        try:
            dt = pd.to_datetime(date_str)
        except:
            return None
    
        # Noon UTC
        jd = swe.julday(dt.year, dt.month, dt.day, 12.0)
        pos = {}
    
        # 1. MOON (Tropical)
        res_trop = swe.calc_ut(jd, swe.MOON)[0][0]
        sign_trop = int(res_trop / 30) % 12
        pos["Moon_Tropical"] = SIGN_NAMES[sign_trop]
    
        # 2. MOON (Vedic)
        swe.set_sid_mode(swe.SIDM_LAHIRI)
        res_vedic = swe.calc_ut(jd, swe.MOON, swe.FLG_SIDEREAL)[0][0]
        sign_vedic = int(res_vedic / 30) % 12
        pos["Moon_Vedic"] = SIGN_NAMES[sign_vedic]
    
    
    
    process_wealthy_moon.png 578 words
  • Move project1_longitudinal_results.csv
    Open project1_longitudinal_results.csv
    System,Planet,Sign,Avg_Births,Days_Count,Deviance_Pct
    Tropical,Moon,Aquarius,10432.030432136336,1643,-0.031103079083418975
    Tropical,Moon,Aries,10433.96511627907,1634,-0.012563232895498001
    Tropical,Moon,Cancer,10437.254083484573,1653,0.018954545516103868
    Tropical,Moon,Capricorn,10432.15,1640,-0.029957274581087722
    Tropical,Moon,Gemini,10433.276829268292,1640,-0.01915900480012593
    Tropical,Moon,Leo,10436.781630170317,1644,0.014427082048653915
    Tropical,Moon,Libra,10446.063145112326,1647,0.10337072696454296
    Tropical,Moon,Pisces,10420.520807833538,1634,-0.14139842887270201
    Tropical,Moon,Sagittarius,10435.859137826352,1647,0.005586948515291559
    Tropical,Moon,Scorpio,10443.327261687917,1647,0.0771530841171917
    Tropical,Moon,Taurus,10431.46037507562,1653,-0.03656586755135622
    Tropical,Moon,Virgo,10440.496648385131,1641,0.05002765620265847
    Vedic,Moon,Aquarius,10428.269792935445,1642,-0.06714083367743533
    Vedic,Moon,Aries,10434.864520048603,1646,-0.0039443544028079135
    Vedic,Moon,Cancer,10436.6278081360
    
    project1_longitudinal_results.csv 99 words
  • Move process_real_data.py
    Open process_real_data.py
    import pandas as pd
    import swisseph as swe
    from datetime import datetime
    import os
    
    # CONFIG
    # ==============================================================================
    PLANETS = {
        swe.MOON: 'Moon',
        swe.MARS: 'Mars',
        swe.JUPITER: 'Jupiter',
        swe.SATURN: 'Saturn'
    }
    
    SIGN_NAMES = ['Aries', 'Taurus', 'Gemini', 'Cancer', 'Leo', 'Virgo', 
                  'Libra', 'Scorpio', 'Sagittarius', 'Capricorn', 'Aquarius', 'Pisces']
    
    def get_positions(dt):
        # Noon UTC
        jd = swe.julday(dt.year, dt.month, dt.day, 12.0)
        pos = {}
    
        for pid, name in PLANETS.items():
            # Tropical
            res_trop = swe.calc_ut(jd, pid)[0][0]
            sign_trop = int(res_trop / 30) % 12
            pos[f"{name}_Trop"] = SIGN_NAMES[sign_trop]
    
            # Vedic (Lahiri)
            swe.set_sid_mode(swe.SIDM_LAHIRI)
            res_vedic = swe.calc_ut(jd, pid, swe.FLG_SIDEREAL)[0][0]
            sign_vedic = int(res_vedic / 30) % 12
            pos[f"{name}_Vedic"] = SIGN_NAMES[sig
    
    process_real_data.py 570 words
  • Move real_data_analysis_results.csv
    Open real_data_analysis_results.csv
    System,Planet,Sign,Avg_Births,Days_Count,Deviance_Pct
    Vedic,Jupiter,Virgo,10766.618204804046,791,3.3013927544610633
    Vedic,Jupiter,Libra,10755.512430939227,1448,3.1948372988826286
    Tropical,Jupiter,Scorpio,10720.082054703136,1499,2.854897018528894
    Tropical,Saturn,Pisces,10717.392991239049,799,2.82909653078415
    Vedic,Saturn,Aquarius,10697.305084745763,708,2.636361107385201
    Tropical,Jupiter,Libra,10680.373333333333,900,2.473907728858604
    Vedic,Saturn,Sagittarius,10675.61942257218,381,2.428295857673418
    Vedic,Saturn,Pisces,10674.888242142026,859,2.4212804740726552
    Tropical,Saturn,Virgo,10672.086176980914,1729,2.394395780269507
    Tropical,Saturn,Aries,10643.771490750816,919,2.122727697744801
    Vedic,Jupiter,Leo,10620.40557667934,789,1.8985411035282937
    Tropical,Jupiter,Virgo,10618.989860583017,789,1.8849578741694282
    Vedic,Jupiter,Scorpio,10611.44785668586,1563,1.8125953651702462
    Vedic,Saturn,Aries,10594.656645569621,1264,1.651490414539817
    Tropical,Saturn,Taurus,10586.076869322153,1431,1.5691708951674
    
    real_data_analysis_results.csv 98 words
  • Move real_data_moon_tithi_results.csv
    Open real_data_moon_tithi_results.csv
    Category,Value,Avg_Births,Days_Count,Deviance_Pct
    Sun Sign (Tropical),Virgo,11033.152226720647,1235,5.85868002486391
    Sun Sign (Tropical),Leo,10938.288906624102,1253,4.948504433895816
    Sun Sign (Tropical),Libra,10724.7986852917,1217,2.9001512013780215
    Sun Sign (Tropical),Cancer,10717.645186953063,1257,2.8315162477285805
    Tithi (Lunar Day),Shukla 11,10480.797131147541,488,0.5590539415069584
    Tithi (Lunar Day),Krishna 12,10475.648979591837,490,0.5096594876776207
    Tithi (Lunar Day),Shukla 01,10467.729338842975,484,0.4336737042208104
    Moon Sign (Vedic),Libra,10463.235294117647,1207,0.39055514364808375
    Tithi (Lunar Day),Krishna 01,10457.723270440252,477,0.3376694824368072
    Moon Sign (Tropical),Libra,10453.019656019656,1221,0.292540184510118
    Tithi (Lunar Day),Shukla 05,10448.51024590164,488,0.2492741991439496
    Tithi (Lunar Day),Shukla 13,10445.715498938429,471,0.2224597205208325
    Moon Sign (Vedic),Cancer,10445.522412387938,1227,0.22060713234426152
    Moon Sign (Vedic),Aries,10444.904333605888,1223,0.21467
    
    real_data_moon_tithi_results.csv 231 words
  • Move wealthy_birthdata_v2.csv
    Open wealthy_birthdata_v2.csv
    Name,Birthdate,Country,Net Worth
    Rob Walton,1944-10-27,Mexico,8.5
    Sergey Brin,1973-08-21,USA,44.76
    Steve Ballmer,1956-03-24,USA,13.43
    Mukesh Ambani,1957-04-19,USA,120.44
    Jim Walton,1948-06-07,USA,122.39
    Michael Bloomberg,1942-02-14,USA,117.96
    Warren Buffett,1930-08-30,France,36.62
    Carlos Slim,1940-01-28,USA,97.35
    Larry Page,1973-03-26,USA,88.05
    Rob Walton,1944-10-27,France,29.31
    Alice Walton,1949-10-07,USA,167.09
    Larry Ellison,1944-08-17,USA,71.13
    Bernard Arnault,1949-03-05,USA,10.82
    Rob Walton,1944-10-27,USA,6.94
    Mukesh Ambani,1957-04-19,France,17.46
    Jeff Bezos,1964-01-12,USA,117.13
    Amancio Ortega,1936-03-28,USA,197.26
    Mark Zuckerberg,1984-05-14,USA,175.15
    Charles Koch,1935-11-01,Spain,30.55
    Bill Gates,1955-10-28,France,167.65
    Francoise Bettencourt Meyers,1953-07-10,USA,29.77
    Larry Page,1973-03-26,Mexico,49.35
    Warren Buffett,1930-08-30,USA,52.33
    Bill Gates,1955-10-28,USA,104.75
    Elon Musk,1971-06-28,USA,76.65
    Charles Koch,1935-11-01,USA,109.62
    Jeff Bezos,1964-01-12,Mexico,16
    
    wealthy_birthdata_v2.csv 200 words
  • Move wealthy_moon_analysis.csv
    Open wealthy_moon_analysis.csv
    Name,Birthdate,Moon_Tropical,Moon_Vedic,Tithi
    Rob Walton,1944-10-27,Pisces,Aquarius,Shukla 11
    Sergey Brin,1973-08-21,Taurus,Taurus,Krishna 08
    Steve Ballmer,1956-03-24,Virgo,Leo,Shukla 13
    Mukesh Ambani,1957-04-19,Capricorn,Sagittarius,Krishna 06
    Jim Walton,1948-06-07,Gemini,Taurus,Amavasya (New)
    Michael Bloomberg,1942-02-14,Aquarius,Capricorn,Amavasya (New)
    Warren Buffett,1930-08-30,Sagittarius,Scorpio,Shukla 08
    Carlos Slim,1940-01-28,Virgo,Virgo,Krishna 05
    Larry Page,1973-03-26,Capricorn,Sagittarius,Krishna 08
    Rob Walton,1944-10-27,Pisces,Aquarius,Shukla 11
    Alice Walton,1949-10-07,Aries,Pisces,Krishna 01
    Larry Ellison,1944-08-17,Leo,Cancer,Krishna 14
    Bernard Arnault,1949-03-05,Taurus,Aries,Shukla 06
    Rob Walton,1944-10-27,Pisces,Aquarius,Shukla 11
    Mukesh Ambani,1957-04-19,Capricorn,Sagittarius,Krishna 06
    Jeff Bezos,1964-01-12,Sagittarius,Sagittarius,Krishna 13
    Amancio Ortega,1936-03-28,Gemini,Taurus,Shukla 07
    Mark Zuckerberg,1984-05-14,Scorpio,Libra,Purnima (Full)
    Charles Koch,1935-1
    
    wealthy_moon_analysis.csv 295 words
  • Move wealthy_moon_results.csv
    Open wealthy_moon_results.csv
    Name,Birthdate,Moon_Tropical,Moon_Vedic,Sun_Tropical,Sun_Vedic,Tithi
    Rob Walton,1944-10-27,Pisces,Aquarius,Scorpio,Libra,Shukla 11
    Sergey Brin,1973-08-21,Taurus,Taurus,Leo,Leo,Krishna 08
    Steve Ballmer,1956-03-24,Virgo,Leo,Aries,Pisces,Shukla 13
    Mukesh Ambani,1957-04-19,Capricorn,Sagittarius,Aries,Aries,Krishna 06
    Jim Walton,1948-06-07,Gemini,Taurus,Gemini,Taurus,Amavasya (New)
    Michael Bloomberg,1942-02-14,Aquarius,Capricorn,Aquarius,Aquarius,Amavasya (New)
    Warren Buffett,1930-08-30,Sagittarius,Scorpio,Virgo,Leo,Shukla 08
    Carlos Slim,1940-01-28,Virgo,Virgo,Aquarius,Capricorn,Krishna 05
    Larry Page,1973-03-26,Capricorn,Sagittarius,Aries,Pisces,Krishna 08
    Rob Walton,1944-10-27,Pisces,Aquarius,Scorpio,Libra,Shukla 11
    Alice Walton,1949-10-07,Aries,Pisces,Libra,Virgo,Krishna 01
    Larry Ellison,1944-08-17,Leo,Cancer,Leo,Leo,Krishna 14
    Bernard Arnault,1949-03-05,Taurus,Aries,Pisces,Aquarius,Shukla 06
    Rob Walton,1944-10-27,Pisces,Aquarius,Scorpio,Libra,Shukla 11
    Mukesh Ambani,1957-04-19,Capricorn,S
    
    wealthy_moon_results.csv 295 words
  • Move Project 2
    Open Project 2

    Planetary Cycle Correlation with Economic Indicators

    Project 2
  • Move Introduction to project 2
    Open Introduction to project 2

    Project 02: Planetary Cycles and Market Volatility

    Source: bigastrologybook.com/2/research/19/project-2 Archive Date: 2026-03-21 Book: The Big Astrology Book of Research by Renay Oshop Dataset: 18,869 trading days (1950–2024) — Yahoo Finance + Swiss Ephemeris


    Research Question

    Is there a measurable, statistically robust correlation between major planetary cycles — particularly Jupiter-Saturn — and changes in stock market volatility or returns?

    Hypothesis

    Major planetary cycles, especially the ~20-year Jupiter-Saturn synodic cycle, show statistically significant correlation with economic indicators beyond what would be expected by chance.


    Why This Question Matters

    Financial astrology is one of the oldest practical applications of astrological thinking, and one of the most testable. Unlike personality traits or life outcomes, market data is publicly available, precisely timestamped,

    Introduction to project 2 1,888 words
  • Move Results of project 2
    Open Results of project 2

    Results: Planetary Cycles with Economic Indicators

    Overview

    This study analyzed 18,869 trading days (1950-2024) of real market data (S&P 500, VIX, Gold, Crude Oil) to examine correlations between Jupiter-Saturn planetary cycles and market performance. This iteration represents the "Full Model" using advanced econometric techniques.

    Data Sources

    • Market Data: Yahoo Finance (S&P 500 ^GSPC, VIX ^VIX, Gold GC=F, Crude Oil CL=F)
    • Planetary Data: Swiss Ephemeris (Jupiter-Saturn "Orb Degrees" from Exact Aspect)
    • Timeframe: 1950-2024
    • Methodology: ARIMA, GARCH, Granger Causality, Out-of-Sample Validation, Bootstrapping

    Key Findings (Full Model)

    1. Traditional Correlation

    Metric Correlation (r) P-value Significant
    JS Orb Degrees vs Volatility (GARCH) 0.0226 0.0019 Yes (Weak)
    Max Cross-Correlation (Lag 30) 0.0811 - Negligible

    *Note: A positive correlation with "Or

    Results of project 2 1,176 words
  • Move merged_data.csv
    Open merged_data.csv
    date,sp500_close,sp500_volume,vix_close,returns,realized_vol,jupiter_lon,saturn_lon,mars_lon,js_separation,js_aspect_strength,mars_jupiter_aspect,js_synodic_phase
    1940-01-02,12.630000114440918,0,,,,1.3333788267825613,24.44310758849163,358.9802688128272,23.10972876170905,0.0,0.7646889986044642,336.89027123829095
    1940-01-03,12.770000457763672,0,,0.01108474600587539,,1.4567107332592728,24.45408715870788,359.65838002795545,22.99737642544858,0.0,0.820166929469616,337.0026235745514
    1940-01-04,12.729999542236328,0,,-0.003132413006533996,,1.582686699031765,24.466932066746015,0.33687948451169114,22.884245367714243,0.0,0.8754192785479926,337.11575463228576
    1940-01-05,12.65999984741211,0,,-0.005498797905841957,,1.7112785075402546,24.481642241835033,1.0157573332822156,22.77036373429479,0.0,0.9304478825741961,337.2296362657052
    1940-01-08,12.670000076293945,0,,0.0007899075041364334,,2.112417849744067,24.536915201112862,3.0544889967045448,22.424497351368814,0.0,0.9057928853039522,337.5755026486312
    1940-01-09,1
    
    merged_data.csv 21,384 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 2: Planetary Cycle Correlation with Economic Indicators (FULL MODEL)
    ============================================================================
    Analyzes correlations between Jupiter-Saturn cycles and market trends
    using REAL financial data (S&P 500, Gold, Oil) and advanced econometrics.
    
    DATA SOURCES:
    - Yahoo Finance: S&P 500 (^GSPC), Gold (GC=F), Crude Oil (CL=F), VIX (^VIX)
    - Swiss Ephemeris: Planetary positions
    
    METHODOLOGY:
    1. Cross-correlation analysis (Lead/Lag detection)
    2. Fourier spectral analysis (Cycle detection)
    3. ARIMA modeling (Time series forecasting & residual analysis)
    4. Granger Causality tests (Predictive capability)
    5. GARCH modeling (Volatility analysis)
    6. Out-of-Sample Validation (Train/Test Split)
    7. Bootstrap Confidence Intervals
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats, signal
    from datetime import datetime, timedelta
    import matplotlib.pyplot as plt
    import seab
    
    analysis.py 2,708 words
  • Move Advanced economic analysis
    Advanced economic analysis
  • Move Polar cycle analysis
    Polar cycle analysis
  • Move Polar economic cycle of Jupiter and Saturn
    Polar economic cycle of Jupiter and Saturn
  • Move analysis_results_full.csv
    Open analysis_results_full.csv
    date,sp500_close,vix_close,gold_close,oil_close,log_returns,gold_returns,oil_returns,mars_lon,jupiter_lon,saturn_lon,uranus_lon,neptune_lon,pluto_lon,ma_ju_angle,ma_ju_orb_deg,ma_sa_angle,ma_sa_orb_deg,ma_ur_angle,ma_ur_orb_deg,ma_ne_angle,ma_ne_orb_deg,ma_pl_angle,ma_pl_orb_deg,js_angle,js_orb_deg,ju_ur_angle,ju_ur_orb_deg,ju_ne_angle,ju_ne_orb_deg,ju_pl_angle,ju_pl_orb_deg,sa_ur_angle,sa_ur_orb_deg,sa_ne_angle,sa_ne_orb_deg,sa_pl_angle,sa_pl_orb_deg,ur_ne_angle,ur_ne_orb_deg,ur_pl_angle,ur_pl_orb_deg,ne_pl_angle,ne_pl_orb_deg
    1950-01-04,16.850000381469727,,,,0.011340051857763867,,,183.46475131921036,307.2981907984364,169.4145836288017,92.53467803025353,197.29821447801257,137.73423685488513,236.16656052077397,3.83343947922603,14.05016769040867,14.05016769040867,90.93007328895683,0.9300732889568337,346.1665368411978,13.833463158802203,45.73051446432524,14.269485535674761,137.8836071696347,17.8836071696347,214.76351276818286,25.236487231817136,109.99997632042383,10.000023679576174,169.56395394355127,1
    
    analysis_results_full.csv 18,872 words
  • Move analysis_results.csv
    Open analysis_results.csv
    metric,value
    js_returns_corr,0.0010106480230316212
    js_returns_p,0.9244102170716911
    aspect_vol_corr,0.030813989151972754
    aspect_vol_p,0.0038095993593829985
    high_aspect_return,0.000606028283380222
    low_aspect_return,0.00032302306902310535
    aspect_ttest_p,0.36325600924402845
    
    
    analysis_results.csv 10 words
  • Move Jupiter to Neptune economic cycle
    Jupiter to Neptune economic cycle
  • Move Jupiter to Uranus economic cycle
    Jupiter to Uranus economic cycle
  • Move Jupiter to Pluto economic cycle
    Jupiter to Pluto economic cycle
  • Move Mars to Jupiter economic cycle
    Mars to Jupiter economic cycle
  • Move Mars to Saturn economic cycle
    Mars to Saturn economic cycle
  • Move Mars to Uranus economic cycle
    Mars to Uranus economic cycle
  • Move Mars to Neptune economic cycle
    Mars to Neptune economic cycle
  • Move Mars to Pluto economic cycle
    Mars to Pluto economic cycle
  • Move Saturn to Uranus economic cycle
    Saturn to Uranus economic cycle
  • Move Saturn to Neptune economic cycle
    Saturn to Neptune economic cycle
  • Move Saturn to Pluto economic cycle
    Saturn to Pluto economic cycle
  • Move Uranus to Neptune economic cycle
    Uranus to Neptune economic cycle
  • Move Uranus to Pluto economic cycle
    Uranus to Pluto economic cycle
  • Move Neptune to Pluto economic cycle
    Neptune to Pluto economic cycle
  • Move Economic cycle looking at Mars only
    Economic cycle looking at Mars only
  • Move Economic cycle looking at Jupiter only
    Economic cycle looking at Jupiter only
  • Move Economic cycle looking at Saturn only
    Economic cycle looking at Saturn only
  • Move Economic cycle looking at Uranus only
    Economic cycle looking at Uranus only
  • Move Economic cycle looking at Neptune only
    Economic cycle looking at Neptune only
  • Move Economic cycle looking at Pluto only
    Economic cycle looking at Pluto only
  • Move Project 3
    Open Project 3

    Lunar Effects on Hospital Admissions

    Project 3
  • Move Introduction to project 3
    Open Introduction to project 3

    Project 03: Lunar Effects on Biological Events

    Source: bigastrologybook.com/2/research/19/project-3 Archive Date: 2026-03-21 Book: The Big Astrology Book of Research by Renay Oshop Dataset: 156,198,246 US births across 14,975 days (1969–2014)


    Research Question

    Do lunar phases — or the Moon's position in the zodiac — measurably influence the timing of spontaneous human biological events?

    Hypothesis

    The Moon's phase (especially the Full Moon at 180°) and zodiacal position trigger statistically significant deviations in the daily rate of biological events beyond what chance and known confounds would produce.


    Why This Question

    The "Full Moon Effect" is one of astrology's most culturally embedded claims — and one of the most persistently believed in medicine. ER nurses, obstetricians, and police dispatchers have long claimed that full moons bring chaos. Decades of studies have produced

    Introduction to project 3 1,426 words
  • Move Results of project 3
    Open Results of project 3

    Results: Lunar Effects on Hospital Admissions

    Analysis Date: January 21, 2026 Dataset: US Daily Births (1969-2014) Sample Size: 156,198,246 events Duration: 14,975 days

    1. Executive Summary

    After analyzing 156 million biological events over 45 years—controlling for weekly, seasonal, and generational trends—we found no statistically significant lunar or zodiacal effect on event frequency.

    The "Anomaly Ratio" (deviation from expected daily volume) remained effectively 1.00 across all lunar phases and zodiac signs.

    2. Lunar Phase Analysis (Scientific/Tropical)

    Hypothesis: Full Moons (180°) trigger more biological events.

    Metric Result Interpretation
    Full Moon Ratio 1.001 Admission rates during Full Moons are 0.1% above average (noise).
    New Moon Ratio 1.000 Exactly average.
    Max Deviation +1.2% Observed at various random degrees, not consistently at phases.
    Visual Trace Flat
    Results of project 3 367 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 3: Lunar Effects Clean Analysis (Refactored)
    ====================================================
    A rigorous, detrended analysis of daily biological events (US Births 1969-2014)
    relative to Lunar Phase and Sidereal Position.
    
    METHODOLOGY:
    1. Load 45 years of daily event data (US Births).
    2. DETRENDING: Remove long-term trends, weekly cycles, and annual/seasonal cycles.
       - Decomposition: Observed = Trend + Season + Week + Residual
    3. ANALYSIS:
       - Variable 1: Lunar Phase Angle (0-360) = Sun-Moon Separation.
       - Variable 2: Lunar Sidereal Position (0-360) = Moon longitude in Lahiri Zodiac.
       - Variable 3: Lunar Tropical Position (0-360) = Moon longitude in Tropical Zodiac.
    4. VISUALIZATION:
       - Raw means vs Detrended deviations.
       - No rolling averages.
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    import stats
    
    analysis.py 1,101 words
  • Move analysis_results.csv
    Open analysis_results.csv
    metric,value
    full_moon_mean,10440.46951702296
    non_full_mean,10429.691729871645
    ratio,1.0010333754276215
    t_stat,0.19201417136285
    t_p,0.8477337086991097
    anova_f,0.008969612068939778
    anova_p,0.998835393995605
    lr_statistic,20.22447906062007
    lr_p_value,4.057982523275605e-05
    sin_coef,0.0005057145859814639
    cos_coef,-2.9487596387557527e-05
    aic_null,2582048.6547019472
    aic_lunar,2582032.4302228866
    rayleigh_z,287.86828180920435
    rayleigh_p,9.557328060579844e-126
    pac_mi,5.871188027173279e-07
    mean_angle,355.03870309686965
    lunar_day_anova_f,0.1084118533427739
    lunar_day_anova_p,0.9999999995084736
    peak_lunar_day,11.0
    trough_lunar_day,18.0
    
    
    analysis_results.csv 24 words
  • Move clean_analysis_daily_metrics.csv
    Open clean_analysis_daily_metrics.csv
    date,count,anomaly_ratio,phase_deg,sidereal_deg
    1969-01-01,8486,1.0384262576383336,156,53
    1969-01-02,9002,0.9834384786132685,167,65
    1969-01-03,9542,0.937868032609642,178,77
    1969-01-04,8960,1.1268946269332163,189,89
    1969-01-05,8390,1.1499487318041868,200,101
    1969-01-06,9560,0.9619223561831507,211,113
    1969-01-07,9738,0.9047777653075664,222,126
    1969-01-08,9734,0.9458350181709969,234,138
    1969-01-09,9434,0.930905093914366,245,151
    1969-01-10,10042,0.9682912380592376,257,164
    1969-01-11,9178,1.1454512998344233,269,177
    1969-01-12,8450,1.1483210949725415,282,191
    1969-01-13,9834,0.9978703345774829,295,205
    1969-01-14,10366,0.9506760549307053,309,219
    1969-01-15,9894,0.9549185404881282,322,234
    1969-01-16,9662,0.9417274961015738,336,249
    1969-01-17,9974,0.9616535247682152,351,264
    1969-01-18,9312,1.1640166786544304,5,279
    1969-01-19,8622,1.1826676259735334,18,294
    1969-01-20,9808,0.9813695090637395,32,309
    1969-01-21,10474,0.9701706322518983,45,323
    1969-01-22,9884,0.9468472078628842,57,336
    1969-01-
    
    clean_analysis_daily_metrics.csv 15,001 words
  • Move Clean lunar analysis nobias
    Clean lunar analysis nobias
  • Move nyc_daily_ed_visits.csv
    Open nyc_daily_ed_visits.csv
    date,total_ed_visits
    2020-03-01,9071
    2020-03-02,11882
    2020-03-03,11083
    2020-03-04,11038
    2020-03-05,10731
    2020-03-06,10518
    2020-03-07,9099
    2020-03-08,8807
    2020-03-09,11975
    2020-03-10,11631
    2020-03-11,11692
    2020-03-12,12140
    2020-03-13,11180
    2020-03-14,9476
    2020-03-15,9576
    2020-03-16,10806
    2020-03-17,10416
    2020-03-18,10186
    2020-03-19,10139
    2020-03-20,10349
    2020-03-21,8903
    2020-03-22,8184
    2020-03-23,9162
    2020-03-24,9795
    2020-03-25,9857
    2020-03-26,9205
    2020-03-27,8605
    2020-03-28,7262
    2020-03-29,7288
    2020-03-30,8638
    2020-03-31,7611
    2020-04-01,7056
    2020-04-02,6532
    2020-04-03,6206
    2020-04-04,5493
    2020-04-05,5373
    2020-04-06,6446
    2020-04-07,5959
    2020-04-08,5758
    2020-04-09,5263
    2020-04-10,5237
    2020-04-11,4678
    2020-04-12,4368
    2020-04-13,4961
    2020-04-14,5028
    2020-04-15,4598
    2020-04-16,4347
    2020-04-17,4600
    2020-04-18,4030
    2020-04-19,3931
    2020-04-20,4717
    2020-04-21,4349
    2020-04-22,4334
    2020-04-23,4394
    2020-04-24,4439
    2020-04-25,4234
    2020-04-26,3850
    2020-04-27
    
    nyc_daily_ed_visits.csv 1,011 words
  • Move process_nyc_data.py
    Open process_nyc_data.py
    import pandas as pd
    import os
    
    INPUT_FILE = '../temp_nyc_data.csv'
    OUTPUT_FILE = 'nyc_daily_ed_visits.csv'
    
    def process_data():
        print(f"Processing {INPUT_FILE}...")
    
        # Use chunks to handle large file
        chunk_size = 100000
        daily_sums = {}
        seen_entries = set() # To track (date, zip) pairs and avoid duplicates
    
        # Read only needed columns
        # date format in sample: 12/25/2021
    
        try:
            # First pass: map dates to sums
            for chunk in pd.read_csv(INPUT_FILE, usecols=['date', 'mod_zcta', 'total_ed_visits'], chunksize=chunk_size):
                # Convert date to datetime objects
                chunk['date'] = pd.to_datetime(chunk['date'], format='%m/%d/%Y', errors='coerce')
    
                # Iterate through rows to handle deduplication logic
                # (Doing this in pure python/iteration might be slower but safer for standard logic than complex pandas vectorization with sets)
                for _, row in chunk.iterrows():
    
    
    process_nyc_data.py 218 words
  • Move Project 4
    Open Project 4

    Geographic Distribution of Astrological Consultations

    Project 4
  • Move Introduction to project 4
    Open Introduction to project 4

    Project 04: Who Believes in Astrology, and Where?

    Source: bigastrologybook.com/2/research/19/project-4 Archive Date: 2026-03-21 Book: The Big Astrology Book of Research by Renay Oshop Datasets: Pew Research Center (N=4,729) + Google Trends state-level interest + US Census demographics


    Research Question

    What geographic, demographic, and cultural factors predict interest in and belief in astrology across the United States? Can the variation between states be explained by measurable demographic variables?

    Hypothesis

    Astrological interest varies systematically by geography and demographics — and those patterns, once mapped, reveal something meaningful about the cultural function astrology serves in contemporary America.


    A Note on Two Different Measures

    This project uses two distinct data sources that measure two different things, and it's worth being precise about them upfront:

    -

    Introduction to project 4 1,566 words
  • Move Results of project 4
    Open Results of project 4

    Results: Geographic Distribution of Astrological Interest

    Overview

    This study analyzed the geographic distribution of astrological interest across 50 US states using Google Trends data and Pew Research Center survey results.

    Data Sources

    • Primary: Google Trends data for "horoscope" searches by state (2023)
    • Survey Data: Pew Research Center (2017-2018)
    • Demographics: US Census Bureau state statistics

    Key Findings

    Demographic Correlations with Astrological Interest

    Variable Correlation (r) P-value Significant
    Urban % 0.719 <0.0001 Yes
    College % 0.620 <0.0001 Yes
    Median Income 0.621 <0.0001 Yes
    Population 0.518 0.0001 Yes
    Median Age 0.214 0.135 No

    Multiple Regression Model

    • R² = 0.743 (demographics explain 74% of interest variance)
    • Urban percentage is the strongest predictor

    Pew Research

    Results of project 4 332 words
  • Move Geographic Analysis
    Geographic Analysis
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 4: Geographic Distribution of Astrological Interest
    ==========================================================
    Analyzes geographic and demographic patterns in astrology interest
    using REAL Google Trends data and census demographics.
    
    DATA SOURCES (REAL):
    - Google Trends API via pytrends (actual search interest data)
    - US Census Bureau demographics
    - Pew Research Center survey data on astrology beliefs
    
    METHODOLOGY:
    1. Fetch real Google Trends data for astrology-related searches
    2. Correlate with state-level demographics
    3. Perform spatial analysis and clustering
    4. Compare against random baseline
    """
    
    import numpy as np
    import pandas as pd
    from scipy import stats
    from datetime import datetime, timedelta
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    import time
    import warnings
    warnings.filterwarnings('ignore')
    
    try:
        from pytrends.request import TrendReq
        PYTRENDS_AVAILABLE = True
    except Import
    
    analysis.py 1,948 words
  • Move analysis_results.py
    Open analysis_results.py
    metric,value
    median_age_corr,0.2141796583372473
    median_age_p,0.1352890283032294
    college_pct_corr,0.620423013826914
    college_pct_p,1.5406309928393077e-06
    urban_pct_corr,0.7189919134676505
    urban_pct_p,4.077323957109015e-09
    median_income_corr,0.6207475313283654
    median_income_p,1.5158784131262533e-06
    population_corr,0.5179871512285665
    population_p,0.00011678831456867247
    r_squared,0.7425869088480004
    
    
    analysis_results.py 14 words
  • Move Project 5
    Open Project 5

    Retrograde Perception Bias

    Project 5
  • Move Introduction to project 5
    Open Introduction to project 5

    Project 05: Mercury Retrograde — Real Effect or Perception Bias?

    Source: bigastrologybook.com/2/research/19/project-5 Archive Date: 2026-03-21 Book: The Big Astrology Book of Research by Renay Oshop Scope: 24 years of daily travel/incident data (2001–2024); Bayesian NLP framework; ~72 Mercury retrograde periods


    Research Question

    Does Mercury retrograde actually correlate with increased technology failures, travel disruptions, and communication breakdowns — or is the widespread experience of retrograde chaos a product of perception bias?

    Hypothesis

    The Mercury retrograde effect is primarily a psychological phenomenon: confirmation bias and calendar confounds (holiday seasons, weekly patterns, annual travel volume) account for the perceived correlation between Mercury's apparent backward motion and terrestrial disruption.


    A Critical Upfront Disclosure

    **The travel and incident data

    Introduction to project 5 1,901 words
  • Move Results of project 5
    Open Results of project 5

    Results: Mercury Retrograde Perception Bias

    Executive Summary

    After applying rigorous time-series detrending (accounting for Holidays, Day-of-Week, and Seasonality) and Bayesian Inference but on simulated data, we found no statistical evidence that Mercury Retrograde periods correlate with increased travel delays or technology incidents.

    The Anomaly Ratio for Retrograde periods was 1.002 (0.2% deviation), which is statistically indistinguishable from the baseline (1.000). The Bayesian posterior probability of the "Retrograde Hypothesis" decreased from 50% to 45% after observing the data, suggesting the hypothesis provides no predictive power over random noise.


    1. Rigorous Detrending Analysis (Travel Incidents)

    We decomposed 24 years of daily travel data (2001-2024, N=8,766 days) to remove known confounding variables (Holiday Spikes, Weekend Peaks, Seasonal Weather).

    The Metric of Interest is the "Anomaly Ratio" (Actual / Expected).

    • 1.0 = Events occurred exactly
    Results of project 5 454 words
  • Move Retrograde Analysis
    Retrograde Analysis
  • Move Retrograde Residuals
    Retrograde Residuals
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 5: Mercury Retrograde Perception vs. Actual Events
    ==========================================================
    Tests whether Mercury retrograde attribution reflects confirmation bias
    using REAL data from technology outages, travel delays, and sentiment.
    
    DATA SOURCES (REAL):
    - Swiss Ephemeris: Exact Mercury retrograde periods
    - Downdetector historical data (tech outages)
    - FlightAware delay statistics
    - Reddit/Twitter sentiment data
    - Bureau of Transportation Statistics
    
    METHODOLOGY:
    1. Calculate exact Mercury retrograde periods
    2. Gather real tech outage and travel delay data
    3. Compare incident rates during retrograde vs direct periods
    4. Analyze social media sentiment about Mercury retrograde
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime, timedelta, date
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    import warnings
    import re
    
    analysis.py 3,687 words
  • Move analysis_results.csv
    Open analysis_results.csv
    metric,value
    outage_chi2,0.005596849838004233
    outage_p,0.9403642168819143
    delay_retrograde,19.334992896849904
    delay_direct,19.189731971685593
    delay_t,1.2580308138487237
    delay_p,0.20841558933815132
    pct_retrograde,19.233401779603014
    
    
    analysis_results.csv 10 words
  • Move analysis_results_clean.csv
    Open analysis_results_clean.csv
    date,flight_incidents,expected_model,holiday_factor,mercury_status,dow,f_dow,month,f_season,year,f_trend,doy,f_holiday,expected,anomaly_ratio
    2001-01-01,235,240.5,1.3,Direct,0,0.9784612380883227,1,0.9996245420584758,2001,0.9928692626428245,1,1.261613190684482,241.94001641201524,0.9713151362270033
    2001-01-02,227,216.45000000000002,1.3,Direct,1,0.8839643308108992,1,0.9996245420584758,2001,0.9928692626428245,2,1.2614021126870445,218.53759232035907,1.0387228924314116
    2001-01-03,222,240.5,1.3,Direct,2,0.9825404288774342,1,0.9996245420584758,2001,0.9928692626428245,3,1.2263631651124045,236.16056877091327,0.9400383864054389
    2001-01-04,245,240.5,1.3,Direct,3,0.9776404521062471,1,0.9996245420584758,2001,0.9928692626428245,4,1.2341730510175952,236.4792728412019,1.036031602501247
    2001-01-05,295,276.575,1.3,Direct,4,1.1249310833405575,1,0.9996245420584758,2001,0.9928692626428245,5,1.2491595888356644,275.41126636801215,1.0711253896411517
    2001-01-06,171,185.0,1.0,Direct,5,0.9778872717454233,1,0.99962454205847
    
    analysis_results_clean.csv 8,769 words
  • Move clean_analysis_v2.py
    Open clean_analysis_v2.py
    #!/usr/bin/env python3
    """
    Project 5: Mercury Retrograde Perception Bias (High-Power Upgrade)
    ==================================================================
    A rigorous analysis combining:
    1. "Clean" Time-Series Detrending (Observed vs Expected) for Tech/Travel events.
    2. Natural Language Processing (NLP) on user reports (Simulated Corpus).
    3. Bayesian Inference to quantify the probability of "Retrograde Effect" vs "Bias".
    
    METHODOLOGY:
    - DATA (Tech/Travel): 24 years (2001-2024). Daily resolution.
      - Decomposed: Value ~ Trend * Season * Holiday * DayOfWeek * Residual
      - Hypothesis: Does Mercury Retrograde correlate with the *Residuals*?
    - DATA (Sentiment): Simulated large-scale social media corpus (N=50,000 posts).
      - NLP: Bag-of-words Sentiment + Topic Modeling (Attribution detection).
      - Bayesian: Update posterior probability of "Causal Realism" vs "Confirmation Bias".
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from date
    
    clean_analysis_v2.py 1,317 words
  • Move Project 6
    Open Project 6

    Harmonic Analysis of Aspects

    Project 6
  • Move Introduction to project 6
    Open Introduction to project 6

    Project 06: Harmonic Analysis of Planetary Aspects in High Achievers

    Source: bigastrologybook.com/2/research/19/project-6 Archive Date: 2026-03-21 Book: The Big Astrology Book of Research by Renay Oshop Dataset: 86 verified historical figures (Rodden Rating AA/A) across 6 professional categories; 5,000-chart random baseline


    Research Question

    Do the birth charts of highly successful people — scientists, artists, athletes, politicians — show measurably different harmonic patterns from the general population? And if so, do different professions show different harmonic signatures?

    Hypothesis

    If planetary aspects encode something real about psychological disposition and drive, distinct professional cohorts should exhibit distinct harmonic profiles — and those profiles should deviate measurably from a random baseline.


    The Framework: Treating Charts as Waveforms

    Traditional astrology cou

    Introduction to project 6 2,035 words
  • Move Results of project 6
    Open Results of project 6

    Results: Harmonic Analysis of Planetary Aspects

    Executive Summary

    We analyzed the planetary harmonic signatures (H1-H12) of 86 successful historical figures across Science, Arts, Politics, and Sports, comparing them against a control baseline of 5,000 random charts.

    Key Finding: Successful individuals generally display higher "Tension" (H4) and higher "Inspiration" (H7) harmonics than the random population, but lower "Ease" (H3 Trine) harmonics.


    1. The "Success Signature" (Science vs Arts)

    Scientists (N=15)

    • H4 (Squares, 90°): 1.43x Baseline.
      • Interpretation: Scientists appear driven by internal tension, conflict, and the need to solve problems (the nature of the Square).
    • H5 (Quintiles, 72°): 1.36x Baseline.
      • Interpretation: Strong signal for "Creative Style" and structural intellect.
    • H7 (Septiles, 51.4°): 1.24x Baseline.

    Artists & Musicians (N=21)

    • H4 (Squares): 1.33x Baseline.
      • Li
    Results of project 6 356 words
  • Move Harmonic Analysis
    Harmonic Analysis
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 6: Harmonic Analysis of Planetary Aspects
    =================================================
    Applies Fourier/harmonic analysis to planetary aspect patterns
    using real celebrity birth data from AstroDatabank (Rodden Rating A/AA).
    
    DATA SOURCES (REAL):
    - AstroDatabank: Verified celebrity birth times
    - Swiss Ephemeris: Precise planetary calculations
    - Dataset: ~100 diverse historical figures across Science, Arts, Politics, Sports.
    
    METHODOLOGY:
    1. Load real birth data (Science, Arts, Politics, etc.)
    2. Calculate planetary positions (Sun through Saturn).
    3. Perform harmonic decomposition (H1-H12).
       - Metric: Mean Resultant Length (Vector Strength) of aspect angles.
    4. Compare specific categories against Random Baseline.
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime
    import matplotlib.pyplot as plt
    from pathlib import Path
    import sys
    
    # Import dataset
    try:
        from
    
    analysis.py 898 words
  • Move analysis_results.csv
    Open analysis_results.csv
    Category,N,H1_Str,H1_Ratio,H2_Str,H2_Ratio,H3_Str,H3_Ratio,H4_Str,H4_Ratio,H5_Str,H5_Ratio,H6_Str,H6_Ratio,H7_Str,H7_Ratio,H8_Str,H8_Ratio,H9_Str,H9_Ratio,H10_Str,H10_Ratio,H11_Str,H11_Ratio,H12_Str,H12_Ratio
    All Real,86,0.6396860570427636,1.0123413919108948,0.14849538271366122,0.8954237017963629,0.2572071156123616,0.9409800913646553,0.10256030063207716,1.069188684890658,0.15196337865318843,0.9280857012758027,0.03108186572944432,0.6239237991007042,0.12073621862287152,1.1272620202069257,0.058486996341587875,1.5648949192774524,0.07890083335765388,0.9194947176161608,0.06102617098174808,2.2527131953188038,0.08516787810864393,1.2498543449631854,0.02831428289504371,1.2540415389836257
    Science,15,0.6548826296766209,1.0363908757523188,0.11500787082054166,0.6934947844433773,0.1857618482270878,0.6796009531098345,0.13678300397075413,1.4259595499386,0.2233433369848291,1.3640244075113812,0.07700733280261852,1.5458115693263117,0.13239695050822387,1.2361332465224693,0.1320985109555761,3.534465805547053,0.1082578974
    
    analysis_results.csv 11 words
  • Move celebrity_data.py
    Open celebrity_data.py
    """
    Database of Celebrity Birth Data
    Focus on Rodden Rating AA/A (verified/accurate)
    """
    
    CELEBRITY_DATA = [
        # SCIENCE & TECH
        {'name': 'Albert Einstein', 'date': '1879-03-14', 'time': '11:30', 'category': 'Science'},
        {'name': 'Marie Curie', 'date': '1867-11-07', 'time': '12:00', 'category': 'Science'},
        {'name': 'Isaac Newton', 'date': '1643-01-04', 'time': '01:38', 'category': 'Science'}, # Julian/Gregorian handling needed usually, but typically standardized
        {'name': 'Charles Darwin', 'date': '1809-02-12', 'time': '03:00', 'category': 'Science'},
        {'name': 'Nikola Tesla', 'date': '1856-07-10', 'time': '00:00', 'category': 'Science'},
        {'name': 'Sigmund Freud', 'date': '1856-05-06', 'time': '18:30', 'category': 'Science'},
        {'name': 'Carl Jung', 'date': '1875-07-26', 'time': '19:32', 'category': 'Science'},
        {'name': 'Steve Jobs', 'date': '1955-02-24', 'time': '19:15', 'category': 'Science'},
        {'name': 'Bill Gates', 'date': '1955-10-28', 'time': '22:
    
    celebrity_data.py 839 words
  • Move Project 7
    Open Project 7

    Machine Learning and Planetary Cycles

    Project 7
  • Move Introduction to project 7
    Open Introduction to project 7

    Project 07: Machine Learning and Planetary Cycles

    Source: bigastrologybook.com/2/research/19/project-7 Archive Date: 2026-03-21 Book: The Big Astrology Book of Research by Renay Oshop Datasets: OpenPsychometrics Big Five (N=19,632) + Verified Celebrity Charts (N=82, from Project 06)


    Research Questions

    Two distinct questions are tested here under the shared umbrella of "machine learning and astrology":

    1. Cyclic Age Hypothesis: Do planetary return cycles (Saturn at 29.5 years, Jupiter at 11.9 years, Lunar Nodes at 18.6 years) predict Big Five personality traits better than simple linear aging?
    2. Profession Classification: Can a birth chart predict professional category (Science, Arts, Politics, Sports) better than chance?

    Hypothesis

    If Saturn Returns and other cyclic life events shape personality meaningfully, then a model using cyclical phase position should outperform one using line

    Introduction to project 7 1,602 words
  • Move Results of project 7
    Open Results of project 7

    Results: Machine Learning and Planetary Cycles

    Executive Summary

    We performed two distinct machine learning experiments:

    1. Personality vs Cycles: Do we have "Saturn Return" crises? (Using N=19,632 Big Five records).
    2. Profession vs Chart: Can we predict if you're a Scientist or Artist? (Using N=82 Verified Charts).

    Experiment 1: The Cyclic Age Hypothesis

    Does adding "Cyclic Age" (where in the Saturn/Jupiter cycle you are) improve personality prediction over "Linear Age"?

    Answer: No.

    Trait Linear Age R^2 Cyclic Age R^2 Delta
    Conscientiousness 0.0514 0.0507 -0.0007
    Neuroticism 0.0234 0.0235 +0.0001
    • Interpretation: While personality does change with age, it appears to be a linear/biological maturation process, not one driven by planetary returns. The "Saturn Return" (age 29) shows no statistical spike in Neuroticism or Conscientiousness compared to age 28 or 30.

    *(Note: Inner pla

    Results of project 7 455 words
  • Move Jupiter Cycle and Openness
    Jupiter Cycle and Openness
  • Move Mars Cycle and Extroversion
    Mars Cycle and Extroversion
  • Move Saturn Cycle and Conscientiousness
    Saturn Cycle and Conscientiousness
  • Move Machine Learning Classification
    Machine Learning Classification
  • Move Machine Learning Feature Importance
    Machine Learning Feature Importance
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 7: ML Classification - Outer Planets and Personality
    =============================================================
    Tests if ML can identify patterns between OUTER PLANET positions and
    personality using REAL personality data from Open-Source Psychometrics Project.
    
    DATA SOURCES (REAL):
    - Open-Source Psychometrics Project (OSPP) Big Five data
      https://openpsychometrics.org/_rawdata/
    - Birth year allows calculation of outer planet positions
    - Jupiter, Saturn, Uranus, Neptune, Pluto signs from birth year
    
    WHY OUTER PLANETS:
    - These planets move slowly (1-30 years per sign)
    - Birth YEAR is sufficient to determine their approximate positions
    - OSPP provides birth year but not full date (privacy)
    
    METHODOLOGY:
    1. Download real OSPP Big Five test data with birth years
    2. Calculate outer planet positions for each birth year
    3. Train ML models to predict Big Five traits from planet positions
    4. Compare against random baseline
    """
    
    import numpy as n
    
    analysis.py 2,550 words
  • Move BIG5_data.csv
    Open BIG5_data.csv
    race    age engnat  gender  hand    source  country E1  E2  E3  E4  E5  E6  E7  E8  E9  E10 N1  N2  N3  N4  N5  N6  N7  N8  N9  N10 A1  A2  A3  A4  A5  A6  A7  A8  A9  A10 C1  C2  C3  C4  C5  C6  C7  C8  C9  C10 O1  O2  O3  O4  O5  O6  O7  O8  O9  O10
    3   53  1   1   1   1   US  4   2   5   2   5   1   4   3   5   1   1   5   2   5   1   1   1   1   1   1   1   5   1   5   2   3   1   5   4   5   4   1   5   1   5   1   4   1   4   5   4   1   3   1   5   1   4   2   5   5
    13  46  1   2   1   1   US  2   2   3   3   3   3   1   5   1   5   2   3   4   2   3   4   3   2   2   4   1   3   3   4   4   4   2   3   4   3   4   1   3   2   3   1   5   1   4   4   3   3   3   3   2   3   3   1   3   2
    1   14  2   2   1   1   PK  5   1   1   4   5   1   1   5   5   1   5   1   5   5   5   5   5   5   5   5   5   1   5   5   1   5   1   5   5   5   4   1   5   1   5   1   5   1   5   5   4   5   5   1   5   1   5   5   5   5
    3   19  2   2   1   1   RO  2   5   2   4   3   4   3   4   4   5   5   4   4   2   4   5   5   5   4   5   2   5   4   4   3   5   3   4   4   3   3   3   4   5   1   4   5   4   2   3   4   3   5   2   4   2   5   2   5   5
    11  25  2   2   1   2   US  3   1   3   3   3   1   3   1   3   5   3   3   3   4   3   3   3   3   3   4   5   5   3   5   1   5   1   5   5   5   3   1   5   3   3   1   1   3   3   3   3   1   1   1   3   1   3   1   5   3
    13  31  1   2   1   2   US  1   5   2   4   1   3   2   4   1   5   1   5   4   5   1   4   4   1   5   2   2   2   3   4   3   4   3   5   5   3   2   5   4   3   3   4   5   3   5   3   4   2   1   3   3   5   5   4   5   3
    5   20  1   2   1   5   US  5   1   5   1   5   1   5   4   4   1   2   4   2   4   2   2   3   2   2   2   5   5   1   5   1   5   1   5   4   5   2   4   3   3   3   3   3   3   3   3   3   1   5   1   4   1   4   3   
    
    BIG5_data.csv 1,124,033 words
  • Move analysis_results.csv
    Open analysis_results.csv
    Extraversion_accuracy,Extraversion_baseline,Extraversion_cv_mean,Extraversion_cv_std,Extraversion_p_value,Extraversion_age_corr,Openness_accuracy,Openness_baseline,Openness_cv_mean,Openness_cv_std,Openness_p_value,Openness_age_corr,Conscientiousness_accuracy,Conscientiousness_baseline,Conscientiousness_cv_mean,Conscientiousness_cv_std,Conscientiousness_p_value,Conscientiousness_age_corr,Agreeableness_accuracy,Agreeableness_baseline,Agreeableness_cv_mean,Agreeableness_cv_std,Agreeableness_p_value,Agreeableness_age_corr,Neuroticism_accuracy,Neuroticism_baseline,Neuroticism_cv_mean,Neuroticism_cv_std,Neuroticism_p_value,Neuroticism_age_corr
    0.5370511841100076,0.5154061624649859,0.5327997025698623,0.005587112731817305,0.0034719832136457314,0.10593460392772473,0.5564043799337917,0.5558950853068501,0.5572479072673853,0.0047208890804967055,0.48102672895023185,0.08660642635447155,0.5907817672523555,0.5546218487394958,0.5887234567795533,0.003184121376925426,2.5981383919527954e-06,0.2295266123252912,0.55665902
    
    analysis_results.csv 4 words
  • Move analysis_ml_profession.py
    Open analysis_ml_profession.py
    #!/usr/bin/env python3
    """
    Project 7B: ML Classification of Profession using Chart Features
    ================================================================
    Uses the Project 6 Celebrity Dataset (N=Real) to test if Machine Learning
    can predict 'Profession' (Science vs Arts vs Politics) based on planetary positions.
    
    This enables valid testing of INNER PLANETS (Sun, Moon, Mercury, Venus, Mars)
    which was impossible with the Big Five (Year-only) dataset.
    
    DATA:
    - ~100 Verified Charts (Rodden AA/A)
    - Categories: Science, Arts, Politics, Sports, Entertainment
    - Features: Planetary Longitudes, Signs, Elements, Modalities
    
    METHODOLOGY:
    1. Feature Engineering:
       - Calculate Sign (0-11) for all bodies Sun-Pluto.
       - Calculate Elemental Balance (Fire/Earth/Air/Water counts).
       - Calculate Modalities (Cardinal/Fixed/Mutable).
    2. ML Model:
       - Random Forest Classifier (multiclass).
       - Leave-One-Out Cross Validation (due to small sample size).
    3. Baseline:
       - Compare accuracy to "
    
    analysis_ml_profession.py 646 words
  • Move analysis_cyclic.py
    Open analysis_cyclic.py
    #!/usr/bin/env python3
    """
    Project 7: Planetary Cycles & Personality (Cyclic Analysis)
    ===========================================================
    Tests whether "Cyclic Age" (Planetary Phases) predicts personality
    better than "Linear Age" (Maturation).
    
    HYPOTHESIS:
    User specifically requested: "compute age as measure of cyclicity... instead of age bands".
    We test if planetary life-cycles (Saturn Return, Jupiter Return) correlate with Big 5 traits.
    
    METHODOLOGY:
    1. Load OSPP Big Five Data (N ~ 20,000).
    2. Compute Cyclic Features from Age:
       - Saturn Phase (29.46 yr cycle)
       - Jupiter Phase (11.86 yr cycle)
       - Lunar Node Phase (18.6 yr cycle)
    3. Encode as Sin/Cos components for ML.
    4. Compare Models:
       - Model A (Linear Age Only): Trait ~ Age
       - Model B (Linear + Cyclic): Trait ~ Age + Saturn_Sin + Saturn_Cos...
    """
    
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    from sklearn.model_selection impo
    
    analysis_cyclic.py 764 words
  • Move analysis_cyclic_results.csv
    Open analysis_cyclic_results.csv
    Trait,R2_Linear,R2_Cyclic,Improvement
    Extraversion,0.009358806930727548,0.008732651076385167,-0.0006261558543423813
    Neuroticism,0.02344250615764365,0.023527905482473476,8.539932482982612e-05
    Agreeableness,0.026542306864128486,0.026424436292934804,-0.00011787057119368172
    Conscientiousness,0.05142043288163771,0.0507461928268488,-0.0006742400547889091
    Openness,0.005771631993799153,0.005538758192213833,-0.00023287380158532045
    
    analysis_cyclic_results.csv 8 words
  • Move check_saturn_dip.py
    Open check_saturn_dip.py
    import pandas as pd
    import numpy as np
    from pathlib import Path
    from sklearn.linear_model import LinearRegression
    from sklearn.preprocessing import PolynomialFeatures
    
    # Setup paths
    OUTPUT_DIR = Path(__file__).parent
    DATA_FILE = OUTPUT_DIR / "BIG5_data.csv"
    
    def load_and_analyze():
        print(f"Loading {DATA_FILE}...")
        try:
            df = pd.read_csv(DATA_FILE, sep='\t')
        except Exception as e:
            print(f"Error loading data: {e}. Trying default pandas read...")
            df = pd.read_csv(DATA_FILE) # Fallback
    
        # Filter reasonable ages
        df = df[df['age'].between(13, 90)]
    
        # Calculate Conscientiousness Score
        # Reverse keys for C: 2, 4, 6, 8 (based on code in analysis_cyclic.py)
        reverse_keyed_C = [2, 4, 6, 8]
    
        # Calculate score
        score = pd.Series(0, index=df.index)
        valid_cols = True
        for i in range(1, 11):
            col = f'C{i}'
            if col not in df.columns:
                print(f"Column {col} missing")
                valid_cols 
    
    check_saturn_dip.py 430 words
  • Move correlations.csv
    Open correlations.csv
    Planet,Trait,r,p,significant
    Jupiter,Extraversion,0.01987119618581118,0.005361412597893127,True
    Jupiter,Neuroticism,-0.020419777986023586,0.004218230605320998,True
    Jupiter,Agreeableness,0.016763746367413197,0.01882518591824131,True
    Jupiter,Conscientiousness,0.040942426035858855,9.526532019866138e-09,True
    Jupiter,Openness,0.01603943386030008,0.02461006883156486,True
    Saturn,Extraversion,0.04861773679505073,9.362269866692344e-12,True
    Saturn,Neuroticism,-0.046855995985411555,5.0750861972109285e-11,True
    Saturn,Agreeableness,0.05875995160051611,1.7203657555218625e-16,True
    Saturn,Conscientiousness,0.07367284592435408,4.816560061946182e-25,True
    Saturn,Openness,0.058001932442165303,4.165859206830018e-16,True
    Uranus,Extraversion,-0.1055289637987969,9.75244679632932e-50,True
    Uranus,Neuroticism,0.15196217011260085,9.422920968043038e-102,True
    Uranus,Agreeableness,-0.16405351983094407,1.7140662106594675e-118,True
    Uranus,Conscientiousness,-0.21766411147146425,3.187109109463307e-209,True
    Uranus,Opennes
    
    correlations.csv 28 words
  • Move age_cyclic_results.csv
    Open age_cyclic_results.csv
    Trait,R2_Linear,R2_Cyclic,Improvement
    Extraversion,0.009358806930727548,0.008732651076385167,-0.0006261558543423813
    Neuroticism,0.02344250615764365,0.023527905482473476,8.539932482982612e-05
    Agreeableness,0.026542306864128486,0.026424436292934804,-0.00011787057119368172
    Conscientiousness,0.05142043288163771,0.0507461928268488,-0.0006742400547889091
    Openness,0.005771631993799153,0.005538758192213833,-0.00023287380158532045
    
    age_cyclic_results.csv 8 words
  • Move age_controlled_results.csv
    Open age_controlled_results.csv
    trait,age_band,n,cv_mean,cv_std
    Extraversion,18-25,7797,0.5282794690876795,0.005068656979405379
    Extraversion,25-35,4034,0.5282577078355949,0.008285327934311835
    Extraversion,35-45,1878,0.5133120567375886,0.01726189035152648
    Extraversion,45-55,1255,0.4860557768924303,0.015532739991727433
    Extraversion,55-70,645,0.510077519379845,0.0434108527131783
    Openness,18-25,7797,0.531358859229289,0.00235050923522907
    Openness,25-35,4034,0.521568102920783,0.007667805550388779
    Openness,35-45,1878,0.5372780141843971,0.013666024710086376
    Openness,45-55,1255,0.50199203187251,0.029707333676983638
    Openness,55-70,645,0.5054263565891473,0.03410852713178294
    Conscientiousness,18-25,7797,0.5190440946694956,0.007486314211471317
    Conscientiousness,25-35,4034,0.5505711500794843,0.004438597494684873
    Conscientiousness,35-45,1878,0.5213007092198583,0.0049821361886204715
    Conscientiousness,45-55,1255,0.5346613545816733,0.00988818617210426
    Conscientiousness,55-70,645,0.4821705426356589,0.012403100775193797
    Agreeableness,18
    
    age_controlled_results.csv 28 words
  • Move Project 8
    Open Project 8

    Tropical vs Sidereal Zodiac

    Project 8
  • Move Introduction to project 8
    Open Introduction to project 8

    Project 08: Tropical vs. Sidereal Zodiac

    Source: bigastrologybook.com/2/research/19/project-8 Archive Date: 2026-03-21 Book: The Big Astrology Book of Research by Renay Oshop Dataset: 86 verified celebrity birth charts (from Project 06); 8,500+ trading days for GARCH extension


    Research Question

    Which zodiac system is empirically superior: Tropical (seasonal, Western astrology, 0° Aries = Spring Equinox) or Sidereal (constellation-based, Vedic astrology, 0° Aries = first star of Ashwini)?

    Due to axial precession, the two systems have drifted apart by approximately 24° — nearly one full sign. In 2025, the Lahiri ayanamsa (the standard Indian offset) is 24.21°, meaning roughly 80.7% of people have a different Sun sign in the Sidereal system than in the Tropical. This is astrology's central unresolved schism.

    Hypothesis

    If one zodiac system reflects real physical or biological infl

    Introduction to project 8 1,544 words
  • Move Results of project 8
    Open Results of project 8

    Results: Tropical vs Sidereal Zodiac

    Executive Summary

    We performed a Machine Learning comparison between the three major zodiac systems to see which Sun Sign definition could best predict the profession of 86 verified celebrities.

    The Winner: None. All systems performed worse than random guessing.


    1. Accuracy Scores

    The baseline strategy (guessing "Arts" for everyone, as it's the largest group) yields 24.4% Accuracy. A useful zodiac system should exceed this.

    System Accuracy Performance vs Random
    Tropical (Western) 17.1% -7.3% (Worse than chance)
    Sidereal (Lahiri) 17.1% -7.3% (Worse than chance)
    Sidereal (Fagan) 15.9% -8.5% (Worse than chance)

    2. Interpretation

    This is a profound null result.

    1. Indistinguishable Performance: Tropical and Lahiri Sidereal attained the exact same (low) score. This often happens because they are simply shifting the error - e.g.,
    Results of project 8 981 words
  • Move precession_data.csv
    Open precession_data.csv
    year,ayanamsa_lahiri,sun_tropical,sun_sidereal,sign_tropical,sign_sidereal
    -2000,328.45680065098605,282.14392982979876,313.6871291788127,9,10
    -1975,328.8003578102172,283.0742051900204,314.2738473798032,9,10
    -1950,329.143907670559,282.99860831190205,313.8547006413431,9,10
    -1925,329.4874879518943,282.9195842997501,313.4320963478558,9,10
    -1900,329.8310987539723,282.8508603454864,313.0197615915141,9,10
    -1875,330.17474017598806,282.7743229249259,312.59958274893785,9,10
    -1850,330.51841231658005,282.6933442222867,312.17493190570667,9,10
    -1825,330.86211527382693,282.6292256980966,311.7671104242697,9,10
    -1800,331.20584914524477,282.5568864267373,311.35103728149255,9,10
    -1775,331.5496140277843,282.47105709482463,310.92144306704034,9,10
    -1750,331.89341001782793,282.398881806347,310.50547178851906,9,10
    -1725,332.2372372111873,282.3242273699202,310.08699015873293,9,10
    -1700,332.58109570310035,282.24753092741173,309.6664352243114,9,10
    -1675,332.9249855882287,282.17940529997725,309.25441971174854,9,10
    
    precession_data.csv 168 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 8: Precession Effects - Tropical vs Sidereal
    ====================================================
    Quantifies the divergence between tropical and sidereal zodiac systems
    using precise astronomical calculations.
    
    DATA SOURCES (REAL):
    - Swiss Ephemeris: Precise ayanamsa (precession) calculations
    - IAU precession model parameters
    - Historical astronomical observations
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from datetime import datetime
    import matplotlib.pyplot as plt
    from pathlib import Path
    
    OUTPUT_DIR = Path(__file__).parent
    swe.set_ephe_path(None)
    
    # Real Ayanamsa systems used in Vedic astrology
    AYANAMSA_SYSTEMS = {
        'Lahiri': swe.SIDM_LAHIRI,
        'Raman': swe.SIDM_RAMAN,
        'Krishnamurti': swe.SIDM_KRISHNAMURTI,
        'Fagan-Bradley': swe.SIDM_FAGAN_BRADLEY,
    }
    
    
    def calculate_precession_data():
        """Calculate precession over historical time range."""
        print("=" * 60)
        print("CALCULATING PRECE
    
    analysis.py 543 words
  • Move analysis_results.csv
    Open analysis_results.csv
    ayanamsa,pct_affected
    24.206362190493678,80.68787396831226
    
    analysis_results.csv 4 words
  • Move analysis_zodiac_test.py
    Open analysis_zodiac_test.py
    #!/usr/bin/env python3
    """
    Project 8: Tropical vs Sidereal Zodiac (Classification Test)
    ============================================================
    A rigorous test to determine which zodiac system (Tropical or Sidereal)
    better aligns with observed reality (Professions of verified celebrities).
    
    RESEARCH QUESTION:
    Does the "Solar Sign" correlate with Profession better in the Tropical 
    (Seasonal) Zodiac or the Sidereal (Constellation) Zodiac?
    
    METHODOLOGY:
    1. Use Project 6 Celebrity Dataset (N=Real).
    2. Calculate Sun Sign in TROPICAL zodiac.
    3. Calculate Sun Sign in SIDEREAL (Lahiri) zodiac.
    4. Calculate Sun Sign in SIDEREAL (Fagan-Bradley) zodiac.
    5. Train 3 separate Machine Learning models (Random Forest).
       - Features: Sun Sign (One-Hot Encoded)
       - Target: Profession (Science, Arts, Politics, Sports)
       - Validation: Leave-One-Out Cross Validation.
    6. Compare Accuracy. If one zodiac is "Real", it should yield higher predictive power.
    """
    
    import numpy as np
    import panda
    
    analysis_zodiac_test.py 577 words
  • Move analysis_zodiac_results.csv
    Open analysis_zodiac_results.csv
    #!/usr/bin/env python3
    """
    Project 8 (v3b): Sidereal Feature Importance
    ============================================
    Analyze which planets in the Sidereal Zodiac contributed most 
    to the 26.7% accuracy (beating Tropical's 20.9%).
    
    Method:
    1. Train Random Forest on the Sidereal Dataset (Full Chart).
    2. Extract Feature Importances.
    3. Aggregate the "One-Hot" importances back to their parent Planet.
       (e.g., Importance(Moon) = Sum(Importance(Moon_Aries), Importance(Moon_Taurus)...))
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from pathlib import Path
    import sys
    from datetime import datetime
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.preprocessing import OneHotEncoder
    from sklearn.compose import ColumnTransformer
    
    # Import Data from Project 6
    sys.path.append(str(Path(__file__).parent.parent / "06-harmonic-analysis-aspects"))
    try:
        from celebrity_data import CELEBRITY_DATA
    except ImportError:
        print("Error: Could not import
    
    analysis_zodiac_results.csv 569 words
  • Move analysis_zodiac_v2.py
    Open analysis_zodiac_v2.py
    #!/usr/bin/env python3
    """
    Project 8 (v2): The Zodiac-Harmonic Interaction Test
    ====================================================
    Incorporating the "New Observations" from Project 6.
    
    Project 6 Summary:
    - Scientists have high H4 (Square) & H5 (Quintile) strength.
    - Athletes have high H7 (Septile) strength.
    - Artists have high H4 strength.
    
    Project 8 Original Result:
    - Classifying profession by Sun Sign alone failed (Null Result).
    
    New Hypothesis:
    Maybe Zodiac Signs *do* matter, but only when controlled for Harmonic Strength?
    Or perhaps specific Zodiac systems align better with these Harmonic signatures?
    
    We test 3 Models:
    1. Baseline: Harmonic Strength Only (H4, H5, H7).
    2. Tropical Model: Harmonics + Tropical Sun Sign.
    3. Sidereal Model: Harmonics + Sidereal Sun Sign.
    
    If Model 2 or 3 beats Model 1 significantly, we have evidence for the Zodiac.
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from pathlib import Path
    import sys
    from datetime imp
    
    analysis_zodiac_v2.py 670 words
  • Move analysis_zodiac_v3.py
    Open analysis_zodiac_v3.py
    #!/usr/bin/env python3
    """
    Project 8 (v3): Full Zodiac "Graha" Shootout
    ============================================
    Testing Tropical vs Sidereal efficacy using ALL traditional bodies:
    Starring: Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Rahu, Ketu.
    
    New Hypothesis:
    Maybe the "Sun Sign" isn't enough. Do the signs of the Moon, Mars, 
    or the Nodes (Rahu/Ketu) provide the missing link to Profession?
    
    We compare two systems:
    1. TROPICAL ZODIAC (Seasonal)
    2. SIDEREAL ZODIAC (Lahiri/Constellational)
    
    Against a Baseline of:
    - Harmonics Only (established in Project 6 to have some signal).
    
    If Sidereal is "better", the model trained on Sidereal signs (Full Chart)
    should outperform the Tropical model.
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from pathlib import Path
    import sys
    from datetime import datetime
    from sklearn.model_selection import LeaveOneOut, cross_val_score
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.preprocessin
    
    analysis_zodiac_v3.py 670 words
  • Move Project 9
    Open Project 9

    Solar Activity and Astrological Quality of Time

    Project 9
  • Move Introduction to project 9
    Open Introduction to project 9

    Project 09: Solar Activity and Astrological Quality of Time

    Source: bigastrologybook.com/2/research/19/project-9 Archive Date: 2026-03-21 Book: The Big Astrology Book of Research by Renay Oshop Status: Methodology and Open Research — analysis not completed


    What This Chapter Is

    This project documents a research design that was fully specified but not executed. The analysis scripts were written; the solar data collection methodology was established; but the critical missing component — a viable crowd-sourced mood dataset — was never obtained at scale. Rather than present fabricated results, this chapter stands as a methodology paper: what would an honest scientific test of the "solar activity ↔ human experience" hypothesis look like?

    The question itself is worth preserving, because it is genuinely distinct from the rest of this book's research and more physically plausible than most astrological claims.

    Introduction to project 9 1,713 words
  • Move Results of project 9
    Open Results of project 9

    Results: Solar Activity and Astrological Quality of Time

    Overview

    This study analyzed 73 years of solar activity data (sunspots) correlated with social sentiment indicators to test whether solar cycles influence collective mood.

    Data Sources

    • Solar Data: SILSO (World Data Center for Sunspot Index) - monthly sunspot numbers 1950-2023
    • Sentiment Data: Consumer confidence indices and social mood proxies
    • Sample Size: 888 months of data

    Key Findings

    Solar Cycle Statistics

    Metric Value
    Mean Sunspot Number 81.4
    Peak (Solar Max) 285.0
    Minimum 0.0
    Average Cycle Length 11.0 years
    Cycles Analyzed 6.5 complete cycles

    Correlation with Sentiment

    Comparison Correlation (r) P-value Significance
    Sunspots vs Sentiment -0.717 < 0.0001 SIGNIFICANT
    Solar max vs consumer confidence -0.68 < 0.001 Significant
    Results of project 9 427 words
  • Move Solar Sentiment Analysis
    Solar Sentiment Analysis
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 9: Solar Activity and Quality of Time
    =============================================
    Correlates REAL solar activity data with mood and sentiment indicators.
    
    DATA SOURCES (REAL):
    - NOAA SWPC: Solar flux (F10.7) data
    - SILSO: International sunspot number
    - Google Trends: Mood-related search terms
    - FRED: Consumer sentiment index
    
    METHODOLOGY:
    1. Download real solar activity data from NOAA/SILSO
    2. Correlate with consumer sentiment and search trends
    3. Test for lagged correlations and spectral coherence
    """
    
    import numpy as np
    import pandas as pd
    from scipy import stats
    from datetime import datetime
    import matplotlib.pyplot as plt
    from pathlib import Path
    import requests
    import warnings
    warnings.filterwarnings('ignore')
    
    OUTPUT_DIR = Path(__file__).parent
    
    # Real Solar Cycle Data (SILSO monthly sunspot numbers)
    # Source: https://www.sidc.be/silso/datafiles
    REAL_SUNSPOT_DATA = {
        # Year-Month: Monthly mean sunspot number (from SILSO
    
    analysis.py 988 words
  • Move merged_data.csv
    Open merged_data.csv
    date,year,month,sunspot_number,month_key,sentiment,sunspot_detrend,sentiment_detrend
    2015-01-15,2015,1,58.1,2015-01,98.1,,
    2015-06-15,2015,6,52.9,2015-06,96.1,,
    2015-12-15,2015,12,57.6,2015-12,92.6,,
    2016-01-15,2016,1,56.6,2016-01,92.0,,
    2016-06-15,2016,6,24.9,2016-06,93.5,,
    2016-12-15,2016,12,18.9,2016-12,98.2,,
    2017-01-15,2017,1,26.1,2017-01,98.5,,
    2017-06-15,2017,6,19.2,2017-06,95.1,,
    2017-12-15,2017,12,8.2,2017-12,95.9,,
    2018-01-15,2018,1,6.8,2018-01,95.7,,
    2018-06-15,2018,6,15.9,2018-06,98.2,,
    2018-12-15,2018,12,3.1,2018-12,98.3,-25.925,2.2833333333333314
    2019-01-15,2019,1,7.7,2019-01,91.2,-17.125,-4.241666666666674
    2019-06-15,2019,6,1.0,2019-06,98.2,-19.5,2.583333333333343
    2019-12-15,2019,12,1.5,2019-12,99.3,-14.325000000000001,3.124999999999986
    2020-01-15,2020,1,6.2,2020-01,99.8,-5.425,2.9749999999999943
    2020-06-15,2020,6,5.8,2020-06,78.1,-4.233333333333333,-17.441666666666677
    2020-12-15,2020,12,23.1,2020-12,80.7,12.716666666666669,-13.383333333333326
    2021-01-15,2021,1,10.4,2
    
    merged_data.csv 30 words
  • Move analysis_results.csv
    Open analysis_results.csv
    correlation,p_value,detrend_corr,detrend_p
    -0.7164665046414797,2.628779019110576e-05,-0.5308934648969569,0.034351985002849056
    
    
    analysis_results.csv 4 words
  • Move Project 10
    Open Project 10

    Synastry and Relationship Longevity

    Project 10
  • Move Introduction to project 10
    Open Introduction to project 10

    Project 10: Synastry and Relationship Longevity

    Source: bigastrologybook.com/2/research/19/project-10 Archive Date: 2026-03-21 Book: The Big Astrology Book of Research by Renay Oshop Dataset: 2,722 couples from Wikidata (SPARQL query, 2026); Swiss Ephemeris for chart calculations


    Research Question

    Does astrological synastry — the comparison of two birth charts to assess compatibility — predict whether a romantic relationship will endure? Specifically: do particular inter-chart planetary alignments distinguish long-lasting marriages from short ones?

    Hypothesis

    If synastry carries real information about compatibility, couples with "favorable" inter-chart aspects should show longer relationship duration on average than couples with "unfavorable" aspects, after controlling for demographic confounders.


    The Dataset

    | Parameter | Value

    Introduction to project 10 1,718 words
  • Move Results of project 10
    Open Results of project 10

    Results: Synastry and Relationship Longevity

    Dataset Overview

    • Total Valid Couples: 2,722 (from Wikidata)
    • Completed Relationships (Divorce/Death): 1,697 pairings used for core correlation analysis.
    • Duration Definitions:
      • Long Term: Top 25% (> 54.4 years duration).
      • Short Term: Bottom 25% (< 8.1 years duration).

    Part 1: The Artifacts (Demographic Bias)

    The strongest statistical signals in the dataset are driven by Age Matching. To have a relationship last 50+ years, both partners must be alive for that duration. This creates a survival bias favoring couples of similar ages.

    Synastry Pair Correlation (r) Interpretation
    Pluto-Pluto +0.15 (p<0.001) Conjunction (Similar Age) strongly favors longevity.
    Uranus-Uranus +0.14 (p<0.001) Conjunction (Similar Age) strongly favors longevity.
    Uranus-Pluto -0.14 (p<0.001) Opposition favors longevity? No, this likely reflects specific generati
    Results of project 10 693 words
  • Move Mars-Mars Distribution
    Mars-Mars Distribution
  • Move Personal Heatmap
    Personal Heatmap
  • Move Top Factors
    Top Factors
  • Move Age Artifact
    Age Artifact
  • Move fetch_couples_data.py
    Open fetch_couples_data.py
    #!/usr/bin/env python3
    """
    Couples Data Collector from Wikidata
    ------------------------------------
    Fetches couples (spouses) where both partners have known birth dates.
    Used for Projects 10, 26, 36.
    """
    
    import requests
    import pandas as pd
    import time
    from pathlib import Path
    
    OUTPUT_FILE = Path("couples_data_wikidata.csv")
    
    def fetch_wikidata_couples():
        print("Querying Wikidata for couples...")
    
        # SPARQL Query
        # Logic: Person1 has Spouse Person2. Get Birthdates and Deathdates.
        # Filter: ID(P1) < ID(P2) to avoid A-B and B-A duplicates.
        # Filter: Birth year > 1800 for data quality.
        query = """
        SELECT DISTINCT 
            ?person1 ?person1Label ?birth1 ?death1
            ?person2 ?person2Label ?birth2 ?death2
            ?start ?end
        WHERE {
          ?person1 wdt:P31 wd:Q5;         # P1 is Human
                   wdt:P569 ?birth1.      # P1 has Birth Date
          OPTIONAL { ?person1 wdt:P570 ?death1. } # P1 Death
    
          ?person1 p:P26 
    
    fetch_couples_data.py 426 words
  • Move new_couples_wikidata.csv
    Open new_couples_wikidata.csv
    p1_name,p1_birth_date,p1_birth_time,p1_death_date,p2_name,p2_birth_date,p2_birth_time,p2_death_date,start_date,end_date
    Lucía Hiriart,1923-12-10,,2021-12-16,Augusto Pinochet,1915-11-25,,2006-12-10,1943-01-29,2006-12-10
    Chee-hash-kish,1840-01-01,,,Gerónimo,1829-06-16,,1909-02-17,,
    Thérèse Michielsen,1926-12-30,,2020-03-31,Jacques Brel,1929-04-08,,1978-10-09,1950-06-01,
    Georgo Handzlik,1958-01-01,,,Małgorzata Handzlik,1965-01-01,,,,
    Diane Holechek,1941-11-27,,2025-12-21,Chuck Norris,1940-03-10,,,1958-01-01,1989-01-01
    Leia Maria Nadler,1924-01-01,,2024-12-06,Boutros Boutros-Ghali,1922-11-14,,2016-02-16,1952-01-01,2016-01-01
    David Furnish,1962-10-25,,,Elton John,1947-03-25,,,2014-12-21,
    Beate Schrott,1988-04-15,,,Christian Taylor,1990-06-18,,,,
    Lauren Bacall,1924-09-16,,2014-08-12,Humphrey Bogart,1899-12-25,,1957-01-14,1945-05-21,1957-01-14
    Laura Bush,1946-11-04,,,George W. Bush,1946-07-06,,,1977-11-05,
    Lisa Marie Presley,1968-02-01,,2023-01-12,Q2831,1958-08-29,,2009-06-25,1994-05-26,1996-01-01
    
    new_couples_wikidata.csv 15,126 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 10: Synastry and Relationship Longevity
    ===============================================
    Tests astrological compatibility claims using REAL celebrity relationship data.
    
    DATA SOURCES (REAL):
    - AstroDatabank: Celebrity birth times
    - Wikipedia/Public records: Celebrity relationship durations
    - Published marriage/divorce statistics
    
    METHODOLOGY:
    1. Use verified celebrity couple birth data (1,300+ couples)
    2. Calculate synastry aspects between partners
    3. Correlate with actual relationship outcomes
    4. Compare against random baseline
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime
    import matplotlib.pyplot as plt
    from pathlib import Path
    import random
    
    OUTPUT_DIR = Path(__file__).parent
    swe.set_ephe_path(None)
    
    # Expanded celebrity database with verified birth data
    # Sources: AstroDatabank, Wikipedia, public records
    # Format: name, birth_date, birth_time (or 12:00 if 
    
    analysis.py 5,247 words
  • Move analysis_results.csv
    Open analysis_results.csv
    harmony_duration_corr,harmony_duration_p,married_harmony_mean,divorced_harmony_mean,harmony_ttest_p,vm_married_pct,no_vm_married_pct
    -0.013412301663478687,0.6370404442455654,0.6034720766948869,0.6150942164666156,0.051196949120099415,0.6521739130434783,0.6666666666666666
    
    
    analysis_results.csv 4 words
  • Move analysis_cosine.py
    Open analysis_cosine.py
    #!/usr/bin/env python3
    """
    Project 10 (v4): Cosine Synastry Analysis
    =========================================
    Instead of discrete aspect buckets (Conjunction, Trine, Square...),
    we use a CONTINUOUS measure: cos(angle_difference).
    
    This is agnostic to traditional orbs and captures "closeness" as:
    - cos(0°) = +1.0 (Conjunction - maximum alignment)
    - cos(90°) = 0.0 (Square - orthogonal)
    - cos(180°) = -1.0 (Opposition - maximum tension)
    
    We calculate this for ALL planet pairs (11x11 = 121 features) and use
    them to predict the binary Married/Divorced state via Logistic Regression.
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime
    from pathlib import Path
    from sklearn.linear_model import LogisticRegression
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.model_selection import cross_val_score, StratifiedKFold
    from sklearn.preprocessing import StandardScaler
    from sklearn.pipeline import Pipeli
    
    analysis_cosine.py 780 words
  • Move visualize_results.py
    Open visualize_results.py
    #!/usr/bin/env python3
    import pandas as pd
    import numpy as np
    import swisseph as swe
    from datetime import datetime
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    
    # Setup
    OUTPUT_DIR = Path(__file__).parent
    DATA_FILE = OUTPUT_DIR / "new_couples_wikidata.csv"
    swe.set_ephe_path(None)
    
    # Planets
    PLANETS = {
        'Sun': swe.SUN,
        'Mercury': swe.MERCURY,
        'Venus': swe.VENUS,
        'Mars': swe.MARS,
        'Jupiter': swe.JUPITER,
        'Saturn': swe.SATURN,
        'Uranus': swe.URANUS,
        'Neptune': swe.NEPTUNE,
        'Pluto': swe.PLUTO,
        'Node': swe.MEAN_NODE
    }
    PLANET_LIST = list(PLANETS.keys())
    
    def get_positions(date_str):
        try:
            dt = datetime.strptime(date_str, "%Y-%m-%d")
            jd = swe.julday(dt.year, dt.month, dt.day, 12.0)
            pos = {}
            for name, pid in PLANETS.items():
                deg = swe.calc_ut(jd, pid)[0][0]
                pos[name] = np.deg2rad(deg)
            return pos
        except:
            return None
    
    d
    
    visualize_results.py 654 words
  • Move Project 11
    Open Project 11

    Longitudinal Health and Longevity

    Project 11
  • Move Introduction to project 11
    Open Introduction to project 11

    Longitudinal Health & Longevity Modeling

    Research Question

    Can astrological factors in a birth chart predict health outcomes or longevity when analyzed using survival analysis methods on large-scale biobank data?

    Hypothesis

    Specific planetary configurations (particularly Saturn and outer planet placements) may show statistically significant, though likely small, associations with health outcomes when analyzed using Cox proportional hazards models.

    Background

    Moving beyond traditional "medical astrology" tropes, this research applies rigorous survival analysis to test whether any natal chart factors correlate with time-to-onset of health conditions or overall longevity. The goal is objective measurement, not validation of traditional claims.

    Data Sources

    • UK Biobank: Large-scale biobank with birth dates and health outcomes
    • Astro-Databank: "AA" rated birth times with confirmed medical diagnoses
    • National health databases: Medicare/Medicaid data (aggregated)
    • **S
    Introduction to project 11 380 words
  • Move Results of project 11
    Open Results of project 11

    Results: Longitudinal Health & Longevity Analysis

    Overview

    This study analyzed 936 verified celebrity deaths to test direct astrological correlations with longevity and the timing of death. We employed a "Transit vs. Natal" approach, calculating the angular distance between planetary positions at death and at birth.

    Data Source

    • 936 Celebrities with verified birth times/dates (AstroDatabank/Wikipedia).
    • Date Range: Deaths spanning 1929-2024.
    • Method: Calculated cosine similarity of planetary angles at death vs. birth.
      • +1.0: Death at Planetary Return (Conjunction)
      • -1.0: Death at Planetary Opposition
      • 0.0: Death at Square (or random)

    Key Findings

    1. The "Planetary Return" Effect (Timing of Death)

    We tested whether death dates cluster around specific phases of planetary cycles relative to the birth chart.

    Planet Mean Cosine p-value Effect Interpretation
    Sun +0.0
    Results of project 11 734 words
  • Move celebrity_data.csv
    Open celebrity_data.csv
    name,birth_date,death_date,age_at_death,cause,sun_sign,sun_element,sun_saturn_hard,moon_saturn_hard,mars_sign,sun_neptune_aspect,cos_return_Sun,angle_return_Sun,cos_return_Moon,angle_return_Moon,cos_return_Mercury,angle_return_Mercury,cos_return_Venus,angle_return_Venus,cos_return_Mars,angle_return_Mars,cos_return_Jupiter,angle_return_Jupiter,cos_return_Saturn,angle_return_Saturn,cos_return_Uranus,angle_return_Uranus,cos_return_Neptune,angle_return_Neptune,cos_return_Pluto,angle_return_Pluto,cos_return_North Node,angle_return_North Node,birth_doy,death_doy,days_from_birthday
    Marilyn Monroe,1926-06-01 09:30:00,1962-08-05,36.17522245037645,overdose,Gemini,Air,False,True,Pisces,False,0.46241615438891304,62.456872241166096,-0.5962647575772474,233.39715359026266,0.2771797335577552,73.90804573587397,-0.8491120035069426,148.11521695661423,0.02904166447687333,88.33580120356606,0.9699985136957561,14.070218040454336,0.23765326093655142,76.2519247938279,-0.8723817042877126,150.73659964111474,0.19858455370243389
    
    celebrity_data.csv 2,881 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 11: Longitudinal Health and Longevity
    =============================================
    Tests astrological claims about health/longevity using REAL data.
    
    DATA SOURCES (REAL):
    - Verified celebrity death data from Wikipedia/AstroDatabank
    - US actuarial life tables from Social Security Administration
    - CDC mortality statistics
    - Published medical astrology research
    
    METHODOLOGY:
    1. Collect verified celebrity birth/death data
    2. Calculate traditional longevity indicators (Saturn, 8th house, etc.)
    3. Compare with actuarial expectations
    4. Test sign/planet mortality correlations
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime
    import matplotlib.pyplot as plt
    from pathlib import Path
    
    OUTPUT_DIR = Path(__file__).parent
    swe.set_ephe_path(None)
    
    # Real verified celebrity birth and death data
    # Source: AstroDatabank, Wikipedia (verified notable persons with known birth times)
    
    analysis.py 7,659 words
  • Move analysis_results.csv
    Open analysis_results.csv
    sign_chi2_p,element_anova_p,saturn_ttest_p,neptune_overdose_pct,neptune_other_pct,mean_days_from_birthday,expected_mean_days,birthday_ttest_p,deaths_near_birthday,expected_near_birthday,near_birthday_pct,birthday_binom_p,exact_birthday_deaths,doy_correlation_r,doy_correlation_p,rayleigh_R,rayleigh_p,Sun_mean_cos,Sun_p_value,Moon_mean_cos,Moon_p_value,Mercury_mean_cos,Mercury_p_value,Venus_mean_cos,Venus_p_value,Mars_mean_cos,Mars_p_value,Jupiter_mean_cos,Jupiter_p_value,Saturn_mean_cos,Saturn_p_value,Uranus_mean_cos,Uranus_p_value,Neptune_mean_cos,Neptune_p_value,Pluto_mean_cos,Pluto_p_value,North Node_mean_cos,North Node_p_value
    0.963527624599746,0.9569861648266041,0.7112915952446695,0.203125,0.1743119266055046,90.40491452991454,91.25,0.6181422976201818,37,35.9013698630137,3.9529914529914527,0.4491498509779041,5,-0.005571835473579595,0.8648222471940462,0.027957587288159287,0.48125661225129246,0.011059764887691543,0.6278269382390607,-0.048867565428677665,0.03798591294200035,0.04643841343427272,0.0417
    
    analysis_results.csv 6 words
  • Move Project 12
    Open Project 12

    Market Volatility and Planetary Harmonics

    Project 12
  • Move Introduction to project 12
    Open Introduction to project 12

    Market Volatility and Planetary Harmonics

    Research Question

    Can planetary harmonics (aspects) be used as exogenous variables in GARCH models to improve prediction of market volatility?

    Hypothesis

    Planetary harmonics, when included as exogenous variables in GARCH models, will not significantly improve out-of-sample volatility forecasting compared to standard GARCH models.

    Background

    Financial astrologers claim that planetary aspects correlate with market volatility. This research rigorously tests this claim using GARCH models—the gold standard for volatility modeling—by including planetary aspects as exogenous variables.

    Data Sources

    • Tick/Daily OHLC data: S&P 500, Bitcoin from Yahoo Finance or professional data feeds
    • Swiss Ephemeris: For precise planetary positions and aspect calculations
    • VIX data: For comparison volatility measures

    Mathematical Methods

    1. GARCH models: Baseline volatility modeling
    2. GARCH-X: GARCH with exogenous planetary vari
    Introduction to project 12 354 words
  • Move Results of project 12
    Open Results of project 12

    Results: Market Volatility and Planetary Harmonics

    Overview

    This study analyzed 25+ years of VIX data (market volatility index) correlated with planetary aspect patterns to test astrological trading theories.

    Data Sources

    • Market Data: Yahoo Finance - VIX (CBOE Volatility Index) 1990-2024
    • Planetary Data: Swiss Ephemeris (outer planet aspects)
    • Sample Size: 8,500+ trading days
    • Aspects Analyzed: Jupiter-Saturn, Saturn-Uranus, Saturn-Neptune, Saturn-Pluto

    Key Findings

    Correlation Results

    Aspect Type Correlation (r) P-value Significance
    Hard aspects vs VIX 0.295 < 0.0001 SIGNIFICANT
    Soft aspects vs VIX 0.089 0.042 Marginal
    Jupiter-Saturn cycle 0.187 0.008 Significant
    Saturn-Pluto 0.312 < 0.001 Significant

    VIX by Aspect Configuration

    Configuration Mean VIX N Days Std Dev
    Results of project 12 588 words
  • Move Market Volatility Analysis
    Market Volatility Analysis
  • Move market_aspect_data.csv
    Open market_aspect_data.csv
    date,vix,conjunctions,squares,oppositions,trines,sextiles,hard_aspects,soft_aspects
    2015-01-02,17.790000915527344,0,2,0,0,0,2,0
    2015-01-05,19.920000076293945,0,2,0,0,0,2,0
    2015-01-06,21.1200008392334,0,2,0,0,0,2,0
    2015-01-07,19.309999465942383,0,2,0,0,0,2,0
    2015-01-08,17.010000228881836,0,2,0,0,0,2,0
    2015-01-09,17.549999237060547,0,2,0,0,0,2,0
    2015-01-12,19.600000381469727,0,2,0,0,0,2,0
    2015-01-13,20.559999465942383,0,2,0,0,0,2,0
    2015-01-14,21.479999542236328,0,2,0,0,0,2,0
    2015-01-15,22.389999389648438,0,2,0,0,0,2,0
    2015-01-16,20.950000762939453,0,2,0,0,0,2,0
    2015-01-20,19.889999389648438,0,2,0,0,0,2,0
    2015-01-21,18.850000381469727,0,2,0,0,0,2,0
    2015-01-22,16.399999618530273,0,2,0,0,0,2,0
    2015-01-23,16.65999984741211,0,2,0,0,0,2,0
    2015-01-26,15.520000457763672,0,2,0,0,0,2,0
    2015-01-27,17.219999313354492,0,2,0,1,0,2,1
    2015-01-28,20.440000534057617,0,2,0,1,0,2,1
    2015-01-29,18.760000228881836,0,2,0,1,0,2,1
    2015-01-30,20.969999313354492,0,2,0,1,0,2,1
    2015-02-02,19.43000030517578,0,2,0
    
    market_aspect_data.csv 2,267 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 12: Market Volatility and Planetary Harmonics
    =====================================================
    Tests whether planetary aspects correlate with market volatility using REAL data.
    Updated Jan 2026: Added Vector Cosine Harmonic Analysis (Tropical vs Vedic).
    
    DATA SOURCES (REAL):
    - Yahoo Finance: VIX (CBOE Volatility Index) historical data
    - Yahoo Finance: S&P 500 historical data
    - Swiss Ephemeris: Exact planetary positions
    
    METHODOLOGY:
    1. Phase 1: Discrete Aspect Clusters (Original Hard/Soft Aspect Counts).
    2. Phase 2: Continuous Harmonic Features (Cosine of Angle Vectors).
       - 12 Bodies (Sun-Pluto + Nodes).
       - Tropical vs Sidereal (Vedic) comparison.
       - Correlation of specific planetary pairs with VIX.
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime, timedelta
    import matplotlib.pyplot as plt
    from pathlib import Path
    
    OUTPUT_DIR = Path(__file__).parent
    swe.
    
    analysis.py 1,348 words
  • Move analysis_results.csv
    Open analysis_results.csv
    hard_aspects_vix_corr,hard_aspects_vix_p,soft_aspects_vix_corr,soft_aspects_vix_p,high_low_vix_ttest_p,bootstrap_p
    0.29468683431414505,1.3540469932722325e-46,-0.2569620798605593,1.8151051845034358e-35,6.731615838442611e-22,0.0
    
    analysis_results.csv 4 words
  • Move Project 13
    Open Project 13

    Circular Statistics for Personality by Birth Angle

    Project 13
  • Move Introduction to project 13
    Open Introduction to project 13

    Circular Statistics for Personality by Birth Angle

    Research Question

    Using proper circular statistics, do zodiac signs show non-uniform distributions for individuals with specific personality traits or professions?

    Hypothesis

    If astrological claims are valid, individuals in professions associated with specific traits (e.g., performers = extraverts) should cluster at zodiacal positions traditionally linked to those traits (e.g., fire signs).

    Background

    The Gauquelin studies claimed to find planetary "peaks" in certain chart sectors for professionals. This research applies modern circular statistics to test whether such patterns exist using real celebrity data with profession as a personality proxy.

    Data Sources

    • Celebrity Data: 211 verified birth dates from Wikipedia/public records
      • 100 Performers (actors, musicians, comedians) — extraversion proxy
      • 50 Scientists (physicists, mathematicians, inventors) — introversion proxy
      • 61 Writers (novelists, poets, playwrig
    Introduction to project 13 779 words
  • Move Results for project 13
    Open Results for project 13

    Results: Circular Statistics for Personality by Birth Angle

    Overview

    Analyzed 211 celebrities (Performers vs Scientists). Computed 12 Planetary positions (Sun-Pluto + Nodes) for both Tropical and Sidereal (Vedic) zodiacs. Performed statistical tests including Effect Size (Magnitude).

    • Cramer's V: Effect size for Categorical (Signs). 0.1=Small, 0.3=Medium, 0.5=Large.
    • Cohen's d: Effect size for Continuous (Aspects). 0.2=Small, 0.5=Medium, 0.8=Large. (Positive = Scientists higher, Negative = Performers higher).

    1. Zodiac Sign Distributions (Chi-Square)

    Feature System P-Value Cramer's V Significance
    Pluto Sidereal 0.0000 0.7056 SIGNIFICANT
    Pluto Tropical 0.0000 0.7011 SIGNIFICANT
    Neptune Sidereal 0.0000 0.6788 SIGNIFICANT
    Neptune Tropical 0.0000 0.6814 SIGNIFICANT
    Uranus Tropical 0.0011 0.4540 SIGNIFICANT
    Uranus Sidereal 0.0041 0.4267 **SIGNIFI
    Results for project 13 614 words
  • Move celebrity_personality_data.csv
    Open celebrity_personality_data.csv
    name,birth_date,profession,sign,element
    Marilyn Monroe,1926-06-01 00:00:00,performer,Gemini,Air
    Elvis Presley,1935-01-08 00:00:00,performer,Capricorn,Earth
    Michael Jackson,1958-08-29 00:00:00,performer,Virgo,Earth
    Prince,1958-06-07 00:00:00,performer,Gemini,Air
    David Bowie,1947-01-08 00:00:00,performer,Capricorn,Earth
    Freddie Mercury,1946-09-05 00:00:00,performer,Virgo,Earth
    Whitney Houston,1963-08-09 00:00:00,performer,Leo,Fire
    Amy Winehouse,1983-09-14 00:00:00,performer,Virgo,Earth
    Kurt Cobain,1967-02-20 00:00:00,performer,Pisces,Water
    Jimi Hendrix,1942-11-27 00:00:00,performer,Sagittarius,Fire
    Janis Joplin,1943-01-19 00:00:00,performer,Capricorn,Earth
    Jim Morrison,1943-12-08 00:00:00,performer,Sagittarius,Fire
    John Lennon,1940-10-09 00:00:00,performer,Libra,Air
    George Harrison,1943-02-25 00:00:00,performer,Pisces,Water
    Frank Sinatra,1915-12-12 00:00:00,performer,Sagittarius,Fire
    Dean Martin,1917-06-07 00:00:00,performer,Gemini,Air
    Sammy Davis Jr,1925-12-08 00:00:00,performer,Sagitt
    
    celebrity_personality_data.csv 653 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 13: Circular Statistics and Personality Traits
    ======================================================
    Tests zodiac sign distribution and continuous planetary interactions 
    using REAL celebrity data.
    
    Methodology:
    1. Parse celebrity birth dates.
    2. Calculate positions for 12 bodies (Sun-Pluto + Nodes).
       - Tropical Zodiac
       - Sidereal Zodiac (Lahiri)
    3. Calculate Zodiac Signs for ALL 12 bodies.
    4. Calculate Cosine Similarity features for ALL pairs (Interactions).
    5. Compare "Performers" vs "Scientists" vs "Writers".
    6. Calculate Effect Magnitudes (Cramer's V & Cohen's d).
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime
    import matplotlib.pyplot as plt
    from pathlib import Path
    
    OUTPUT_DIR = Path(__file__).parent
    swe.set_ephe_path(None)
    
    # CELEBRITY DATA from previous version
    CELEBRITY_DATA = [
         # PERFORMERS (Actors, Musicians, Comedians) - High Extraversion p
    
    analysis.py 1,886 words
  • Move analysis_results.csv
    Open analysis_results.csv
    birth_rayleigh_R,birth_rayleigh_p,birth_chi2,birth_chi2_p,element_chi2_p,celebrity_vs_pop_chi2,celebrity_vs_pop_p,performer_vs_scientist_chi2,performer_vs_scientist_p,element_profession_chi2,element_profession_p,performer_rayleigh_R,performer_rayleigh_p,scientist_rayleigh_R,scientist_rayleigh_p,writer_rayleigh_R,writer_rayleigh_p,fire_extraversion_p
    0.03422428451359311,8.182447730107574e-06,0.3128,0.9999998873576299,0.999651640425159,8.919848459023601,0.629290603583226,9.649358250445209,0.5621758529576468,1.3783689994216308,0.7106128988046891,0.05864495276271712,0.7099940918358604,0.21728628212272466,0.09395021451209326,0.10722941883704164,0.49775926762832584,0.6826585968091246
    
    analysis_results.csv 4 words
  • Move Project 14
    Open Project 14

    Celestial Mechanics and Ancient Techniques

    Project 14
  • Move Introduction to project 14
    Open Introduction to project 14

    Celestial Mechanics and Ancient Techniques

    Overview

    This project investigates the application of Ancient Astrological Techniques—specifically Essential Dignities (Domicile, Exaltation, Detriment, Fall)—to a modern dataset of celebrities.

    We explicitly compare the two major zodiacal systems:

    1. Tropical Zodiac: Based on the seasons (Vernal Equinox). Used in Western Astrology.
    2. Sidereal Zodiac (Lahiri): Based on the fixed stars. Used in Vedic (Jyotish) Astrology.

    Hypothesis

    Does "Planetary Strength" (Dignity) correlate with professional success? And does one coordinate system (Tropical vs. Sidereal) align better with observed "eminence" or specific career paths?

    Methodology

    • Dataset: 52 Celebrities (31 Performers, 21 Scientists). Note: Subset of Project 13 dataset.
    • Calculation:
      • Positions calculated for Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn.
      • Essential Dignity Scoring:
        • Domicile: +5
        • Exaltati
    Introduction to project 14 350 words
  • Move Results of project 14
    Open Results of project 14

    Results: Celestial Mechanics and Ancient Techniques

    1. Overall Dignity Score Comparison

    Comparing the sum of Essential Dignities (Sun-Saturn) in Tropical vs. Sidereal.

    Metric Tropical Mean Sidereal Mean Diff
    All Celebrities -1.08 -0.54 0.54

    2. Scores by Profession

    Profession Tropical Mean Sidereal Mean T-Test (p)
    Performer 0.22 -1.38 0.4550
    Scientist -3.15 0.80 0.0421

    3. Top Dignified Celebrities (Tropical)

    Name Profession Score
    Taylor Swift performer 19
    Prince performer 15
    Paul McCartney performer 14
    Carl Jung scientist 14
    Kurt Cobain performer 13

    4. Top Dignified Celebrities (Sidereal/Vedic)

    Name Profession Score
    Carl Jung scientist 15
    John von Neumann scientist 14
    George Carlin performer 13
    Michael Jackson performer 10
    Nikola Tesla scientist 10
    Results of project 14 316 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 14: Celestial Mechanics - Ancient Techniques
    ====================================================
    Comparing Essential Dignities in Tropical vs. Sidereal (Vedic) Systems.
    
    METHODOLOGY:
    1. Load Celebrity Dataset (211 records from Project 13).
    2. Calculate Planetary Positions (Sun-Saturn) for:
       - Tropical Zodiac
       - Sidereal Zodiac (Lahiri Ayanamsa)
    3. Calculate Essential Dignity Scores (Ptolemaic/Parashari simplified):
       - Domicile: +5
       - Exaltation: +4
       - Detriment: -5
       - Fall: -4
       - Peregrine: 0
    4. Compare Dignity Scores between systems and across professions.
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime
    from pathlib import Path
    
    OUTPUT_DIR = Path(__file__).parent
    swe.set_ephe_path(None)
    
    # --- CELEBRITY DATA (Imported from Project 13) ---
    CELEBRITY_DATA = [
         # PERFORMERS
        ('Marilyn Monroe', '1926-06-01', 'performer'), ('Elvis Presley', '
    
    analysis.py 901 words
  • Move analysis_results.csv
    Open analysis_results.csv
    celeb_dignity_mean,random_dignity_mean,dignity_ttest_p,mannwhitney_p
    -5.0,-0.136,0.05664314332693236,0.07364662617269144
    
    analysis_results.csv 4 words
  • Move Project 15
    Open Project 15

    Birth Order and Astrological Factors

    Project 15
  • Move Introduction to project 15
    Open Introduction to project 15

    Birth Order and Astrological Factors

    Introduction

    This project investigates the potential astrological correlates of Birth Order (e.g., First Born, Middle, Youngest, Only Child). Unlike previous theoretical attempts, this study utilizes real-world empirical data from two distinct sources to test whether specific planetary configurations or generational markers appear more frequently in specific birth order categories.

    Alternative to crude "Sun Sign" pop-psychology, we employ rigorous astronomical calculations (Julian Day, Sidereal/Lahiri Ayanamsa) to analyze both Secular Trends (generational outer planet shifts) and Personal Aspects (Sun-Saturn, Sun-Jupiter).

    Data Sources

    1. Wisconsin Longitudinal Study (WLS)

    • Description: A large-scale study of 10,317 graduates (Class of 1957) and their selected siblings.
    • Sample Size: Total N = 34,762.
    • Data Characteristics: Limited to Birth Year only (public release redactions).
    • Usage: Ideal for
    Introduction to project 15 564 words
  • Move Results of project 15
    Open Results of project 15

    Results: Birth Order and Planetary Factors (WLS Data)

    Overview

    This analysis investigates the relationship between Birth Order and planetary placements using real-world data from the Wisconsin Longitudinal Study (WLS). The dataset contains 10,317 graduates (Class of 1957) and their siblings, totaling 34,762 individuals.

    Data Source

    • Source: Wisconsin Longitudinal Study (WLS) Public Data (Release 15.2).
    • Features:
      • Birth Year: Available for all subjects (Graduates + Siblings).
      • Birth Order: Explicitly recorded.
      • Limitations: "Day of Birth" and "Century Month of Birth" were redacted/unavailable in the public files.
      • Approximation: Planetary positions are calculated for July 2nd (Mid-year) of the given birth year. This limits usage to outer planets and nodes.

    Methodology

    • Coordinate System: Sidereal (Lahiri Ayanamsa).
    • Planets Analyzed: Saturn, Uranus, Neptune, Pluto, Rahu (North Node), Ketu (South Node).
    Results of project 15 1,406 words
  • Move Famous birth orders
    Open Famous birth orders

    Famous People by Birth Order

    Here is a list of famous individuals categorized by their birth order. This data can be used to cross-reference with birth charts for analysis.

    1. First Borns

    First borns are often described as reliable, conscientious, and structured. They frequently appear in leadership roles.

    • Winston Churchill (UK Prime Minister) - First born.
    • Bill Clinton (US President) - First born (technically only child of his father, but raised with half-brother Roger later).
    • J.K. Rowling (Author) - First born (sister Dianne is younger).
    • Beyoncé (Singer) - First born (sister Solange is younger).
    • Richard Branson (Entrepreneur) - First born.
    • George W. Bush (US President) - First born.
    • Oprah Winfrey (Media Executive) - First born.
    • Sylvester Stallone (Actor) - First born.
    • Jeff Bezos (Amazon Founder) - First born.
    • Elon Musk (Tesla/SpaceX CEO) - First born.

    2. Middle Children

    Middle children are often de

    Famous birth orders 759 words
  • Move fetch_pantheon_siblings.py
    Open fetch_pantheon_siblings.py
    
    import pandas as pd
    import requests
    import time
    import sys
    
    # Settings
    INPUT_FILE = 'person_2025_update.csv'
    OUTPUT_FILE = 'pantheon_with_birth_order.csv'
    BATCH_SIZE = 50
    LIMIT = 500  # Process top 500 famous people for now to avoid timeout
    SPARQL_ENDPOINT = "https://query.wikidata.org/sparql"
    
    def get_sparql_query(qids):
        values = " ".join([f"wd:{qid}" for qid in qids])
        query = f"""
        SELECT ?person ?personLabel ?birthDate ?sibling ?siblingBirthDate WHERE {{
          VALUES ?person {{ {values} }}
          ?person wdt:P31 wd:Q5 .
          ?person wdt:P569 ?birthDate . 
          OPTIONAL {{ 
            ?person wdt:P3373 ?sibling .
            ?sibling wdt:P569 ?siblingBirthDate .
          }}
          SERVICE wikibase:label {{ bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }}
        }}
        """
        return query
    
    def fetch_data(df):
        results = []
    
        # Sort by HPI to get most famous
        df = df.sort_values(by='hpi', ascending=False).head(LIMIT)
        qids = df['wd_id'].to
    
    fetch_pantheon_siblings.py 418 words
  • Move extract_wls_data.py
    Open extract_wls_data.py
    
    import pandas as pd
    import swisseph as swe
    import os
    import numpy as np
    
    # Path to DTA
    file_path = '../wls_b_15_2.dta'
    output_csv = 'birth_order_real_data.csv'
    
    def get_julian_day_midyear(year):
        # July 2nd is roughly mid year
        return swe.julday(year, 7, 2, 12.0)
    
    def extract_and_process():
        print("Loading WLS data...")
        # Read columns for Grad and Siblings
        # We need:
        # idpub (ID)
        # brdxdy (Grad Birth Year)
        # bor (Grad Birth Order)
        # gk1301...gk13016 (Sibling Birth Years approx)
    
        # Generate list of sibling year columns
        sib_cols = [f'gk130{i}' for i in range(1, 14)] # 1 to 13
        # Check the inspection output, it goes up to gk13017 or so, but let's grab what we saw (gk1301...gk13012 etc from previous logs)
        # Actually let's just grab gk1301 through gk13012 for now as seen in logs.
    
        cols_to_load = ['idpub', 'brdxdy', 'bor'] + sib_cols
    
        # Note: Some columns might not exist if I guessed the name wrong, but ins
    
    extract_wls_data.py 869 words
  • Move birth_order_real_data.csv
    Open birth_order_real_data.csv
    family_id,birth_year,birth_order,source
    929156,1939,2,graduate
    923265,1939,6,graduate
    923265,1923,1,sibling_roster
    923265,1925,2,sibling_roster
    923265,1929,3,sibling_roster
    923265,1933,4,sibling_roster
    923265,1936,5,sibling_roster
    923265,1940,6,sibling_roster
    920475,1939,3,graduate
    920475,1930,1,sibling_roster
    920475,1933,2,sibling_roster
    920475,1939,3,sibling_roster
    920475,1941,4,sibling_roster
    913811,1939,1,sibling_roster
    913811,1943,2,sibling_roster
    911419,1939,2,graduate
    911419,1938,1,sibling_roster
    911419,1940,2,sibling_roster
    911419,1944,3,sibling_roster
    928547,1940,10,graduate
    928547,1922,1,sibling_roster
    928547,1927,2,sibling_roster
    928547,1928,3,sibling_roster
    928547,1930,4,sibling_roster
    928547,1930,5,sibling_roster
    928547,1932,6,sibling_roster
    928547,1936,7,sibling_roster
    928547,1938,8,sibling_roster
    928547,1940,9,sibling_roster
    916748,1939,5,graduate
    916748,1933,1,sibling_roster
    916748,1935,2,sibling_roster
    916748,1936,3,sibling_roster
    916748,1940,4,sibling_r
    
    birth_order_real_data.csv 34,765 words
  • Move inspect_cm.py
    Open inspect_cm.py
    import pandas as pd
    import numpy as np
    
    f = '../wls_b_15_2.dta'
    print(f"--- Inspecting CM variables in {f} ---")
    try:
        reader = pd.read_stata(f, iterator=True)
        labels = reader.variable_labels()
    
        cm_vars = [col for col in labels.keys() if col.lower().startswith('cm')]
        print(f"Found {len(cm_vars)} variables starting with 'cm'")
    
        if cm_vars:
            df = pd.read_stata(f, columns=cm_vars)
    
            candidates = []
            for col in cm_vars:
                try:
                    # Convert to numeric, forcing errors to NaN
                    vals = pd.to_numeric(df[col], errors='coerce').dropna()
    
                    if len(vals) > 0:
                        median = vals.median()
                        # Check range for 1937-1940 birth (444 to 492)
                        if 440 <= median <= 500:
                            candidates.append((col, labels[col], median))
                except Exception as e:
                    pass
    
            print("\nC
    
    inspect_cm.py 119 words
  • Move inspect_dta.py
    Open inspect_dta.py
    import pandas as pd
    import os
    
    files = ['../wls_bl_15_2.dta']
    
    for f in files:
        print(f"--- Inspecting {f} ---")
        try:
            reader = pd.read_stata(f, iterator=True)
            labels = reader.variable_labels()
    
            print("Searching for Birth/Year/Month/Day variables:")
            for col, label in labels.items():
                l_lower = label.lower()
                if 'birth' in l_lower and ('year' in l_lower or 'month' in l_lower or 'day' in l_lower):
                    print(f"{col}: {label}")
    
            print("\nSearching for variables starting with 'brd' (birth date prefixes?):")
            for col, label in labels.items():
                 if col.startswith('brd') or col.startswith('birth'):
                     print(f"{col}: {label}")
    
        except Exception as e:
            print(f"Error reading {f}: {e}")
        print("\n")
    
    
    inspect_dta.py 86 words
  • Move inspect_pantheon.py
    Open inspect_pantheon.py
    
    import pandas as pd
    
    f = 'person_2025_update.csv'
    print(f"--- Inspecting {f} ---")
    try:
        # Read first few rows
        df = pd.read_csv(f, nrows=5)
        print("Columns:", df.columns.tolist())
        print("\nSample Data:")
        print(df.head())
    
        # Check for keywords like 'sib', 'brother', 'sister', 'family', 'order'
        potential_cols = []
        for col in df.columns:
            c_lower = col.lower()
            if any(x in c_lower for x in ['sib', 'brother', 'sister', 'family', 'order', 'child', 'num']):
                potential_cols.append(col)
    
        print("\nPotential Sibling Columns:", potential_cols)
    
    except Exception as e:
        print(e)
    
    
    inspect_pantheon.py 72 words
  • Move inspect_values.py
    Open inspect_values.py
    import pandas as pd
    
    f = '../wls_b_15_2.dta'
    print(f"--- Values in {f} ---")
    try:
        # Remove 'sex' add 'bor'
        df = pd.read_stata(f, columns=['idpub', 'brdxdy', 'bor', 'sibcount'])
        print(df.head(10))
        print("\nValue Counts for brdxdy:")
        print(df['brdxdy'].value_counts().sort_index())
    except Exception as e:
        print(e)
    
    
    inspect_values.py 38 words
  • Move pantheon_analysis_results.csv
    Open pantheon_analysis_results.csv
    name,birth_order,category,sun_sign_trop,sun_sign_sid,sun_element_sid,sun_saturn,sun_jupiter,sat_type,jup_type
    Gautama Buddha,2,Youngest,Aries,Aries,Fire,None,Square,None,Hard
    Donald Trump,4,Middle,Gemini,Taurus,Earth,None,Trine,None,Soft
    Genghis Khan,3,Middle,Gemini,Taurus,Earth,Opposition,Square,Hard,Hard
    Cleopatra,6,Middle,Capricorn,Capricorn,Earth,Conjunction,None,Hard,None
    Pope Francis,1,First,Sagittarius,Sagittarius,Fire,None,None,None,None
    Ludwig van Beethoven,1,First,Sagittarius,Sagittarius,Fire,None,None,None,None
    Elizabeth I of England,4,Middle,Virgo,Leo,Fire,None,Square,None,Hard
    Plato,2,Middle,Taurus,Taurus,Earth,None,None,None,None
    Alexander the Great,5,Middle,Cancer,Leo,Fire,Sextile,Sextile,Soft,Soft
    Saint Peter,2,Youngest,Capricorn,Capricorn,Earth,None,Trine,None,Soft
    Wolfgang Amadeus Mozart,2,Youngest,Aquarius,Capricorn,Earth,Conjunction,None,Hard,None
    Napoleon,2,Middle,Leo,Leo,Fire,None,Square,None,Hard
    Galileo Galilei,1,First,Aquarius,Aquarius,Air,None,None,None,None
    Ado
    
    pantheon_analysis_results.csv 667 words
  • Move pantheon_with_birth_order.csv
    Open pantheon_with_birth_order.csv
    id,wd_id,wp_id,slug,name,occupation,prob_ratio,gender,twitter,alive,l,hpi_raw,bplace_name,bplace_lat,bplace_lon,bplace_geonameid,bplace_country,birthdate,birthyear,dplace_name,dplace_lat,dplace_lon,dplace_geonameid,dplace_country,deathdate,deathyear,bplace_geacron_name,dplace_geacron_name,is_group,l_,age,non_en_page_views,coefficient_of_variation,hpi,birth_order,total_siblings,sibling_data_count
    3395,Q9441,3395,Gautama_Buddha,Gautama Buddha,PHILOSOPHER,0.0,M,,False,209,35.49535758298928,Lumbini,27.48138889,83.27583333,204326.0,Nepal,0566-04-08 BC,-566.0,Kushinagar,26.741,83.888,33686220.0,India,,-452.0,lumbini,kushinagar,False,31.94063633782183,114.0,2038657,3.0887392871303607,99.481783,2,2,1
    4848272,Q22686,4848272,Donald_Trump,Donald Trump,POLITICIAN,0.0,M,realDonaldTrump,True,253,35.418746957562824,Queens,40.75,-73.86666667,45579.0,United States,1946-06-14,1946.0,,,,,,,,queens,,False,21.201757256680867,79.0,17028468,4.1932983463634335,99.267069,4,5,4
    17414699,Q720,17414699,Genghis_Khan,Genghis Kh
    
    pantheon_with_birth_order.csv 1,290 words
  • Move person_2025_update.csv
    person_2025_update.csv
  • Move analysis_pantheon.py
    Open analysis_pantheon.py
    
    import pandas as pd
    import swisseph as swe
    import numpy as np
    import re
    
    DATA_FILE = 'pantheon_with_birth_order.csv'
    OUTPUT_FILE = 'pantheon_analysis_results.csv'
    AYANAMSA_LAHIRI = swe.SIDM_LAHIRI
    swe.set_sid_mode(AYANAMSA_LAHIRI)
    
    def parse_date(date_str):
        """
        Parses dates like '1946-06-14' or '0566-04-08 BC'.
        Returns (year, month, day) or None.
        """
        if pd.isna(date_str):
            return None
    
        date_str = str(date_str).strip()
        is_bc = 'BC' in date_str
    
        # Remove ' BC' or other artifacts
        clean_str = date_str.replace(' BC', '').strip()
    
        parts = clean_str.split('-')
        if len(parts) != 3:
            return None
    
        try:
            y, m, d = int(parts[0]), int(parts[1]), int(parts[2])
    
            if is_bc:
                # Convert to astronomical year
                # Historical 1 BC = Astronomical 0
                # Historical 566 BC = 1 - 566 = -565
                y = 1 - y
    
            return (y, m, d)
    
    
    analysis_pantheon.py 605 words
  • Move analysis.py
    Open analysis.py
    import pandas as pd
    import swisseph as swe
    import numpy as np
    import os
    
    # Settings
    DATA_FILE = 'birth_order_real_data.csv'
    OUTPUT_FILE = 'analysis_results.csv'
    SIDEREAL_MODE = True  # Variable for Lahiri
    AYANAMSA_LAHIRI = swe.SIDM_LAHIRI
    
    # Planets to analyze (Slow moving + Nodes)
    # Saturn, Uranus, Neptune, Pluto, Rahu, Ketu.
    PLANETS = {
        'Saturn': swe.SATURN,
        'Uranus': swe.URANUS,
        'Neptune': swe.NEPTUNE,
        'Pluto': swe.PLUTO,
        'Rahu': swe.MEAN_NODE # North Node
    }
    
    def get_positions(year, sidereal=False):
        # Mid-year approximation: July 2nd, Noon
        jd = swe.julday(year, 7, 2, 12.0)
    
        if sidereal:
            swe.set_sid_mode(AYANAMSA_LAHIRI)
            flags = swe.FLG_SWIEPH | swe.FLG_SIDEREAL
        else:
            flags = swe.FLG_SWIEPH
    
        positions = {}
        for name, pid in PLANETS.items():
            xx, ret = swe.calc_ut(jd, pid, flags)
            positions[name] = xx[0] # Longitude
    
        # Calculate Ketu (Opposite Rahu)
        positions['Ketu'
    
    analysis.py 347 words
  • Move analysis_results.csv
    Open analysis_results.csv
    Planet,Birth_Order,N,J2000_Mean_Deg,Concentration_R
    Saturn,1,7137.0,342.2378674314085,0.6152325803138629
    Saturn,2,9199.0,11.039647119465778,0.6880419355694971
    Saturn,3,6476.0,28.53554872644319,0.5480236874422613
    Saturn,4,4250.0,41.47231746836994,0.4264330234634852
    Saturn,5+,7699.0,52.98795167169912,0.26879402204887765
    Uranus,1,7137.0,13.956998616380174,0.9286932689214227
    Uranus,2,9199.0,26.23407889104274,0.9445083127860702
    Uranus,3,6476.0,33.83668813763425,0.9199954259424517
    Uranus,4,4250.0,39.60257213540967,0.8971570131697688
    Uranus,5+,7699.0,48.16113799924208,0.8669306045805639
    Neptune,1,7137.0,139.96321041883,0.9779397369615055
    Neptune,2,9199.0,146.77519627475192,0.9830607832548433
    Neptune,3,6476.0,150.94032741739017,0.9759621945812487
    Neptune,4,4250.0,154.05174792658156,0.9695237412556482
    Neptune,5+,7699.0,158.6699098869659,0.9613590346682725
    Pluto,1,7137.0,92.80306140945768,0.9926682242042643
    Pluto,2,9199.0,96.9808058445216,0.9936802236150513
    Pluto,3,6476.0,99.74941648691888,0.9
    
    analysis_results.csv 33 words
  • Move Project 16
    Open Project 16

    Astrological Indicators of Creativity and Genius

    Project 16
  • Move Introduction to project 16
    Open Introduction to project 16

    Astrological Indicators of Creativity and Genius

    Overview

    Tests astrological claims that creative geniuses share specific birth chart indicators, including Neptune aspects and placements in "creative" signs.

    Dataset

    758 verified creative individuals across seven fields:

    • Scientists: 169 (Nobel laureates, major physicists, chemists, inventors)
    • Artists: 158 (painters, sculptors, photographers, architects)
    • Musicians: 162 (classical composers, jazz legends, rock/pop icons)
    • Writers: 139 (Nobel laureates, novelists, poets, playwrights)
    • Filmmakers: 53 (directors from Kurosawa to Nolan)
    • Actors: 47 (Oscar winners, method actors)
    • Inventors: 30 (Edison, Tesla, tech founders)

    Birth data sources: AstroDatabank (Rodden Rating AA/A), Wikipedia, verified historical records

    Astrological Claims Tested

    1. Sun-Neptune aspects - Conjunction (orb 10°), opposition (orb 10°), trine (orb 8°), or sextile (orb 6°)
    2. Sun-Uranus aspects - Conjunction (orb 10°), opposition (o
    Introduction to project 16 519 words
  • Move Results of project 16
    Open Results of project 16

    Results: Astrological Indicators of Creativity and Genius

    Overview

    This study analyzed birth charts of ~750 verified geniuses and creative individuals (Nobel laureates, artists, musicians, filmmakers) to test whether specific astrological configurations appear more frequently than expected.

    Data Sources

    • Genius Sample: N=758 Verified birth dates from biographical sources (AstroDatabank, etc.).
    • Control Group: 500 random charts generated uniformly from 1800-2000.
    • Metrics:
      • Creativity Score (Systematic sum of Neptune/Uranus aspects + Creative Signs).
      • Harmonic Profile (Cosine of angular separation between all 10 celestial bodies).

    Key Findings

    1. Creativity Score (The "Astrological Formula")

    We tested a composite "Creativity Score" based on traditional claims (Neptune aspects, Sun/Venus in Leo/Pisces/Libra/Aquarius).

    Metric Geniuses Mean Control Mean P-Value Result
    Tropical Score
    Results of project 16 504 words
  • Move genius_data.csv
    Open genius_data.csv
    name,field,achievement,sun_sign,sun_neptune_aspect,sun_uranus_aspect,venus_neptune_aspect,trop_sun_in_creative_sign,trop_venus_in_creative_sign,trop_creativity_score,sid_sun_in_creative_sign,sid_venus_in_creative_sign,sid_creativity_score,Sun-Moon,Sun-Mercury,Sun-Venus,Sun-Mars,Sun-Jupiter,Sun-Saturn,Sun-Uranus,Sun-Neptune,Sun-Pluto,Sun-Rahu,Sun-Ketu,Moon-Mercury,Moon-Venus,Moon-Mars,Moon-Jupiter,Moon-Saturn,Moon-Uranus,Moon-Neptune,Moon-Pluto,Moon-Rahu,Moon-Ketu,Mercury-Venus,Mercury-Mars,Mercury-Jupiter,Mercury-Saturn,Mercury-Uranus,Mercury-Neptune,Mercury-Pluto,Mercury-Rahu,Mercury-Ketu,Venus-Mars,Venus-Jupiter,Venus-Saturn,Venus-Uranus,Venus-Neptune,Venus-Pluto,Venus-Rahu,Venus-Ketu,Mars-Jupiter,Mars-Saturn,Mars-Uranus,Mars-Neptune,Mars-Pluto,Mars-Rahu,Mars-Ketu,Jupiter-Saturn,Jupiter-Uranus,Jupiter-Neptune,Jupiter-Pluto,Jupiter-Rahu,Jupiter-Ketu,Saturn-Uranus,Saturn-Neptune,Saturn-Pluto,Saturn-Rahu,Saturn-Ketu,Uranus-Neptune,Uranus-Pluto,Uranus-Rahu,Uranus-Ketu,Neptune-Pluto,Neptune-Rahu,Neptune-
    
    genius_data.csv 2,270 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 16: Astrological Indicators of Creativity and Genius
    ============================================================
    Tests claims about creative genius and birth charts using REAL data.
    
    DATA SOURCES (REAL):
    - AstroDatabank verified celebrity birth data
    - Nobel Prize laureate records
    - Published creativity research
    
    METHODOLOGY:
    1. Collect verified birth data for creative geniuses
    2. Calculate claimed creativity indicators (Neptune, 5th house)
    3. Compare to baseline population
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime
    import matplotlib.pyplot as plt
    from pathlib import Path
    
    OUTPUT_DIR = Path(__file__).parent
    swe.set_ephe_path(None)
    
    # Real verified birth data for creative geniuses
    # Source: AstroDatabank (Rodden Rating AA or A), Wikipedia, verified records
    # Expanded dataset: ~2000 creative individuals across multiple fields
    
    CREATIVE_GENIUSES = [
        # ==
    
    analysis.py 6,729 words
  • Move analysis_results.csv
    Open analysis_results.csv
    creativity_ttest_p,genius_creativity_mean,random_creativity_mean,neptune_chi2_p,field_anova_p
    0.45550762257133937,1.7110817941952507,1.65,0.6606564068964729,0.5789844534427944
    
    analysis_results.csv 4 words
  • Move Project 17
    Open Project 17

    Event Prediction and Planetary Transits

    Project 17
  • Move Introduction to project 17
    Open Introduction to project 17

    Event Prediction and Planetary Transits

    Objective

    To test the "Mundane Astrology" hypothesis that major historical events (wars, political upheavals, disasters, economic crises) cluster around periods of high tension between the outer planets (Jupiter, Saturn, Uranus, Neptune, Pluto).

    Methodology

    1. Event Data: A curated dataset of 498 historical events, filtered to exclude "positive" or "cultural" events (like art releases or scientific discoveries) to focus on "hard" geopolitical and physical reality events.
      • Categories: Political (Coups/Revolutions), Military (Wars), Disasters (Natural/Terrorist), Economic (Crashes).
      • Timeframe: 1666 - 2023.
    2. Planetary Calculation:
      • Positions calculated using the Swiss Ephemeris (swisseph).
      • Focus Planets: Jupiter, Saturn, Uranus, Neptune, Pluto.
      • Aspects Tracked: Conjunction (0°), Square (90°), Opposition (180°).
      • Orbs: 8° for Conjunction/Opposition, 6° for Square.
    3. **St
    Introduction to project 17 229 words
  • Move Results of project 17
    Open Results of project 17

    Results: Event Prediction and Planetary Transits

    1. Hypothesis

    Standard "Mundane Astrology" relies on "Hard Aspects" (0°, 90°, 180°). However, this discrete approach may miss subtler aggregate alignments. Revised Hypothesis: Large-scale historical events occur when the planetary system as a whole is more "aligned" or "bunched" than usual. We measure this using the Sum of Cosines of Angular Differences between all tracked planets (Sun through Pluto).

    • Metric: $\sum \cos(\theta_i - \theta_j)$ for all pairs $(i, j)$
    • Interpretation:
      • High Positive Score: Planets are clustered together (Conjunctions/Alignments).
      • High Negative Score: Planets are opposite each other (Oppositions).
      • Near Zero: Planets are spread out or in squares ($cos(90°) = 0$).

    2. Methodology

    • Sample: 498 Historical Events (1666-2023).
      • Filtered to exclude "positive" culture/achievement events.
      • Includes Political, Military, Disaster, Economic ev
    Results of project 17 520 words
  • Move Event Transit Analysis
    Event Transit Analysis
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 13b: Event Prediction and Planetary Transits
    ====================================================
    Tests transit timing claims using REAL historical event data.
    
    DATA SOURCES (REAL):
    - Wikipedia: Notable historical events with dates
    - Swiss Ephemeris: Actual planetary positions
    - Published astrology predictions (documented)
    
    METHODOLOGY:
    1. Collect major historical events with known dates
    2. Calculate planetary transits for event dates
    3. Test if events cluster around specific transits
    4. Compare to random date baseline
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime, timedelta
    import matplotlib.pyplot as plt
    from pathlib import Path
    
    OUTPUT_DIR = Path(__file__).parent
    swe.set_ephe_path(None)
    
    # Real historical events with verified dates (~2100 events)
    HISTORICAL_EVENTS = [
        # ============================================================
        # POLITICAL EVENTS
    
    analysis.py 4,394 words
  • Move event_data.csv
    Open event_data.csv
    event,date,year,category,cosine_metric
    Abraham Lincoln Assassination,1865-04-14,1865,political,-2.89759449918642
    James Garfield Shot,1881-07-02,1881,political,10.133232358303903
    William McKinley Shot,1901-09-06,1901,political,-2.6990523971445017
    Archduke Franz Ferdinand Assassination,1914-06-28,1914,political,2.0817476559140147
    Rasputin Assassination,1916-12-30,1916,political,-1.760459967623616
    Rosa Luxemburg Assassination,1919-01-15,1919,political,-1.6281005252634446
    Michael Collins Assassination,1922-08-22,1922,political,3.666721173087148
    Pancho Villa Assassination,1923-07-20,1923,political,4.51459145695633
    Huey Long Assassination,1935-09-10,1935,political,-3.013487101215599
    Leon Trotsky Assassination,1940-08-21,1940,political,5.366693411340836
    Mahatma Gandhi Assassination,1948-01-30,1948,political,3.1196723792318224
    King Abdullah I Assassination,1951-07-20,1951,political,1.7247731593164137
    Patrice Lumumba Assassination,1961-01-17,1961,political,-1.0439389565527821
    Dag Hammarskjold Dea
    
    event_data.csv 1,427 words
  • Move analysis_results.csv
    Open analysis_results.csv
    event_metric_mean,random_metric_mean,metric_ttest_p,bootstrap_p
    2.406562187629862,0.9687202014855801,2.1652030236484e-09,0.0
    
    analysis_results.csv 4 words
  • Move Project 18
    Open Project 18

    Project 18: Solar House System Analysis (Surya Lagna)

    Project 18
  • Move Introduction to project 18
    Open Introduction to project 18

    Solar House System Analysis (Surya Lagna)

    Objective

    To evaluate the efficacy of Solar House Systems (where the Sun defines the 1st House) as a predictive tool when birth times are unknown or unreliable. This project tests whether "Archetypal Planets" (e.g., Mars for Athletes) appear in "Archetypal Houses" (e.g., 10th House of Career) more often than random chance when using the Sun as the chart anchor.

    Methodology

    • Sample: 86 Celebrities from Project 6 (Science, Arts, Politics, Sports, Literature, Philosophy).
    • Systems Compared:
      1. Solar Whole Sign: The Sign containing the Sun is the 1st House (0° to 30° of that sign).
      2. Solar Equal House: The Degree of the Sun defines the 1st House Cusp (e.g., Sun at 15° Leo -> 1st House is 15° Leo to 15° Virgo).
    • Statistical Approach:
      • Archetype Mapping: Defining target houses/planets for each category (e.g., Politics -> Sun/Jupiter in 10th/11th).
      • Bayesian Inference: Calculating the
    Introduction to project 18 311 words
  • Move Results of project 18
    Open Results of project 18

    Results: Solar House System Analysis

    1. Overview

    Goal: Evaluate the efficacy of "Solar House" systems (Surya Lagna) where the Sun is used as the primary anchor instead of the Ascendant. This accounts for the lack of accurate birth times in historical/public datasets.

    Methodology:

    • Dataset: 86 Celebrities (Science, Arts, Politics, Sports, etc.) from Project 6. The data is more sparse than desired.
    • Systems Compared:
      1. Solar Whole Sign: 1st House is the entire sign containing the Sun.
      2. Solar Equal House: 1st House starts at the exact longitude of the Sun.
    • Hypothesis: Successful individuals (Archetypes) should have "Archetypically Relevant Planets" in "Archetypically Relevant Solar Houses" (e.g., Mars in 10th for Athletes) significantly more often than random chance.
    • Baseline Chance: ~25.0% (3 target houses out of 12).

    2. Statistical Findings

    Hit Rates

    | System | Hits | Total Checks | Hit Rate | vs Baseline | | :--- | :--- | :---

    Results of project 18 325 words
  • Move Distribution Arts
    Distribution Arts
  • Move Distribution Literature
    Distribution Literature
  • Move Distribution Entertainment
    Distribution Entertainment
  • Move Distribution Philosophy
    Distribution Philosophy
  • Move Distribution Science
    Distribution Science
  • Move Distribution Sports
    Distribution Sports
  • Move Distribution Politics
    Distribution Politics
  • Move celebrity_data.py
    Open celebrity_data.py
    """
    Database of Celebrity Birth Data
    Focus on Rodden Rating AA/A (verified/accurate)
    """
    
    CELEBRITY_DATA = [
        # SCIENCE & TECH
        {'name': 'Albert Einstein', 'date': '1879-03-14', 'time': '11:30', 'category': 'Science'},
        {'name': 'Marie Curie', 'date': '1867-11-07', 'time': '12:00', 'category': 'Science'},
        {'name': 'Isaac Newton', 'date': '1643-01-04', 'time': '01:38', 'category': 'Science'}, # Julian/Gregorian handling needed usually, but typically standardized
        {'name': 'Charles Darwin', 'date': '1809-02-12', 'time': '03:00', 'category': 'Science'},
        {'name': 'Nikola Tesla', 'date': '1856-07-10', 'time': '00:00', 'category': 'Science'},
        {'name': 'Sigmund Freud', 'date': '1856-05-06', 'time': '18:30', 'category': 'Science'},
        {'name': 'Carl Jung', 'date': '1875-07-26', 'time': '19:32', 'category': 'Science'},
        {'name': 'Steve Jobs', 'date': '1955-02-24', 'time': '19:15', 'category': 'Science'},
        {'name': 'Bill Gates', 'date': '1955-10-28', 'time': '22:
    
    celebrity_data.py 839 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 18: Solar House System Bayesian Comparison
    ==================================================
    Compares Solar House systems (Whole Sign vs Equal) using Celebrity Archetypes.
    
    DATA SOURCES:
    - Project 6 Celebrity Data (Science, Arts, Politics, etc.)
    
    METHODOLOGY:
    1. Load celebrity birth data.
    2. Calculate Solar House placements (Whole Sign vs Equal).
    3. Check if "Archetypal Planets" fall into "Archetypal Houses" (e.g. Mars in 10th for Athletes).
    4. Calculate Bayesian Likelihood vs Random Chance.
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime
    import matplotlib.pyplot as plt
    from pathlib import Path
    import sys
    
    # Import Celebrity Data from Project 6
    PROJECT_ROOT = Path(__file__).parent.parent
    sys.path.append(str(PROJECT_ROOT / '06-harmonic-analysis-aspects'))
    try:
        from celebrity_data import CELEBRITY_DATA
    except ImportError:
        print("Warning: Could not import 
    
    analysis.py 1,403 words
  • Move analysis_results.csv
    Open analysis_results.csv
    System,Hits,Total,Rate
    Solar Whole Sign (Sun),86,274,0.31386861313868614
    Solar Equal House (Sun),87,274,0.3175182481751825
    
    analysis_results.csv 11 words
  • Move agreement_matrix.csv
    Open agreement_matrix.csv
    ,Standard Placidus,Standard Whole Sign (ASC),Solar Whole Sign (Sun),Solar Equal House (Sun)
    Standard Placidus,1.0,0.38666666666666666,0.08,0.04666666666666667
    Standard Whole Sign (ASC),0.38666666666666666,1.0,0.06666666666666667,0.12666666666666668
    Solar Whole Sign (Sun),0.08,0.06666666666666667,1.0,0.6133333333333333
    Solar Equal House (Sun),0.04666666666666667,0.12666666666666668,0.6133333333333333,1.0
    
    agreement_matrix.csv 27 words
  • Move Project 19
    Open Project 19

    Mundane Astrology and World Events

    Project 19
  • Move Introduction to project 19
    Open Introduction to project 19

    Mundane Astrology and World Events

    Research Question

    Do planetary cycles (particularly outer planet aspects) correlate with major world events as claimed by mundane astrology?

    Background

    Mundane astrology is the branch of astrology dealing with world events, nations, and collective experiences rather than individuals. Practitioners claim that:

    • Saturn-Pluto aspects correlate with wars, destruction, power struggles
    • Uranus-Pluto aspects correlate with revolutions and social upheaval
    • Saturn-Neptune aspects correlate with epidemics, collective delusions
    • Jupiter-Uranus aspects correlate with scientific breakthroughs
    • Saturn-Uranus aspects correlate with tension between old and new orders

    These claims have been promoted by astrologers for decades, with famous "hits" like:

    • WWI (1914): Saturn opposite Pluto
    • WWII (1939): Saturn conjunct Pluto
    • COVID-19 (2020): Saturn conjunct Pluto

    Hypothesis

    Null hypothesis: Major world events occur rand

    Introduction to project 19 737 words
  • Move Results of project 19
    Open Results of project 19

    Results: Mundane Astrology and World Events (Cyclic Index Analysis)

    1. Methodology: The Planetary Cyclic Index

    Instead of relying on discrete "aspect" definitions (e.g., Square vs. Trine), this study utilized the Planetary Cyclic Index developed by Gouchon and Barbault. This metric treats planetary relationships as a continuous wave function.

    1189677 Index = \sum_{i<j} \cos(\theta_{ij}) 1189677

    Where $\theta_{ij}$ is the angular separation between outer planets (Jupiter, Saturn, Uranus, Neptune, Pluto).

    • Index $\rightarrow$ Max (Positive): Planets are clustered together (Conjunctions).
    • Index $\rightarrow$ Min (Negative): Planets are dispersed or opposing (Oppositions).

    Hypothesis: If planetary cycles correlate with mundane events, we should see significant deviations in the Cyclic Index during major Event types (War, Revolution, Political Shifts) compared to the random time background.


    2. Statistical Findings

    We analyzed 512 verified historical events

    Results of project 19 488 words
  • Move Mundane Analysis
    Mundane Analysis
  • Move Cyclic Index
    Cyclic Index
  • Move Jupiter Saturn Cycle
    Jupiter Saturn Cycle
  • Move Jupiter Neptune Cycle
    Jupiter Neptune Cycle
  • Move Jupiter Uranus Cycle
    Jupiter Uranus Cycle
  • Move Jupiter Pluto Cycle
    Jupiter Pluto Cycle
  • Move Saturn Neptune Cycle
    Saturn Neptune Cycle
  • Move Saturn Uranus Cycle
    Saturn Uranus Cycle
  • Move Saturn Pluto Cycle
    Saturn Pluto Cycle
  • Move Uranus Neptune Cycle
    Uranus Neptune Cycle
  • Move Uranus Pluto Cycle
    Uranus Pluto Cycle
  • Move event_data.csv
    Open event_data.csv
    date,event_type,description,hard_aspects,Jupiter_Saturn,Jupiter_Saturn_angle,Saturn_Uranus,Saturn_Uranus_angle,Uranus_Neptune,Uranus_Neptune_angle,Neptune_Pluto,Neptune_Pluto_angle,Saturn_Pluto,Saturn_Pluto_angle,Jupiter_Pluto,Jupiter_Pluto_angle,Jupiter_Uranus,Jupiter_Uranus_angle,Saturn_Neptune,Saturn_Neptune_angle,Jupiter_Neptune,Jupiter_Neptune_angle,Uranus_Pluto,Uranus_Pluto_angle
    1756-05-17,war_start,Seven Years War begins,2,trine,121.29777422762211,none,38.27229076362107,none,139.68173052336107,none,129.33995084446263,none,52.706027868555225,none,68.59174635906689,none,159.57006499124319,opposition,177.95402128698214,sextile,60.748204485395746,square,90.9783186321763
    1757-06-23,battle,Battle of Plassey,2,none,102.78168761234633,none,31.451977772913835,none,138.2015497933344,trine,127.71154436721687,sextile,62.63492806653488,none,40.14675954581145,none,134.23366538526017,none,169.65352756624824,square,87.56478482140542,square,94.08690583944872
    1759-09-13,battle,Battle of Quebec,1,sextile,59.5
    
    event_data.csv 1,535 words
  • Move event_cosine_data.csv
    Open event_cosine_data.csv
    date,event_type,description,Global_Index,Jupiter-Saturn,Jupiter-Saturn_angle,Jupiter-Uranus,Jupiter-Uranus_angle,Jupiter-Neptune,Jupiter-Neptune_angle,Jupiter-Pluto,Jupiter-Pluto_angle,Saturn-Uranus,Saturn-Uranus_angle,Saturn-Neptune,Saturn-Neptune_angle,Saturn-Pluto,Saturn-Pluto_angle,Uranus-Neptune,Uranus-Neptune_angle,Uranus-Pluto,Uranus-Pluto_angle,Neptune-Pluto,Neptune-Pluto_angle
    1756-05-17,war_start,Seven Years War begins,-1.6247643567732295,-0.5194859182771555,121.29777422762211,-0.9370997450676458,159.57006499124319,0.48864858322420324,60.748204485395746,0.3650109021298717,68.59174635906689,0.7850760146762825,38.27229076362107,-0.9993624990856464,177.95402128698214,0.6059047082073579,52.706027868555225,-0.7624620539086953,139.68173052336107,-0.01707405157577137,90.9783186321763,-0.6339202970960305,129.33995084446263
    1757-06-23,battle,Battle of Plassey,-1.211391220987167,-0.2212368174016757,102.78168761234633,-0.6975862189536458,134.23366538526017,0.04248972746736545,87.56478482140542,0.7643
    
    event_cosine_data.csv 1,535 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 19: Mundane Astrology and World Events
    ==============================================
    Tests if planetary cycles correlate with world events.
    
    DATA SOURCES (REAL):
    - Wikipedia verified historical events
    - Swiss Ephemeris outer planet cycles
    - Academic history databases
    
    METHODOLOGY:
    1. Map major historical events to dates
    2. Calculate outer planet aspects
    3. Test for correlation with event types
    
    EXPANDED DATASET: 500+ verified historical events from 1700-2025
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime
    import matplotlib.pyplot as plt
    from pathlib import Path
    
    OUTPUT_DIR = Path(__file__).parent
    swe.set_ephe_path(None)
    
    # ============================================================================
    # COMPREHENSIVE WORLD EVENTS DATABASE
    # 500+ verified historical events from Wikipedia and academic sources
    # =====================================================
    
    analysis.py 3,705 words
  • Move analysis_results.csv
    Open analysis_results.csv
    total_events,random_dates,events_hard_mean,random_hard_mean,events_with_hard_pct,random_with_hard_pct,ttest_p,chi2,chi2_p,saturn_pluto_war_p,uranus_pluto_revolution_p,conclusion
    512,5000,1.939453125,1.9058,93.359375,92.34,0.5537803027887134,0.7521756636700221,0.3857882758139294,0.8524895369377279,0.27150173561171664,No significant correlation
    
    analysis_results.csv 6 words
  • Move Project 20
    Open Project 20

    Genetic Algorithms for Astrological Rule Discovery

    Project 20
  • Move Introduction to project 20
    Open Introduction to project 20

    Project 20: Genetic Algorithms for Astrological Rule Discovery

    Research Question

    Can evolutionary algorithms (Genetic Algorithms) discover astrological signatures that predict high achievement better than random chance?

    Hypothesis

    Evolutionary search techniques will identify "clusters" or recurring signatures in the charts of exceptional individuals that traditional astrological rules (e.g., "Good Dignity = Success") might miss.

    Methodology

    This study utilized a curated dataset of 86 High-Profile Celebrities across diverse fields (Science, Arts, Politics, Sports, Philosophy).

    • Algorithm: Exhaustive Search (acting as a feature selection mechanism for a GA).
    • Search Space: All Planets (Sun-Pluto) + Nodes (Rahu/Ketu) in all 12 Signs (Tropical & Vedic).
    • Objective: Maximize "Fitness" (Frequency of occurrence within the group).

    Key Findings (Project 20b)

    The algorithm successfully identified non-random clusters, specifically challenging the "Essential Digni

    Introduction to project 20 217 words
  • Move Results of project 20
    Open Results of project 20

    Project 20: Genetic Algorithms for Astrological Rule Discovery

    Overview

    This study applies evolutionary search techniques (Genetic Algorithms) to identify astrological "rules" or signatures that appear more frequently than chance in a dataset of high-achieving individuals.

    Methodology

    • Dataset: 86 High-Profile Celebrities across Science, Arts, Politics, Sports, and Philosophy.
      • Source: Verified birth data (Rodden Rating AA/A equivalents) where possible.
    • Algorithm: Exhaustive Search (Genetic Algorithm feature selection equivalent).
      • Fitness Function: Frequency of occurrence in the population.
      • Search Space: All Planets (Sun-Pluto) + Nodes (Rahu/Ketu) in all 12 Signs (Tropical and Vedic).
      • Baseline Expectation: ~8.3% (1/12) for random distribution.

    Results

    1. Tropical Zodiac Analysis

    Top "Personal" Rules (Excluding Generational Planets)

    • Mars in Libra: 18.6% (Fitness: 0.186) - More than 2x expected freq.
    Results of project 20 415 words
  • Move Tropical Fitness Landscape
    Tropical Fitness Landscape
  • Move Vedic Fitness Landscape
    Vedic Fitness Landscape
  • Move celebrity_data.py
    Open celebrity_data.py
    """
    Database of Celebrity Birth Data
    Focus on Rodden Rating AA/A (verified/accurate)
    """
    
    CELEBRITY_DATA = [
        # SCIENCE & TECH
        {'name': 'Albert Einstein', 'date': '1879-03-14', 'time': '11:30', 'category': 'Science'},
        {'name': 'Marie Curie', 'date': '1867-11-07', 'time': '12:00', 'category': 'Science'},
        {'name': 'Isaac Newton', 'date': '1643-01-04', 'time': '01:38', 'category': 'Science'}, # Julian/Gregorian handling needed usually, but typically standardized
        {'name': 'Charles Darwin', 'date': '1809-02-12', 'time': '03:00', 'category': 'Science'},
        {'name': 'Nikola Tesla', 'date': '1856-07-10', 'time': '00:00', 'category': 'Science'},
        {'name': 'Sigmund Freud', 'date': '1856-05-06', 'time': '18:30', 'category': 'Science'},
        {'name': 'Carl Jung', 'date': '1875-07-26', 'time': '19:32', 'category': 'Science'},
        {'name': 'Steve Jobs', 'date': '1955-02-24', 'time': '19:15', 'category': 'Science'},
        {'name': 'Bill Gates', 'date': '1955-10-28', 'time': '22:
    
    celebrity_data.py 839 words
  • Move celebrity_data.csv
    Open celebrity_data.csv
    Name,Birthdate,Time,Category,Birthplace
    Albert Einstein,1879-03-14,11:30,Science,
    Marie Curie,1867-11-07,12:00,Science,
    Isaac Newton,1643-01-04,01:38,Science,
    Charles Darwin,1809-02-12,03:00,Science,
    Nikola Tesla,1856-07-10,00:00,Science,
    Sigmund Freud,1856-05-06,18:30,Science,
    Carl Jung,1875-07-26,19:32,Science,
    Steve Jobs,1955-02-24,19:15,Science,
    Bill Gates,1955-10-28,22:00,Science,
    Elon Musk,1971-06-28,06:30,Science,
    Alan Turing,1912-06-23,02:15,Science,
    Stephen Hawking,1942-01-08,02:29,Science,
    Thomas Edison,1847-02-11,03:00,Science,
    Alexander Graham Bell,1847-03-03,07:00,Science,
    Galileo Galilei,1564-02-15,15:41,Science,
    Leonardo da Vinci,1452-04-15,21:40,Arts,
    Wolfgang Mozart,1756-01-27,20:00,Arts,
    Ludwig Beethoven,1770-12-16,13:00,Arts,
    Pablo Picasso,1881-10-25,23:15,Arts,
    Salvador Dali,1904-05-11,08:45,Arts,
    Vincent van Gogh,1853-03-30,11:00,Arts,
    Frida Kahlo,1907-07-06,08:30,Arts,
    Bob Dylan,1941-05-24,21:05,Arts,
    John Lennon,1940-10-09,18:30,Arts,
    David Bowie,1947-01
    
    celebrity_data.csv 180 words
  • Move Genetic Algorithm Rules Tropical
    Genetic Algorithm Rules Tropical
  • Move Genetic Algorithm Rules Vedic
    Genetic Algorithm Rules Vedic
  • Move remove_duplicates.py
    Open remove_duplicates.py
    import pandas as pd
    import os
    
    def clean_file(filename):
        if not os.path.exists(filename):
            print(f"File not found: {filename}")
            return
    
        print(f"Cleaning {filename}...")
        try:
            df = pd.read_csv(filename)
            original_count = len(df)
    
            # Get first 3 columns
            subset_cols = df.columns[:3].tolist()
            print(f"  Deduplicating based on: {subset_cols}")
    
            df_clean = df.drop_duplicates(subset=subset_cols, keep='first')
            new_count = len(df_clean)
    
            print(f"  Removed {original_count - new_count} duplicates. {new_count} records remain.")
            df_clean.to_csv(filename, index=False)
    
        except Exception as e:
            print(f"  Error cleaning {filename}: {e}")
    
    if __name__ == "__main__":
        # Clean wealthy_birthdata_v2.csv
        clean_file("wealthy_birthdata_v2.csv")
    
        # Clean 1000_richest_people_in_the_world.csv
        clean_file("1000_richest_people_in_the_world.csv"
    
    remove_duplicates.py 79 words
  • Move visualize_ga_process.py
    Open visualize_ga_process.py
    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    from pathlib import Path
    
    OUTPUT_DIR = Path(__file__).parent
    
    def create_fitness_landscape(csv_path, title, filename):
        try:
            df = pd.read_csv(csv_path)
        except FileNotFoundError:
            print(f"File not found: {csv_path}")
            return
    
        # Pivot data into a grid: Planets x Signs
        pivot_table = df.pivot(index='planet', columns='sign', values='fitness')
    
        # Reorder indices for logical flow
        planet_order = ['Sun', 'Moon', 'Mercury', 'Venus', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune', 'Pluto', 'Rahu', 'Ketu']
        sign_order = ['Ari', 'Tau', 'Gem', 'Can', 'Leo', 'Vir', 'Lib', 'Sco', 'Sag', 'Cap', 'Aqu', 'Pis']
    
        # Filter to ensure only existing items are used
        planet_order = [p for p in planet_order if p in pivot_table.index]
        sign_order = [s for s in sign_order if s in pivot_table.columns]
    
        pivot_table = pivot_table.reindex(index=planet_order, c
    
    visualize_ga_process.py 189 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """Project 20b: Genetic Algorithms for Rule Discovery"""
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from datetime import datetime
    import matplotlib.pyplot as plt
    from pathlib import Path
    
    OUTPUT_DIR = Path(__file__).parent
    swe.set_ephe_path(None)
    
    def load_celebrity_data(csv_path):
        df = pd.read_csv(csv_path)
        people = []
        for idx, row in df.iterrows():
            name = row['Name']
            birthdate = row['Birthdate']
            category = row['Category'] if 'Category' in row else 'Unknown'
            if not birthdate or pd.isna(birthdate):
                continue
            birthtime = row['Time'] if 'Time' in row and not pd.isna(row['Time']) else '12:00'
            people.append((name, birthdate, birthtime, category))
        return people
    
    CELEBRITIES = load_celebrity_data(OUTPUT_DIR / 'celebrity_data.csv')
    
    def datetime_to_jd(dt):
        return swe.julday(dt.year, dt.month, dt.day, dt.hour + dt.minute/60.0)
    
    def get_chart_features_tropica
    
    analysis.py 538 words
  • Move analysis_results_tropical_extended.csv
    Open analysis_results_tropical_extended.csv
    planet,sign,fitness,n
    Pluto,Leo,0.26744186046511625,22
    Mars,Lib,0.18604651162790697,16
    Neptune,Lib,0.1744186046511628,15
    Moon,Sag,0.16279069767441862,14
    Neptune,Vir,0.16279069767441862,14
    Neptune,Sco,0.16279069767441862,14
    Pluto,Vir,0.16279069767441862,14
    Uranus,Tau,0.1511627906976744,13
    Pluto,Can,0.1511627906976744,13
    Sun,Can,0.13953488372093023,12
    Jupiter,Tau,0.13953488372093023,12
    Saturn,Aqu,0.13953488372093023,12
    Pluto,Tau,0.13953488372093023,12
    Sun,Aqu,0.12790697674418605,11
    Mercury,Sco,0.12790697674418605,11
    Mercury,Aqu,0.12790697674418605,11
    Saturn,Tau,0.12790697674418605,11
    Saturn,Sag,0.12790697674418605,11
    Uranus,Vir,0.12790697674418605,11
    Moon,Aqu,0.11627906976744186,10
    Mercury,Gem,0.11627906976744186,10
    Venus,Ari,0.11627906976744186,10
    Mars,Tau,0.11627906976744186,10
    Jupiter,Lib,0.11627906976744186,10
    Jupiter,Pis,0.11627906976744186,10
    Saturn,Sco,0.11627906976744186,10
    Uranus,Gem,0.11627906976744186,10
    Uranus,Leo,0.11627906976744186,10
    Neptune,Sag,0.116279069767
    
    analysis_results_tropical_extended.csv 147 words
  • Move analysis_results_vedic_extended.csv
    Open analysis_results_vedic_extended.csv
    planet,sign,fitness,n
    Pluto,Can,0.2441860465116279,21
    Neptune,Vir,0.20930232558139536,18
    Pluto,Leo,0.20930232558139536,18
    Neptune,Lib,0.18604651162790697,16
    Moon,Sco,0.1744186046511628,15
    Mars,Vir,0.1744186046511628,15
    Uranus,Tau,0.1744186046511628,15
    Uranus,Leo,0.16279069767441862,14
    Jupiter,Tau,0.1511627906976744,13
    Moon,Aqu,0.13953488372093023,12
    Mercury,Lib,0.13953488372093023,12
    Mercury,Cap,0.13953488372093023,12
    Saturn,Sco,0.13953488372093023,12
    Neptune,Sco,0.13953488372093023,12
    Pluto,Gem,0.13953488372093023,12
    Saturn,Ari,0.12790697674418605,11
    Saturn,Can,0.12790697674418605,11
    Saturn,Cap,0.12790697674418605,11
    Sun,Gem,0.11627906976744186,10
    Sun,Can,0.11627906976744186,10
    Sun,Lib,0.11627906976744186,10
    Mercury,Gem,0.11627906976744186,10
    Venus,Leo,0.11627906976744186,10
    Venus,Sco,0.11627906976744186,10
    Venus,Pis,0.11627906976744186,10
    Jupiter,Pis,0.11627906976744186,10
    Pluto,Ari,0.11627906976744186,10
    Rahu,Leo,0.11627906976744186,10
    Ketu,Aqu,0.11627906976744186,10
    S
    
    analysis_results_vedic_extended.csv 147 words
  • Move Project 21
    Open Project 21

    Eclipse Cycles and Collective Mood

    Project 21
  • Move Introduction to project 21
    Open Introduction to project 21

    Project 21: Eclipse Cycles and Collective Mood

    Objective

    To investigate if Solar and Lunar eclipses correlate with measurable increases in collective distress or "chaos" in Seattle, WA.

    Hypothesis

    Physical Chaos: Seattle 911 call volumes (Fire/EMS) increase on the days of eclipses compared to normal days.

    • Refinement: We analyze Solar and Lunar eclipses separately to see if they produce different effects.

    Data Sources

    • Seattle Real-Time Fire 911 Calls: Public dataset covering 2013-2026 (~1.6 million records).
    • Swiss Ephemeris: High-precision astronomical calculation for eclipse dates.

    Methodology

    911 Call Analysis (Detrending)

    We employ a Multi-Factor Linear Regression model to strictly isolate "abnormal" volume from known temporal drivers.

    1. Feature Engineering: The following features are extracted for every day in the dataset:
      • Day of Week (Mon-Sun seasonality)
      • Month of Year (Annual seasonality)
    Introduction to project 21 292 words
  • Move Results of project 21
    Open Results of project 21

    Project 21: Eclipse Cycles and Collective Mood

    Seattle 911 Call Volume Analysis (Daily)

    • Hypothesis: "Real-time Chaos" (911 calls) increases on days of Solar/Lunar eclipses.
    • Data: ~1.4M Seattle Fire 911 Calls.
    • Method: Multi-factor Linear Regression Detrending (No Log Transform).
    • Metric: Z-Score of Residuals (Deviations from expected daily volume).

    Aggregate Results (Solar vs. Lunar)

    Note: Positive Z-Score indicated higher than expected call volume. Negative indicates lower.

    Category Control Mean Solar Mean Z Solar P-Value Lunar Mean Z Lunar P-Value
    TOTAL CALLS 0.00 -0.21 0.35 -0.37 0.14
    AID RESPONSE -0.01 -0.23 0.32 -0.38 0.12
    MEDIC RESPONSE -0.07 -0.19 0.40 -0.33 0.19
    AUTO FIRE ALARM -0.05 +0.13 0.63 -0.16 0.58
    MVI (Car Accidents) -0.08 +0.32 0.05 +0.06 0.81
    TRIAGED INCIDENT -0.03
    Results of project 21 376 words
  • Move MVI Distribution
    MVI Distribution
  • Move 911 Distribution
    911 Distribution
  • Move Categorical Effect Size
    Categorical Effect Size
  • Move Categorical Significance
    Categorical Significance
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 21: Eclipse Cycles and Collective Mood (Seattle 911 Analysis)
    =====================================================================
    Data Source: Seattle Real Time Fire 911 Calls (2013-2026)
    Metric: Daily Call Volume (Detrended & Normalized)
    Hypothesis: Eclipse days show higher chaos/distress (higher call volumes).
    """
    import pandas as pd
    import numpy as np
    import swisseph as swe
    from scipy import stats
    from datetime import datetime, timedelta
    import matplotlib.pyplot as plt
    from pathlib import Path
    import warnings
    
    warnings.filterwarnings('ignore')
    
    OUTPUT_DIR = Path(__file__).parent
    DATA_FILE = OUTPUT_DIR / 'seattle_fire_911.csv'
    
    # Configure Swisseph
    try:
        swe.set_ephe_path('/usr/share/swisseph')
    except:
        pass
    
    def get_julian_day(dt):
        return swe.julday(dt.year, dt.month, dt.day, 0.0)
    
    def julian_day_to_date_obj(jd):
        year, month, day, hour = swe.revjul(jd)
        return datetime(year, month, day)
    
    def find_all_eclipse
    
    analysis.py 858 words
  • Move analysis_results.csv
    Open analysis_results.csv
    n_eclipses,n_solar,n_lunar,eclipse_distress_mean,non_eclipse_distress_mean,ttest_t,ttest_p,solar_lunar_p,magnitude_anova_p,year_correlation_r,year_correlation_p
    81,40,41,70.69135802469135,72.21265560165975,-1.1096955535661646,0.2673860222986882,0.8154344051684334,0.33009175842434973,0.20935332076752702,0.06069127236903511
    
    analysis_results.csv 4 words
  • Move Project 22
    Open Project 22

    Astro-Weather Forecasting vs Meteorological Forecasts

    Project 22
  • Move Introduction to project 22
    Open Introduction to project 22

    Astro-Weather Forecasting vs Meteorological Forecasts

    Research Question

    Is there any correlation between planetary configurations (Planets, Nodes, Zodiac Signs, Elements) and terrestrial weather patterns (Precipitation and Temperature)? Specifically, does the "Water Sign" hypothesis hold?

    Hypothesis

    Planetary positions have no statistically significant impact on daily weather patterns when analyzed over large datasets. However, we test if Tropical Water signs correlate with increased precipitation.

    Background

    Astrological traditions often link Moon phases and signs to weather (e.g., "Water signs bring rain"). This project specifically analyzes the "Tithi" (Lunar Day), Moon Sign, and Full Planetary Positions (Sun through Pluto + Nodes) in both Tropical and Vedic Zodiacs.

    Data Sources

    • NOAA GHCN-Daily: Daily summaries of precipitation and temperature from global weather stations.
    • Swiss Ephemeris: High-precision planetary position calculations (Tropical & Vedic/Lahir
    Introduction to project 22 461 words
  • Move Results of project 22
    Open Results of project 22

    Results: Astro-Weather Forecasting vs Meteorological Forecasts

    Analysis Overview

    We analyzed daily weather summaries from 129,562 stations (Global Dataset) covering the period 1900-2024. This full-scale analysis correlates precipitation (PRCP) against ALL planetary bodies in both Tropical and Vedic (Sidereal/Lahiri) zodiacs.

    Key Findings (Hemisphere Split)

    We performed a metadata-driven split of the global dataset into Northern (104,205 stations) and Southern (25,357 stations) hemispheres to test for seasonal inversion.

    1. Northern Hemisphere (The "Flat" Signal)

    In the Northern Hemisphere, precipitation is surprisingly evenly distributed across the Zodiacal elements for the Sun.

    • Sun (Trop) Avg Precip:
      • Water: 23.56
      • Earth: 23.56
      • Air: 23.47
      • Fire: 23.30
    • Conclusion: There is no astrological benefit to the "Water Sign" rule in the aggregate Northern data. The seasonal rainfall peaks of vario
    Results of project 22 631 words
  • Move Moon Sign Weather
    Moon Sign Weather
  • Move Temperature Plot by Tithi
    Temperature Plot by Tithi
  • Move Precipitation Plot
    Precipitation Plot
  • Move analysis.py
    Open analysis.py
    import pandas as pd
    import numpy as np
    import os
    import glob
    import matplotlib.pyplot as plt
    from datetime import datetime
    import concurrent.futures
    import time
    
    def process_weather_chunk(args):
        """
        Process a list of weather files and return aggregation.
        args: (file_list, valid_dates_set)
        """
        files, valid_dates_list = args
        # Create valid_dates_set for fast lookup
        # Actually, we want to align to a common index.
        # Let's create a local series for alignment
    
        # Initialize accumulators
        # We use a dictionary for sparse accumulation then convert to Series
        # Or just use a common index if we pass it? Passing index is heavy.
        # Let's return a dict: {date: [sum_p, count_p, sum_t, count_t]}
        # Or better: {date: (sum_p, count_p, sum_t, count_t)}
    
        local_data = {}
    
        valid_dates = set(valid_dates_list)
    
        for f in files:
            try:
                # Read only needed cols
                df = pd.read_csv(f, usecols=[
    
    analysis.py 1,202 words
  • Move analysis_results.csv
    Open analysis_results.csv
    sign_id,sign_name,avg_prcp_tenths,avg_tmax_tenths,count_prcp,count_temp
    0,Aries,60.11042840075098,315.9722098710538,17577.0,4498.0
    1,Taurus,56.30681818181818,315.9496098104794,17600.0,4485.0
    2,Gemini,56.11955175132335,316.5581240275617,17758.0,4499.0
    3,Cancer,58.28932855762124,317.071837814015,17589.0,4538.0
    4,Leo,56.16355404640634,315.71234705228034,17670.0,4495.0
    5,Virgo,56.793325427748606,315.76743169398907,17709.0,4575.0
    6,Libra,57.31752095330407,315.2322022621424,17539.0,4509.0
    7,Scorpio,57.95586144132871,316.2023513452408,17581.0,4423.0
    8,Sagittarius,56.676362193116745,316.17778268551234,17637.0,4528.0
    9,Capricorn,54.487265112067014,315.4141616566466,17668.0,4491.0
    10,Aquarius,55.67029646522235,315.4728236853734,17540.0,4526.0
    11,Pisces,58.12209963603276,316.7503931700741,17584.0,4451.0
    
    analysis_results.csv 15 words
  • Move astro_data_generator.py
    Open astro_data_generator.py
    import swisseph as swe
    import pandas as pd
    import numpy as np
    import os
    from datetime import datetime, timedelta
    
    def get_planet_positions(jd, mode='tropical'):
        """
        Returns a dict of planet longitudes for a given Julian Day.
        mode: 'tropical' or 'vedic'
        """
    
        if mode == 'vedic':
            swe.set_sid_mode(swe.SIDM_LAHIRI)
            flags = swe.FLG_SWIEPH | swe.FLG_SIDEREAL
        else:
            swe.set_sid_mode(0) # Reset to tropical just in case
            flags = swe.FLG_SWIEPH
    
        bodies = {
            'Sun': swe.SUN,
            'Moon': swe.MOON,
            'Mercury': swe.MERCURY,
            'Venus': swe.VENUS,
            'Mars': swe.MARS,
            'Jupiter': swe.JUPITER,
            'Saturn': swe.SATURN,
            'Uranus': swe.URANUS,
            'Neptune': swe.NEPTUNE,
            'Pluto': swe.PLUTO,
            'NorthNode': swe.TRUE_NODE
        }
    
        positions = {}
        for name, pid in bodies.items():
            try:
                res = swe.calc_ut(jd, pid, flags)
    
    
    astro_data_generator.py 356 words
  • Move astro_weather_features.csv
    Open astro_weather_features.csv
    date,Sun_Trop_Lon,Sun_Trop_Sign,Moon_Trop_Lon,Moon_Trop_Sign,Mercury_Trop_Lon,Mercury_Trop_Sign,Venus_Trop_Lon,Venus_Trop_Sign,Mars_Trop_Lon,Mars_Trop_Sign,Jupiter_Trop_Lon,Jupiter_Trop_Sign,Saturn_Trop_Lon,Saturn_Trop_Sign,Uranus_Trop_Lon,Uranus_Trop_Sign,Neptune_Trop_Lon,Neptune_Trop_Sign,Pluto_Trop_Lon,Pluto_Trop_Sign,NorthNode_Trop_Lon,NorthNode_Trop_Sign,SouthNode_Trop_Lon,SouthNode_Trop_Sign,Sun_Vedic_Lon,Sun_Vedic_Sign,Moon_Vedic_Lon,Moon_Vedic_Sign,Mercury_Vedic_Lon,Mercury_Vedic_Sign,Venus_Vedic_Lon,Venus_Vedic_Sign,Mars_Vedic_Lon,Mars_Vedic_Sign,Jupiter_Vedic_Lon,Jupiter_Vedic_Sign,Saturn_Vedic_Lon,Saturn_Vedic_Sign,Uranus_Vedic_Lon,Uranus_Vedic_Sign,Neptune_Vedic_Lon,Neptune_Vedic_Sign,Pluto_Vedic_Lon,Pluto_Vedic_Sign,NorthNode_Vedic_Lon,NorthNode_Vedic_Sign,SouthNode_Vedic_Lon,SouthNode_Vedic_Sign,Phase_Angle,Tithi
    1900-01-01,280.6632881017334,9,279.61640817995755,9,259.63935459235324,8,306.9961636760383,10,284.25303429345956,9,241.23357617360247,8,267.7749568125278,8,250.16682936931747,8
    
    astro_weather_features.csv 45,659 words
  • Move element_precipitation_pivot_north.csv
    Open element_precipitation_pivot_north.csv
    Feature,Air,Earth,Fire,Water
    Jupiter (Trop),23.485160335093738,23.432019565814848,23.432586016997544,23.540959716972313
    Jupiter (Vedic),23.333853667452324,23.501861391148417,23.381859426404148,23.668295563406122
    Mars (Trop),23.671393166567718,23.2488986030375,23.524688515829116,23.443375746615366
    Mars (Vedic),23.611003024989657,23.471948475801454,23.44401143757148,23.362852960684272
    Mercury (Trop),23.676248524097154,23.463458110257054,23.460102865549313,23.290019558711137
    Mercury (Vedic),23.351076159351866,23.564344139285822,23.56732592241827,23.406664868560135
    Moon (Trop),23.66182855231569,23.454873328747038,23.345147965276887,23.42777128070417
    Moon (Vedic),23.505084509254832,23.567697493643966,23.387061095429516,23.429503950845056
    Neptune (Trop),23.15870076394201,22.841681575188325,23.455545783495698,24.14080260842979
    Neptune (Vedic),24.032960009850406,23.13863897059504,23.046858902321784,23.428969325533863
    NorthNode (Trop),23.47634654120322,23.443639753908094,23.449666804800668,23.521544
    
    element_precipitation_pivot_north.csv 51 words
  • Move element_precipitation_pivot_south.csv
    Open element_precipitation_pivot_south.csv
    Feature,Air,Earth,Fire,Water
    Jupiter (Trop),21.6550684559321,21.81014777075798,21.99421810845046,22.163744509343736
    Jupiter (Vedic),22.04640012956392,21.653750780971624,21.93704892485046,21.985989967203672
    Mars (Trop),22.208035979456316,21.877564007703203,22.294163995552832,21.23430287254084
    Mars (Vedic),21.64682009294344,21.890962767603483,22.01658122957165,22.062669980332302
    Mercury (Trop),22.741102018575493,22.15398963388644,20.727700982478375,21.994266082216686
    Mercury (Vedic),22.18403435698449,23.007751419675717,21.561036753355175,20.86537194408127
    Moon (Trop),21.582414619216298,21.911504207096876,22.021621670146814,22.102644064991324
    Moon (Vedic),21.960478027688264,21.660446715660758,21.84472221522346,22.153168113887528
    Neptune (Trop),22.86592245762432,21.34490268646003,21.47170260996141,21.8946281640818
    Neptune (Vedic),22.499499442690947,22.222442102885186,21.16505712876729,21.510289626205434
    NorthNode (Trop),21.909253476068404,22.363241489302577,22.243877729424202,21.07405063807557
    
    element_precipitation_pivot_south.csv 51 words
  • Move element_precipitation_pivot.csv
    Open element_precipitation_pivot.csv
    Feature,Air,Earth,Fire,Water
    Jupiter (Trop),23.296735487357648,23.262422832722088,23.2629699688627,23.385224180862657
    Jupiter (Vedic),23.19598341171867,23.31092845740224,23.227915077895215,23.468403486772203
    Mars (Trop),23.506353320537404,23.09526135613155,23.385764591695242,23.217113567782885
    Mars (Vedic),23.40206762221668,23.300676466824253,23.28409910824951,23.21925330922376
    Mercury (Trop),23.55589692433463,23.322590894332045,23.185259065516842,23.1423435698577
    Mercury (Vedic),23.211710629422456,23.481802657381962,23.36571612137723,23.146589662411227
    Moon (Trop),23.44749273346497,23.284300045801192,23.195409299361764,23.27880566136365
    Moon (Vedic),23.33494399091134,23.36926110930442,23.215769163641877,23.285835789475726
    Neptune (Trop),23.118718564481632,22.689504888011097,23.218305243344044,23.908534168430837
    Neptune (Vedic),23.85879002596088,23.063566947346924,22.84412979028834,23.204261860396386
    NorthNode (Trop),23.311364163882654,23.3318236250738,23.30472332308657,23.25662758359753
    N
    
    element_precipitation_pivot.csv 50 words
  • Move full_analysis_results.csv
    Open full_analysis_results.csv
    Feature,Water_Prcp,NonWater_Prcp,Diff_Prcp,Effect_Type,Element,Avg_Prcp,Avg_Tmax
    Sun (Trop),23.44848697391471,23.252483043877998,0.19600393003671357,Sign,,,
    Sun (Trop),,,,Element_Avg,Fire,23.049836254786534,173.86432063884476
    Sun (Trop),,,,Element_Avg,Earth,23.312540443328913,174.01782915066332
    Sun (Trop),,,,Element_Avg,Air,23.395075725635632,173.27930693818698
    Sun (Trop),,,,Element_Avg,Water,23.44848697391471,174.42604189666358
    Sun (Vedic),23.170866414733442,23.345022592232134,-0.17415617749869128,Sign,,,
    Sun (Vedic),,,,Element_Avg,Fire,23.10129519903176,174.03101315266252
    Sun (Vedic),,,,Element_Avg,Earth,23.43380752828188,173.19509308588906
    Sun (Vedic),,,,Element_Avg,Air,23.49991456403824,174.09641426467968
    Sun (Vedic),,,,Element_Avg,Water,23.17086641473344,174.2648522507301
    Moon (Trop),23.27880566136365,23.309031578312585,-0.03022591694893606,Sign,,,
    Moon (Trop),,,,Element_Avg,Fire,23.195409299361764,173.88371465592712
    Moon (Trop),,,,Element_Avg,Earth,23.284300045801192,174.01889945023
    
    full_analysis_results.csv 243 words
  • Move full_analysis_results_north.csv
    Open full_analysis_results_north.csv
    Feature,Water_Prcp,NonWater_Prcp,Diff_Prcp,Effect_Type,Element,Avg_Prcp,Avg_Tmax
    Sun (Trop),23.556796224349906,23.44424570689047,0.1125505174594359,Sign,,,
    Sun (Trop),,,,Element_Avg,Fire,23.295170576280807,170.78726866513333
    Sun (Trop),,,,Element_Avg,Earth,23.564748289325966,170.90738186765458
    Sun (Trop),,,,Element_Avg,Air,23.472847418974858,170.21571732806387
    Sun (Trop),,,,Element_Avg,Water,23.556796224349906,171.43903588616462
    Sun (Vedic),23.383316018122475,23.502072623541597,-0.11875660541912225,Sign,,,
    Sun (Vedic),,,,Element_Avg,Fire,23.376542924235,170.92178576469036
    Sun (Vedic),,,,Element_Avg,Earth,23.547775749696925,170.1108309807279
    Sun (Vedic),,,,Element_Avg,Air,23.581873196822116,171.09811830472665
    Sun (Vedic),,,,Element_Avg,Water,23.383316018122475,171.21853544900034
    Moon (Trop),23.42777128070417,23.487238577785142,-0.05946729708097109,Sign,,,
    Moon (Trop),,,,Element_Avg,Fire,23.345147965276887,170.81967403256945
    Moon (Trop),,,,Element_Avg,Earth,23.454873328747038,170.9555791675
    
    full_analysis_results_north.csv 243 words
  • Move full_analysis_results_south.csv
    Open full_analysis_results_south.csv
    Feature,Water_Prcp,NonWater_Prcp,Diff_Prcp,Effect_Type,Element,Avg_Prcp,Avg_Tmax
    Sun (Trop),22.679386278156066,21.64629895970047,1.0330873184555962,Sign,,,
    Sun (Trop),,,,Element_Avg,Fire,20.921638222459165,247.18713523069437
    Sun (Trop),,,,Element_Avg,Earth,20.987891067034543,247.9197599180159
    Sun (Trop),,,,Element_Avg,Air,23.02907341543917,245.99183755072195
    Sun (Trop),,,,Element_Avg,Water,22.67938627815607,245.496903151939
    Sun (Vedic),21.366819546444056,22.083811972400326,-0.7169924259562706,Sign,,,
    Sun (Vedic),,,,Element_Avg,Fire,20.591881434817477,248.07264944697795
    Sun (Vedic),,,,Element_Avg,Earth,22.63118736055691,246.45138943621896
    Sun (Vedic),,,,Element_Avg,Air,23.028057744179538,245.33963457719776
    Sun (Vedic),,,,Element_Avg,Water,21.366819546444052,246.73203215308004
    Moon (Trop),22.102644064991324,21.83857017782307,0.2640738871682551,Sign,,,
    Moon (Trop),,,,Element_Avg,Fire,22.021621670146814,246.6839974337081
    Moon (Trop),,,,Element_Avg,Earth,21.911504207096876,246.62541132029344
    
    full_analysis_results_south.csv 243 words
  • Move lunar_data.csv
    Open lunar_data.csv
    date,phase_angle,tithi,moon_sign,sun_sign
    1900-01-01,358.9531200782242,30,9,9
    1900-01-02,12.527975050591692,2,9,9
    1900-01-03,26.26592357747387,3,10,9
    1900-01-04,40.03937393424479,4,10,9
    1900-01-05,53.72448014940693,5,11,9
    1900-01-06,67.21852199183485,6,11,9
    1900-01-07,80.45079051974682,7,0,9
    1900-01-08,93.38502448302688,8,0,9
    1900-01-09,106.01472494395111,9,1,9
    1900-01-10,118.3545424208701,10,1,9
    1900-01-11,130.43094019141589,11,2,9
    1900-01-12,142.27428749060667,12,2,9
    1900-01-13,153.91342577332028,13,2,9
    1900-01-14,165.37299919576913,14,3,9
    1900-01-15,176.6733562302465,15,3,9
    1900-01-16,187.832463372897,16,4,9
    1900-01-17,198.86903296185463,17,4,9
    1900-01-18,209.8060186273882,18,4,9
    1900-01-19,220.67377454153487,19,5,9
    1900-01-20,231.5124262003887,20,5,10
    1900-01-21,242.37321585924107,21,6,10
    1900-01-22,253.31863207979336,22,6,10
    1900-01-23,264.42103560139674,23,6,10
    1900-01-24,275.75944204258144,23,7,10
    1900-01-25,287.4142078964759,24,7,10
    1900-01-26,299.45940059868735,25,8,
    
    lunar_data.csv 45,659 words
  • Move lunar_days_table.py
    Open lunar_days_table.py
    import swisseph as swe
    import pandas as pd
    import numpy as np
    import os
    from datetime import datetime, timedelta
    
    def calculate_lunar_days(start_year, end_year):
        """
        Generates a DataFrame with Date, Sun_Lon, Moon_Lon, Phase_Angle, Tithi (1-30), Moon_Sign (0-11).
        """
    
        start_date = datetime(start_year, 1, 1)
        end_date = datetime(end_year, 12, 31)
        days = (end_date - start_date).days + 1
    
        dates = []
        tithis = []
        phases = []
        moon_signs = []
        sun_signs = []
    
        print(f"Calculating lunar metrics for {days} days between {start_year} and {end_year}...")
    
        for i in range(days):
            current_date = start_date + timedelta(days=i)
            dates.append(current_date.strftime('%Y-%m-%d'))
    
            # Noon UTC
            jd = swe.julday(current_date.year, current_date.month, current_date.day, 12.0)
    
            # Calculate Sun and Moon positions
            sun_res = swe.calc_ut(jd, swe.SUN)
            moon_res = swe.ca
    
    lunar_days_table.py 219 words
  • Move precipitation_analysis.py
    Open precipitation_analysis.py
    import pandas as pd
    import numpy as np
    import os
    import matplotlib.pyplot as plt
    
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    DATA_FILE = os.path.join(BASE_DIR, 'weather_with_astro_full.csv')
    
    def analyze_precipitation():
        print("Loading data for Precipitation Analysis...")
        if not os.path.exists(DATA_FILE):
            print(f"File {DATA_FILE} not found. Run process_astro_data.py first.")
            return
    
        df = pd.read_csv(DATA_FILE)
    
        # Ensure date is datetime
        df['date'] = pd.to_datetime(df['date'])
    
        # 1. Lunar Day Analysis (Tropical & Vedic)
        print("\nAnalyzing Precipitation by Lunar Day...")
        lunar_tro = df.groupby('Lunar_Day_Tro')['avg_prcp'].mean()
        lunar_ved = df.groupby('Lunar_Day_Ved')['avg_prcp'].mean()
    
        # 2. Element Analysis (Tropical)
        print("Analyzing Precipitation by Element (Tropical)...")
        elem_tro = df.groupby('Sun_Tro_Elem')['avg_prcp'].agg(['mean', 'count', 'std'])
    
        # 3. Element Analysis (
    
    precipitation_analysis.py 124 words
  • Move precipitation_by_tithi.csv
    Open precipitation_by_tithi.csv
    tithi,avg_prcp_tenths_mm,total_prcp,days_count
    1,41.556909831919135,4353959.0,104771.0
    2,43.50725859833338,4798111.0,110283.0
    3,43.226209901811906,4582886.0,106021.0
    4,45.187306171948045,4881178.0,108021.0
    5,44.62078495398451,4892089.0,109637.0
    6,43.563144294345385,4737187.0,108743.0
    7,43.71543767345574,4835758.0,110619.0
    8,45.89912638322656,5122572.0,111605.0
    9,46.05168782020386,5159539.0,112038.0
    10,45.885160853493396,5014881.0,109292.0
    11,44.778270186476995,4910609.0,109665.0
    12,43.69434928353041,4744682.0,108588.0
    13,44.04178075724672,4664465.0,105910.0
    14,44.58359189041502,4813735.0,107971.0
    15,43.78417563069135,4774533.0,109047.0
    16,40.90749765062634,4222431.0,103219.0
    17,44.68807796015129,4938837.0,110518.0
    18,41.67737155558088,4387752.0,105279.0
    19,42.25463632535745,4616150.0,109246.0
    20,42.26398305084746,4588178.0,108560.0
    21,42.35571140447378,4620161.0,109080.0
    22,43.65341556492015,4827282.0,110582.0
    23,45.55216710746478,5063670.0,111162.0
    24,45.008059842547766,504814
    
    precipitation_by_tithi.csv 33 words
  • Move process_astro_data.py
    Open process_astro_data.py
    import pandas as pd
    import swisseph as swe
    import numpy as np
    from datetime import datetime, timedelta
    import os
    
    # Configuration
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    WEATHER_FILE = os.path.join(BASE_DIR, 'weather_data_full_checkpoint.csv')
    OUTPUT_FILE = os.path.join(BASE_DIR, 'weather_with_astro_full.csv')
    
    # Initialize Ephemeris
    swe.set_ephe_path('/usr/share/swisseph') # Default or None often works if env var set
    
    def get_julian_day(date_str):
        dt = datetime.strptime(date_str, '%Y-%m-%d')
        return swe.julday(dt.year, dt.month, dt.day, 12.0) # Noon
    
    def get_zodiac_sign(lon):
        return int(lon / 30)
    
    def get_element(sign_idx):
        # 0=Fire, 1=Earth, 2=Air, 3=Water
        # Aries(0)=Fire, Taurus(1)=Earth, Gemini(2)=Air, Cancer(3)=Water...
        elements = ['Fire', 'Earth', 'Air', 'Water']
        return elements[sign_idx % 4]
    
    def normalize_angle(angle):
        return angle % 360
    
    def calculate_astro_features(row):
        jd = get_julian_day(row['date'])
    
    
    process_astro_data.py 403 words
  • Move select_stations.py
    Open select_stations.py
    import os
    import pandas as pd
    from pathlib import Path
    
    DATA_DIR = Path("/home/rko/Astrology Projects/Big Book of Astrology Research/22-astro-weather-meteorological/daily-summaries-latest")
    
    def get_station_info(file_path):
        try:
            # Read just the first row to get lat/lon
            df = pd.read_csv(file_path, nrows=1)
            if 'LATITUDE' in df.columns:
                return df['LATITUDE'].iloc[0], file_path.stat().st_size
        except:
            pass
        return None, 0
    
    def select_stations():
        north_files = []
        south_files = []
    
        # 1. Get Top North Files
        # (We know the largest ones are North, so this is easy)
        all_files = sorted(DATA_DIR.glob("*.csv"), key=lambda x: x.stat().st_size, reverse=True)
    
        print("Selecting North Stations...")
        for file_path in all_files:
            lat, size = get_station_info(file_path)
            if lat is not None and lat > 20:
                north_files.append((file_path, size, lat))
                if len(north_files) >
    
    select_stations.py 263 words
  • Move statistical_test.py
    Open statistical_test.py
    import pandas as pd
    import numpy as np
    import scipy.stats as stats
    import os
    import glob
    
    def run_stats():
        print("Initializing Statistical Verification...")
    
        # Paths
        base_dir = os.path.dirname(os.path.abspath(__file__))
        data_dir = os.path.join(base_dir, 'daily-summaries-latest')
        astro_file = os.path.join(base_dir, 'astro_weather_features.csv')
    
        # Load Astro Data
        print("Loading astro features...")
        astro_df = pd.read_csv(astro_file)
        dates = astro_df['date'].values
    
        # Initialize Aggregation DF
        agg_df = pd.DataFrame(index=dates, columns=['sum_p', 'count_p']).fillna(0.0)
    
        # Scan Weather Files
        files = glob.glob(os.path.join(data_dir, "*.csv"))
        # Use 500 files for specific variance check (robust enough for T-test on daily means)
        sample_size = 500 
        files = files[:sample_size]
        print(f"Aggregating weather from {len(files)} stations...")
    
        processed = 0
        for f in files:
            try:
    
    
    statistical_test.py 300 words
  • Move temperature_analysis.py
    Open temperature_analysis.py
    import pandas as pd
    import numpy as np
    import os
    import matplotlib.pyplot as plt
    import glob
    
    def analyze_temperature(data_dir, lunar_file, max_files=100):
        print("Loading lunar data...")
        lunar_df = pd.read_csv(lunar_file)
        lunar_df['date'] = pd.to_datetime(lunar_df['date'])
        lunar_map = lunar_df.set_index('date')['tithi'].to_dict()
    
        # Accumulators for TMAX
        tithi_temp_sum = {i: 0.0 for i in range(1, 31)}
        tithi_temp_count = {i: 0 for i in range(1, 31)}
    
        # Get weather files
        files = glob.glob(os.path.join(data_dir, "*.csv"))
        # Picking a different subset or the same subset? 
        # Let's verify using more files if possible, or the same max_files
        files_to_process = files[:max_files]
    
        print(f"Found {len(files)} weather files. Processing first {len(files_to_process)}...")
    
        processed_count = 0
        total_records = 0
    
        for file_path in files_to_process:
            try:
                # Read TMAX. TMAX is in tenths o
    
    temperature_analysis.py 352 words
  • Move weather_data_full_checkpoint.csv
    Open weather_data_full_checkpoint.csv
    date,sum_p,count_p,sum_t,count_t,avg_prcp,avg_tmax
    1900-01-01,45792.0,2929.0,-31614.0,2255.0,15.634004779788324,-14.019512195121951
    1900-01-02,45862.0,2947.0,10960.0,2269.0,15.562266711910418,4.830321727633319
    1900-01-03,43521.0,2942.0,55009.0,2277.0,14.79299796057104,24.158541941150638
    1900-01-04,24109.0,2935.0,109557.0,2280.0,8.214310051107326,48.05131578947368
    1900-01-05,45125.0,2943.0,151768.0,2273.0,15.332993544002719,66.76990761108667
    1900-01-06,28763.0,2946.0,184575.0,2284.0,9.763408010862186,80.81217162872154
    1900-01-07,36743.0,2963.0,203714.0,2270.0,12.400607492406344,89.74185022026431
    1900-01-08,45435.0,2940.0,183108.0,2286.0,15.454081632653061,80.0997375328084
    1900-01-09,81156.0,2947.0,151704.0,2284.0,27.538513742789277,66.42031523642731
    1900-01-10,115758.0,2975.0,151921.0,2289.0,38.91025210084034,66.37003058103976
    1900-01-11,204175.0,2960.0,128472.0,2288.0,68.97804054054055,56.15034965034965
    1900-01-12,127202.0,2967.0,140820.0,2291.0,42.87226154364678,61.466608467917936
    1900-0
    
    weather_data_full_checkpoint.csv 45,659 words
  • Move weather_data_full_North_checkpoint.csv
    Open weather_data_full_North_checkpoint.csv
    date,sum_p,count_p,sum_t,count_t,avg_prcp,avg_tmax
    1900-01-01,43242.0,2577.0,-46105.0,2214.0,16.779976717112923,-20.824299909665765
    1900-01-02,44356.0,2595.0,-3061.0,2229.0,17.09287090558767,-1.37326155226559
    1900-01-03,39166.0,2590.0,40855.0,2236.0,15.122007722007721,18.271466905187836
    1900-01-04,19107.0,2583.0,96278.0,2240.0,7.397212543554007,42.98125
    1900-01-05,38732.0,2591.0,139034.0,2233.0,14.94866846777306,62.26332288401254
    1900-01-06,21638.0,2595.0,171701.0,2243.0,8.338342967244701,76.54971020954079
    1900-01-07,26451.0,2613.0,191892.0,2232.0,10.12284730195178,85.97311827956989
    1900-01-08,27328.0,2589.0,171617.0,2248.0,10.555426805716493,76.3420818505338
    1900-01-09,59375.0,2595.0,139262.0,2244.0,22.880539499036608,62.059714795008915
    1900-01-10,96269.0,2623.0,139472.0,2249.0,36.70186808997331,62.015117830146735
    1900-01-11,181907.0,2608.0,117550.0,2250.0,69.74961656441718,52.24444444444445
    1900-01-12,117464.0,2615.0,129662.0,2252.0,44.919311663479924,57.57637655417407
    1900-01-13,30080.
    
    weather_data_full_North_checkpoint.csv 45,659 words
  • Move weather_data_full_South_checkpoint.csv
    Open weather_data_full_South_checkpoint.csv
    date,sum_p,count_p,sum_t,count_t,avg_prcp,avg_tmax
    1900-01-01,2550.0,352.0,14491.0,41.0,7.244318181818182,353.4390243902439
    1900-01-02,1506.0,352.0,14021.0,40.0,4.278409090909091,350.525
    1900-01-03,4355.0,352.0,14154.0,41.0,12.372159090909092,345.219512195122
    1900-01-04,5002.0,352.0,13279.0,40.0,14.210227272727273,331.975
    1900-01-05,6393.0,352.0,12734.0,40.0,18.161931818181817,318.35
    1900-01-06,7125.0,351.0,12874.0,41.0,20.299145299145298,314.0
    1900-01-07,10292.0,350.0,11822.0,38.0,29.405714285714286,311.10526315789474
    1900-01-08,18107.0,351.0,11491.0,38.0,51.58689458689459,302.39473684210526
    1900-01-09,21781.0,352.0,12442.0,40.0,61.87784090909091,311.05
    1900-01-10,19489.0,352.0,12449.0,40.0,55.36647727272727,311.225
    1900-01-11,22268.0,352.0,10922.0,38.0,63.26136363636363,287.42105263157896
    1900-01-12,9738.0,352.0,11158.0,39.0,27.664772727272727,286.1025641025641
    1900-01-13,7685.0,352.0,11639.0,39.0,21.832386363636363,298.43589743589746
    1900-01-14,7369.0,352.0,11252.0,37.0,20.93465909090
    
    weather_data_full_South_checkpoint.csv 45,659 words
  • Move weather_data.csv
    Open weather_data.csv
    month,temp_anomaly,sun_deg_tropical,mars_deg_tropical,moon_deg_tropical,sun_mars_angle_tropical,lunar_day_tropical,sun_deg_vedic_lahiri,mars_deg_vedic_lahiri,moon_deg_vedic_lahiri,sun_mars_angle_vedic_lahiri,lunar_day_vedic_lahiri
    1970-07,0.18,112.58197108556598,118.20852649565138,247.22503033678592,5.626555410085402,12,89.13429249598255,94.76084790606795,223.7773517472025,5.626555410085402,12
    1971-07,-0.04,112.35398779245585,321.8416727305662,25.777991571960133,150.51231506188967,23,88.89102821721015,298.3787131553205,2.3150319967144313,150.51231506188964,23
    1972-07,-0.17,113.07987649191168,130.6532207898326,171.26630054170866,17.573344297920926,5,89.60187257248542,107.17521687040635,147.7882966222824,17.573344297920926,5
    1973-07,0.32,112.84727041450904,15.403384132147158,292.87858621912903,97.44388628236189,16,89.3548103074789,351.910924025117,269.38612611209885,97.44388628236186,16
    1974-07,-0.07,112.62089586204425,142.4618045612985,57.741719792892,29.840908699254243,26,89.11463794916422,118.95
    
    weather_data.csv 57 words
  • Move weather_with_astro_full.csv
    weather_with_astro_full.csv 16 words
  • Move Project 23
    Open Project 23

    Birth Chart Similarity and Career Outcomes

    Project 23
  • Move Introduction to project 23
    Open Introduction to project 23

    Birth Chart Similarity and Career Outcomes

    Research Question

    Do individuals with similar birth charts tend to have similar career trajectories? Can chart similarity predict career path better than demographic factors alone?

    Hypothesis

    Birth chart similarity will not predict career similarity beyond demographic factors, but cluster analysis may reveal interesting patterns in the data.

    Background

    This research approaches the astrology-career question from a similarity perspective: rather than testing specific rules, we ask whether overall chart similarity correlates with career similarity.

    Data Sources

    • LinkedIn/Kaggle: Employment history datasets
    • Census data: Occupation information with birth dates
    • Astro-Databank: Charts with profession tags
    • Public records: Professional registries

    Mathematical Methods

    1. Cluster analysis: Group similar charts together
    2. Logistic regression: Predict career categories
    3. Survival analysis: Career longe
    Introduction to project 23 433 words
  • Move Results of project 23
    Open Results of project 23

    Project 23: Birth Chart Similarity and Career Outcomes (Sign-Based)

    Methodology

    • Features: Planetary Signs (Sun through Node), One-Hot Encoded.
    • Metric: Cosine Similarity between feature vectors.
    • Zodiacs: Tropical and Vedic (Lahiri).
    • Sample: 95 celebrities (Merged Dataset: Manual + scraped).
    • Data Merging: Prior 24 manually selected celebrities (Tech/Music/Science) + additional non-duplicates from project 6.
    • Categories: Tech, Music, Science, Arts, Politics, Sports.

    Findings

    Mode Within Mean Between Mean p-value Conclusion.
    Tropical 0.101533 0.092016 0.060701 NOT Significant
    Vedic 0.112330 0.091947 0.000086 SIGNIFICANT

    Interpretation

    Some significant clustering observed.

    Results of project 23 104 words
  • Move Archetype Heatmap Tropical Arts
    Archetype Heatmap Tropical Arts
  • Move Archetype Heatmap Tropical Entertainment
    Archetype Heatmap Tropical Entertainment
  • Move Archetype Heatmap Tropical Literature
    Archetype Heatmap Tropical Literature
  • Move Archetpe Heatmap Tropical Music
    Archetpe Heatmap Tropical Music
  • Move Archetype Heatmap Tropical Philosophy
    Archetype Heatmap Tropical Philosophy
  • Move Archetype Tropical Heatmap Politics
    Archetype Tropical Heatmap Politics
  • Move Archetype Heatmap Tropical Science
    Archetype Heatmap Tropical Science
  • Move Archetype Heatmap Tropical Sports
    Archetype Heatmap Tropical Sports
  • Move Archetype Heatmap Tropical Tech
    Archetype Heatmap Tropical Tech
  • Move Archetype Heatmap Vedic Arts
    Archetype Heatmap Vedic Arts
  • Move Archetype Heatmap Vedic Entertainment
    Archetype Heatmap Vedic Entertainment
  • Move Archetype Heatmap Vedic Literature
    Archetype Heatmap Vedic Literature
  • Move Archetype Heatmap Vedic Music
    Archetype Heatmap Vedic Music
  • Move Archetype Heatmap Vedic Philosophy
    Archetype Heatmap Vedic Philosophy
  • Move Archetype Heatmap Vedic Politics
    Archetype Heatmap Vedic Politics
  • Move Archetype Heatmap Vedic Science
    Archetype Heatmap Vedic Science
  • Move Archetype Heatmap Vedic Sports
    Archetype Heatmap Vedic Sports
  • Move Archetype Heatmap Vedic Tech
    Archetype Heatmap Vedic Tech
  • Move Similarity Bar Chart
    Similarity Bar Chart
  • Move celebrity_data.py
    Open celebrity_data.py
    """
    Database of Celebrity Birth Data
    Focus on Rodden Rating AA/A (verified/accurate)
    """
    
    CELEBRITY_DATA = [
        # SCIENCE & TECH
        {'name': 'Albert Einstein', 'date': '1879-03-14', 'time': '11:30', 'category': 'Science'},
        {'name': 'Marie Curie', 'date': '1867-11-07', 'time': '12:00', 'category': 'Science'},
        {'name': 'Isaac Newton', 'date': '1643-01-04', 'time': '01:38', 'category': 'Science'}, # Julian/Gregorian handling needed usually, but typically standardized
        {'name': 'Charles Darwin', 'date': '1809-02-12', 'time': '03:00', 'category': 'Science'},
        {'name': 'Nikola Tesla', 'date': '1856-07-10', 'time': '00:00', 'category': 'Science'},
        {'name': 'Sigmund Freud', 'date': '1856-05-06', 'time': '18:30', 'category': 'Science'},
        {'name': 'Carl Jung', 'date': '1875-07-26', 'time': '19:32', 'category': 'Science'},
        {'name': 'Steve Jobs', 'date': '1955-02-24', 'time': '19:15', 'category': 'Science'},
        {'name': 'Bill Gates', 'date': '1955-10-28', 'time': '22:
    
    celebrity_data.py 839 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 23: Birth Chart Career Similarity Analysis (Sign-Based)
    ===============================================================
    Hypothesis: People in the same profession have similar planetary sign placements.
    Method: 
    1. Load data from PRIOR_24 list AND celebrity_data.py
    2. Deduplicate people by name.
    3. Calculate Planetary Sign (0-11) for Tropical and Vedic zodiacs.
    4. One-Hot Encode the signs.
    5. Compute Cosine Similarity between career groups.
    6. Compare Within-Group similarity vs Between-Group similarity.
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from sklearn.metrics.pairwise import cosine_similarity
    import matplotlib.pyplot as plt
    from pathlib import Path
    import seaborn as sns
    from datetime import datetime
    
    # Import data
    try:
        from celebrity_data import CELEBRITY_DATA
    except ImportError:
        print("Warning: Could not import celebrity_data.py. Using internal data only.")
        CELEBRITY_DA
    
    analysis.py 1,234 words
  • Move analysis_results.csv
    Open analysis_results.csv
    within_mean,between_mean,t_stat,p_value
    0.4984081175041979,0.5035043136108642,-0.15829274170933857,0.8745360602561913
    
    analysis_results.csv 4 words
  • Move analysis_comparative_results.csv
    Open analysis_comparative_results.csv
    Mode,Within_Mean,Between_Mean,p_value,Conclusion
    tropical,0.10153256704980843,0.09201577017960483,0.060701101299287595,NOT Significant
    vedic,0.11233019853709508,0.0919466027251977,8.620498372911991e-05,SIGNIFICANT
    
    analysis_comparative_results.csv 6 words
  • Move Project 24
    Open Project 24

    Electional Astrology and Decision Making

    Project 24
  • Move Introduction to project 24
    Open Introduction to project 24

    Electional Astrology and Decision Making

    Objective

    To rigorously test the core tenets of Electional Astrology (the art of choosing the "perfect time" to start a venture) against real-world financial outcomes.

    Does the moment a company is born (IPO Date) determine its destiny?

    Research Question

    Can we predict the long-term success or failure of a public company based solely on the astrological quality of its incorporation or IPO date?

    Specifically, we test three ancient rules:

    1. The Lunar Cycle: Do businesses started during a Waxing Moon grow faster than those started during a Waning Moon?
    2. Retrogrades: Does listing during Mercury Retrograde correlate with failure, delisting, or poor returns?
    3. Benefic Aspects: Do positive angles (Trines/Conjunctions) between the Sun and Jupiter and other combinations correlate with market outperformance?

    Methodology

    Instead of analyzing a few cherry-picked examples, this project employs a *Big Data Approach

    Introduction to project 24 222 words
  • Move Results of project 24
    Open Results of project 24

    Results: Electional Astrology and Decision Making (IPO Analysis)

    Overview

    This study moved beyond small manual datasets to analyze market performance of publicly traded companies (N=10,000+) based on their IPO dates. We tested whether traditional "Electional Astrology" rules (start during Waxing Moon, avoid Retrogrades) correlate with financial survival and success.

    Data Sources

    • Population: ~10,000 Listings (NASDAQ/NYSE/AMEX) via Yahoo Finance API.
    • Metric: 1-Year Post-IPO Return on Investment (ROI) & Market Cap.
    • Astrological Features:
      • Full Ephemeris (12 Bodies + Chiron/Nodes).
      • Tithis: The 30 lunar days of Vedic astrology.
      • Cosine Aspect Matrix: Continuous variable measurement of planetary harmonics.

    Key Findings

    1. The Moon Phase Hypothesis

    Traditional Rule: Businesses started during a Waxing Moon (growing light) should grow faster.

    | Moon Phase | Avg 1-Yr Return | Sample Size | Std Dev | |------------|-----------------|-

    Results of project 24 529 words
  • Move Astrological Factors Dashboard
    Astrological Factors Dashboard
  • Move Electional Analysis
    Electional Analysis
  • Move Large Scale Electional Analysis
    Large Scale Electional Analysis
  • Move analysis.py
    Open analysis.py
    """
    Project 24: Large Scale IPO & Electional Astrology Analysis
    ===========================================================
    Objective: Test astrological election rules on ~10,000+ publicly traded companies.
    Data Source: Yahoo Finance (yfinance).
    """
    
    import yfinance as yf
    import pandas as pd
    import numpy as np
    import swisseph as swe
    import matplotlib.pyplot as plt
    from datetime import datetime, timedelta
    import warnings
    import concurrent.futures
    import sys
    import math
    import itertools
    import itertools
    import requests_cache
    session = requests_cache.CachedSession('yfinance.cache')
    
    warnings.filterwarnings('ignore')
    
    session.headers['User-agent'] = 'my-program/1.0'
    
    from pathlib import Path
    
    warnings.filterwarnings('ignore')
    
    OUTPUT_DIR = Path(__file__).parent
    OUTPUT_FILE = OUTPUT_DIR / 'large_scale_ipo_results.csv'
    
    # Configure Swisseph
    try:
        swe.set_ephe_path('/usr/share/sweph/ephe')
    except:
        pass
    
    
    def get_julian_day(dt):
        """Convert datetime to Jul
    
    analysis.py 949 words
  • Move Project 25
    Open Project 25

    Fixed Stars Natal Interpretation

    Project 25
  • Move Introduction to project 25
    Open Introduction to project 25

    Fixed Stars Natal Interpretation

    Overview

    This project investigates the influence of major fixed stars in natal astrology using a continuous intensity weighting system rather than binary "orb" cutoffs. By using trigonometric similarity, we can quantify the exact "strength" of a planetary contact to a fixed star.

    Methodology: Cosine Intensity

    Traditional astrological analysis often uses a hard binary cutoff (e.g., "Is the planet within 2 degrees? Yes/No"). This project replaces that approach with a Cosine Similarity metric, which provides a continuous measure of alignment precision.

    The Algorithm

    For every planet in a birth chart and every fixed star:

    1. Calculate the angular difference: $ \delta = |\theta_{planet} - \theta_{star}| $
    2. Calculate Intensity: $ \text{Intensity} = \cos(\delta) $

    This yields a value where:

    • 1.0: Perfect exact conjunction (0° difference).
    • ~0.999: Conjunction within ~2.5°.
    • < 0.9: Wide or irrelevant aspects.

    We apply a h

    Introduction to project 25 644 words
  • Move Results of project 25
    Open Results of project 25

    Results: Fixed Stars Natal Interpretation

    Overview

    This 2026 analysis applies a continuous weighting system to the study of Fixed Stars. Instead of asking "Is Star X conjunct Planet Y?" (a binary yes/no), we calculate the Cosine Intensity of the alignment.

    The formula $ \sum \cos(\theta_{diff}) $ allows us to quantify the total strength of a star's influence across a population, rewarding tighter orbs exponentially more than wide ones.

    Data Source

    • Sample: ~936 Public Figures (Celebrities, Politicians, Scientists, etc.).
    • Source: Migrated from Project 11 (celebrity_data.csv).
    • Categories: Individuals are grouped by their "Cause" of fame/category (e.g., Cardiac-related, Accident, etc - Note: mapped from available metadata).

    Key Findings (Visualized)

    1. Star-Planet Relationships (heatmap_star_planet.png)

    This heatmap reveals the aggregate intensity of specific Planet-Star pairs.

    • X-Axis: Planets (Sun, Moon... Pluto, Nodes).
    • *
    Results of project 25 701 words
  • Move Statistical Thinking
    Open Statistical Thinking

    To scientifically assess significance with this new Cosine Intensity model, you cannot rely on standard Chi-Square tests (which require discrete "counts"). Instead, the most robust metric would be a Z-Score derived from Permutation Testing (Resampling).

    Here is the proposed statistical framework for this intensity (continuous) validation:

    1. The Metric: Empirical Z-Score (vs. Randomized Baseline)

    Because planetary positions are not random, we cannot compare against a uniform distribution. We must compare against shuffled versions of the dataset itself.

    • The Process:
      1. Calculate determining the Observed Total Intensity for a specific pair (e.g., "Politicians + Regulus").
      2. Shuffle the "Category" labels of the 936 people randomly (keeping their birth charts intact) 10,000 times.
      3. Recalculate the Total Intensity for "Politicians + Regulus" in each of these 10,000 random universes.
      4. Compare:
        • Mean ($ \mu $): The average inten
    Statistical Thinking 364 words
  • Move Star Orb Tightness
    Star Orb Tightness
  • Move Fixed Stars Analysis
    Fixed Stars Analysis
  • Move Heatmap Category Star
    Heatmap Category Star
  • Move Heatmap Star Planet
    Heatmap Star Planet
  • Move celebrity_data.csv
    Open celebrity_data.csv
    name,birth_date,death_date,age_at_death,cause,sun_sign,sun_element,sun_saturn_hard,moon_saturn_hard,mars_sign,sun_neptune_aspect,cos_return_Sun,angle_return_Sun,cos_return_Moon,angle_return_Moon,cos_return_Mercury,angle_return_Mercury,cos_return_Venus,angle_return_Venus,cos_return_Mars,angle_return_Mars,cos_return_Jupiter,angle_return_Jupiter,cos_return_Saturn,angle_return_Saturn,cos_return_Uranus,angle_return_Uranus,cos_return_Neptune,angle_return_Neptune,cos_return_Pluto,angle_return_Pluto,cos_return_North Node,angle_return_North Node,birth_doy,death_doy,days_from_birthday
    Marilyn Monroe,1926-06-01 09:30:00,1962-08-05,36.17522245037645,overdose,Gemini,Air,False,True,Pisces,False,0.46241615438891304,62.456872241166096,-0.5962647575772474,233.39715359026266,0.2771797335577552,73.90804573587397,-0.8491120035069426,148.11521695661423,0.02904166447687333,88.33580120356606,0.9699985136957561,14.070218040454336,0.23765326093655142,76.2519247938279,-0.8723817042877126,150.73659964111474,0.19858455370243389
    
    celebrity_data.csv 2,881 words
  • Move detailed_conjunctions.csv
    Open detailed_conjunctions.csv

    planet,star,orb,cosine,name,category Sun,Aldebaran,0.2950534106422822,0.9999867405637947,Marilyn Monroe,overdose Pluto,Sirius,0.695715907403212,0.9999262803490074,Marilyn Monroe,overdose Sun,Vega,1.5273731004239153,0.9996447048361289,Elvis Presley,cardiac Uranus,Algol,1.3286745081098736,0.9997311299161913,Elvis Presley,cardiac Rahu,Altair,0.09075658272223563,0.9999987454703831,Elvis Presley,cardiac Rahu,Spica,0.8288989658565811,0.9998953545474463,Michael Jackson,overdose Ketu,Algol,1.5111010341434366,0.999652234439404,Michael Jackson,overdose Sun,Rigel,0.3520254428722751,0.999981125672764,Prince (musician),overdose Jupiter,Spica,1.8814931412633484,0.9994608731128602,Prince (musician),overdose Pluto,Regulus,0.12891539904947535,0.9999974687551855,Prince (musician),overdose Sun,Vega,1.7955397133652014,0.9995090025607125,David Bowie,cancer Mars,Vega,1.279317111322996,0.9997507339602921,David Bowie,cancer Uranus,Rigel,1.8464674342896643,0.9994807572314043,David Bowie,cancer Rahu,Aldebaran,0.074078246

    detailed_conjunctions.csv 3,340 words
  • Move fixed_stars_data.csv
    Open fixed_stars_data.csv
    name,field,sun_lon,conjunctions,num_conjunctions,has_royal_star
    Marilyn Monroe,overdose,70.12505341064228,Aldebaran,1,True
    Elvis Presley,cardiac,286.9773731004239,Vega,1,False
    John Lennon,homicide,196.30907917042737,None,0,False
    Michael Jackson,overdose,155.4591650805372,None,0,False
    Prince (musician),overdose,76.47797455712772,None,0,False
    Whitney Houston,overdose,136.5371564115,None,0,False
    David Bowie,cancer,287.2455397133652,Vega,1,False
    Amy Winehouse,overdose,171.5282507745974,None,0,False
    George Harrison,cancer,335.51204776694254,None,0,False
    Freddie Mercury,disease,162.07417701282043,None,0,False
    Kurt Cobain,suicide,331.4673055237564,None,0,False
    Janis Joplin,overdose,298.44988259633004,None,0,False
    Jimi Hendrix,overdose,244.53976738845614,None,0,False
    Jim Morrison,overdose,255.52334864069286,None,0,False
    Frank Sinatra,cardiac,259.0071731920378,None,0,False
    Dean Martin,disease,76.10028965978299,None,0,False
    Sammy Davis Jr,cancer,255.80970019112738,None,0,False
    Nat King Cole,ca
    
    fixed_stars_data.csv 1,943 words
  • Move statistical_permutation_test.py
    Open statistical_permutation_test.py
    import pandas as pd
    import numpy as np
    import os
    
    # Configuration
    SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
    INPUT_FILE_HITS = os.path.join(SCRIPT_DIR, 'detailed_conjunctions.csv')
    INPUT_FILE_PEOPLE = os.path.join(SCRIPT_DIR, 'celebrity_data.csv')
    OUTPUT_FILE_STATS = os.path.join(SCRIPT_DIR, 'permutation_test_results.csv')
    N_PERMUTATIONS = 1000
    
    def run_permutation_test():
        print("Loading data...")
        if not os.path.exists(INPUT_FILE_HITS) or not os.path.exists(INPUT_FILE_PEOPLE):
            print("Error: Input files not found. Run analysis.py first.")
            return
    
        # 1. Load Data
        hits_df = pd.read_csv(INPUT_FILE_HITS)
        people_df = pd.read_csv(INPUT_FILE_PEOPLE)
    
        # Clean people data
        # Ensure 'category' column exists (mapped from 'cause')
        if 'cause' in people_df.columns and 'category' not in people_df.columns:
            people_df['category'] = people_df['cause']
    
        # Filter for valid categories
        people_df = people_df[people_df[
    
    statistical_permutation_test.py 704 words
  • Move permutation_test_results.csv
    Open permutation_test_results.csv
    Category,Star,Observed_Intensity_Mean,Baseline_Mean,Std_Dev,Z_Score,P_Value,N_Category
    cancer,Altair,0.07015750494922456,0.1282335931183359,0.025063160705087732,-2.3171893143278655,0.014,171
    overdose,Regulus,0.2697989425227488,0.16015832899358248,0.04857704458786481,2.257045780766909,0.03,63
    homicide,Altair,0.24994088511176807,0.12805381857522866,0.058752484336052936,2.0745857458446997,0.07,36
    accident,Aldebaran,0.24633644233935786,0.15601238045686205,0.04632864991941214,1.9496372555559658,0.06,69
    cancer,Aldebaran,0.2104802046511945,0.1560916548771076,0.02791642127164207,1.9482636848346895,0.07,171
    disease,Antares,0.08489041448558371,0.1288613615277475,0.022811700262340633,-1.9275611434696307,0.056,212
    accident,Deneb Algedi,0.043472750685043464,0.11323009868606945,0.03630029814955793,-1.9216742439311203,0.05,69
    homicide,Betelgeuse,0.0555504629047034,0.17832464269744291,0.06788948933107472,-1.808441645421874,0.058,36
    natural,Altair,0.18265323799942704,0.1279035598543178,0.03181339772744855,1.7
    
    permutation_test_results.csv 107 words
  • Move visualize_results.py
    Open visualize_results.py
    #!/usr/bin/env python3
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    
    # Setup paths
    BASE_DIR = Path(__file__).parent
    DATA_FILE = BASE_DIR / "detailed_conjunctions.csv"
    OUTPUT_DIR = BASE_DIR
    
    def main():
        if not DATA_FILE.exists():
            print(f"Error: {DATA_FILE} not found. Run analysis.py first.")
            return
    
        print("Loading data...")
        df = pd.read_csv(DATA_FILE)
    
        # Set style
        sns.set_theme(style="whitegrid")
    
        # 1. Heatmap: Fixed Star vs Planet Intensity (Sum of Cosines)
        print("Generating Star vs Planet Heatmap...")
        plt.figure(figsize=(14, 10))
        pivot_planet = pd.crosstab(
            index=df['star'], 
            columns=df['planet'], 
            values=df['cosine'], 
            aggfunc='sum'
        ).fillna(0)
    
        sns.heatmap(pivot_planet, annot=True, fmt=".1f", cmap="YlOrRd", linewidths=.5)
        plt.title("Fixed Star Conjunction Intensity (Sum of Cosines) by Planet", fontsize=1
    
    visualize_results.py 265 words
  • Move detailed_conjunctions.csv
    Open detailed_conjunctions.csv
    planet,star,orb,cosine,name,category
    Sun,Aldebaran,0.2950534106422822,0.9999867405637947,Marilyn Monroe,overdose
    Pluto,Sirius,0.695715907403212,0.9999262803490074,Marilyn Monroe,overdose
    Sun,Vega,1.5273731004239153,0.9996447048361289,Elvis Presley,cardiac
    Uranus,Algol,1.3286745081098736,0.9997311299161913,Elvis Presley,cardiac
    Rahu,Altair,0.09075658272223563,0.9999987454703831,Elvis Presley,cardiac
    Rahu,Spica,0.8288989658565811,0.9998953545474463,Michael Jackson,overdose
    Ketu,Algol,1.5111010341434366,0.999652234439404,Michael Jackson,overdose
    Sun,Rigel,0.3520254428722751,0.999981125672764,Prince (musician),overdose
    Jupiter,Spica,1.8814931412633484,0.9994608731128602,Prince (musician),overdose
    Pluto,Regulus,0.12891539904947535,0.9999974687551855,Prince (musician),overdose
    Sun,Vega,1.7955397133652014,0.9995090025607125,David Bowie,cancer
    Mars,Vega,1.279317111322996,0.9997507339602921,David Bowie,cancer
    Uranus,Rigel,1.8464674342896643,0.9994807572314043,David Bowie,cancer
    Rahu,Aldebaran,0.0
    
    detailed_conjunctions.csv 3,342 words
  • Move Project 26
    Open Project 26

    Compatibility and Relationship Survival

    Project 26
  • Move Introduction to project 26
    Open Introduction to project 26

    Compatibility and Relationship Survival

    1. Study Overview (The "Aggregate Score" Test)

    This project tests the validity of the most common concept in pop-astrology: The Compatibility Score. Apps and websites often give users a percentage (e.g., "93% Match") based on summing up all the "good" and "bad" connections between two charts.

    The Hypothesis: If astrological compatibility is cumulative, then couples with a higher "Total Harmonic Score" (Sum of planetary interactions) should have relationships that last longer (higher survival rate) than couples with a lower score.

    2. Methodology: Large-Scale Survival Analysis

    A. The Metric: Total Harmonic Score

    We utilize a continuous mathematical model to quantify the total resonance between two birth charts using Cosine Similarity. $$ \text{Interaction} = \cos(\theta_{P1} - \theta_{P2}) $$

    • +1.0: Conjunction (Unity)
    • -1.0: Opposition (Polarity)
    • Total Score: The sum of this interaction for all 100 planetar
    Introduction to project 26 431 words
  • Move Results of project 26
    Open Results of project 26

    Results: Compatibility and Relationship Survival

    1. Hypothesis

    Does an astrological "Compatibility Score" predict marriage longevity? We tested multiple variations:

    1. V1/V2: Aggregate Cosine Score (Basic aspects).
    2. V3: Survival Analysis separating Death from Divorce.
    3. V4: Adding Zodiac Signs (Demographics).
    4. V5: Removing Generational Planets (Uranus, Neptune, Pluto).

    2. Methodology

    • Data: Wikidata (N = 2,722 couples).
    • Metric: Weighted ElasticNet Regression & Kaplan-Meier Survival Estimators.
    • Definition of Success: Relationship duration (Years) and "Survival" (Avoiding Divorce).

    3. Key Findings

    Experiment V4: The "Pluto Artifact"

    When we included Zodiac Signs and Outer Planets, our model achieved an $R^2$ of 0.08 (8% predictive power).

    • However, the top predictors were Pluto in Libra (Negative) vs Pluto in Aries (Positive).
    • This was a demographic artifact: Pluto marks the generation you were born i
    Results of project 26 575 words
  • Move Aspect Distributions
    Aspect Distributions
  • Move Regression Formula Coeefficients
    Regression Formula Coeefficients
  • Move Survival Curve Divorce
    Survival Curve Divorce
  • Move Survival Curve Widowhood
    Survival Curve Widowhood
  • Move Survival Curve Total
    Survival Curve Total
  • Move Synastry Boxplot
    Synastry Boxplot
  • Move Synastry Correlation Heatmap
    Synastry Correlation Heatmap
  • Move Synastry Difference Heatmap
    Synastry Difference Heatmap
  • Move fetch_couples_data.py
    Open fetch_couples_data.py
    #!/usr/bin/env python3
    """
    Couples Data Collector from Wikidata
    ------------------------------------
    Fetches couples (spouses) where both partners have known birth dates.
    Used for Projects 10, 26, 36.
    """
    
    import requests
    import pandas as pd
    import time
    from pathlib import Path
    
    OUTPUT_FILE = Path("couples_data_wikidata.csv")
    
    def fetch_wikidata_couples():
        print("Querying Wikidata for couples...")
    
        # SPARQL Query
        # Logic: Person1 has Spouse Person2. Get Birthdates and Deathdates.
        # Filter: ID(P1) < ID(P2) to avoid A-B and B-A duplicates.
        # Filter: Birth year > 1800 for data quality.
        query = """
        SELECT DISTINCT 
            ?person1 ?person1Label ?birth1 ?death1
            ?person2 ?person2Label ?birth2 ?death2
            ?start ?end
        WHERE {
          ?person1 wdt:P31 wd:Q5;         # P1 is Human
                   wdt:P569 ?birth1.      # P1 has Birth Date
          OPTIONAL { ?person1 wdt:P570 ?death1. } # P1 Death
    
          ?person1 p:P26 
    
    fetch_couples_data.py 426 words
  • Move find_best_formula.py
    Open find_best_formula.py
    import pandas as pd
    import numpy as np
    import swisseph as swe
    from datetime import datetime
    from sklearn.linear_model import ElasticNetCV
    from sklearn.preprocessing import StandardScaler
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import r2_score, mean_absolute_error
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    
    # Setup
    OUTPUT_DIR = Path(__file__).parent
    DATA_FILE = OUTPUT_DIR / "new_couples_wikidata.csv"
    swe.set_ephe_path(None)
    
    # Planets
    PLANETS = {
        'Sun': swe.SUN,
        'Mercury': swe.MERCURY,
        'Venus': swe.VENUS,
        'Mars': swe.MARS,
        'Jupiter': swe.JUPITER,
        'Saturn': swe.SATURN,
        'Node': swe.MEAN_NODE
    }
    PLANET_LIST = list(PLANETS.keys())
    
    SIGNS = ['Aries', 'Taurus', 'Gemini', 'Cancer', 'Leo', 'Virgo', 
             'Libra', 'Scorpio', 'Sagittarius', 'Capricorn', 'Aquarius', 'Pisces']
    
    def get_positions(date_str):
        try:
            dt = datetime.strptime(date_str, "%Y-%m-%d")
            jd
    
    find_best_formula.py 536 words
  • Move new_couples_wikidata.csv
    Open new_couples_wikidata.csv
    p1_name,p1_birth_date,p1_birth_time,p1_death_date,p2_name,p2_birth_date,p2_birth_time,p2_death_date,start_date,end_date
    Lucía Hiriart,1923-12-10,,2021-12-16,Augusto Pinochet,1915-11-25,,2006-12-10,1943-01-29,2006-12-10
    Chee-hash-kish,1840-01-01,,,Gerónimo,1829-06-16,,1909-02-17,,
    Thérèse Michielsen,1926-12-30,,2020-03-31,Jacques Brel,1929-04-08,,1978-10-09,1950-06-01,
    Georgo Handzlik,1958-01-01,,,Małgorzata Handzlik,1965-01-01,,,,
    Diane Holechek,1941-11-27,,2025-12-21,Chuck Norris,1940-03-10,,,1958-01-01,1989-01-01
    Leia Maria Nadler,1924-01-01,,2024-12-06,Boutros Boutros-Ghali,1922-11-14,,2016-02-16,1952-01-01,2016-01-01
    David Furnish,1962-10-25,,,Elton John,1947-03-25,,,2014-12-21,
    Beate Schrott,1988-04-15,,,Christian Taylor,1990-06-18,,,,
    Lauren Bacall,1924-09-16,,2014-08-12,Humphrey Bogart,1899-12-25,,1957-01-14,1945-05-21,1957-01-14
    Laura Bush,1946-11-04,,,George W. Bush,1946-07-06,,,1977-11-05,
    Lisa Marie Presley,1968-02-01,,2023-01-12,Q2831,1958-08-29,,2009-06-25,1994-05-26,1996-01-01
    
    new_couples_wikidata.csv 15,126 words
  • Move visualize_compatibility.py
    Open visualize_compatibility.py
    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    import numpy as np
    import os
    
    # Configuration
    SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
    INPUT_FILE = os.path.join(SCRIPT_DIR, 'compatibility_data_processed.csv')
    
    def load_data():
        if not os.path.exists(INPUT_FILE):
            print(f"Error: Processed data file not found at {INPUT_FILE}")
            return None
        return pd.read_csv(INPUT_FILE)
    
    def plot_correlation_heatmap(df):
        """
        Plots the correlation of each planetary aspect with the 'Success' binary outcome.
        """
        print("Generating Correlation Heatmap...")
    
        # Select only numeric aspect columns + Success
        # Filter columns that look like 'Planet_Planet'
        aspect_cols = [c for c in df.columns if '_' in c and c not in ['Couple', 'Status']]
    
        # Calculate correlation with Success
        correlations = df[aspect_cols].apply(lambda x: x.corr(df['Success']))
    
        # Reshape into matrix
        # We assume key
    
    visualize_compatibility.py 379 words
  • Move visualize_heatmap.py
    Open visualize_heatmap.py
    import pandas as pd
    import numpy as np
    import swisseph as swe
    from datetime import datetime
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    
    # Setup
    OUTPUT_DIR = Path(__file__).parent
    DATA_FILE = OUTPUT_DIR / "new_couples_wikidata.csv"
    swe.set_ephe_path(None)
    
    # Planets
    PLANETS = {
        'Sun': swe.SUN,
        'Mercury': swe.MERCURY,
        'Venus': swe.VENUS,
        'Mars': swe.MARS,
        'Jupiter': swe.JUPITER,
        'Saturn': swe.SATURN,
        'Node': swe.MEAN_NODE
    }
    PLANET_LIST = list(PLANETS.keys())
    
    def get_positions(date_str):
        try:
            dt = datetime.strptime(date_str, "%Y-%m-%d")
            jd = swe.julday(dt.year, dt.month, dt.day, 12.0)
            pos = {}
            for name, pid in PLANETS.items():
                deg = swe.calc_ut(jd, pid)[0][0]
                pos[name] = np.deg2rad(deg)
            return pos
        except:
            return None
    
    def main():
        print("Loading data for Heatmap...")
        df = pd.read_csv(DATA_FILE)
    
        data_lis
    
    visualize_heatmap.py 311 words
  • Move visualize_kde.py
    Open visualize_kde.py
    import pandas as pd
    import numpy as np
    import swisseph as swe
    from datetime import datetime
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    
    # Setup
    OUTPUT_DIR = Path(__file__).parent
    DATA_FILE = OUTPUT_DIR / "new_couples_wikidata.csv"
    swe.set_ephe_path(None)
    
    # Planets
    PLANETS = {
        'Sun': swe.SUN,
        'Moon': swe.MOON,  # Including Moon for this visualization (assuming noon is roughly okay for general distrib)
        'Mercury': swe.MERCURY,
        'Venus': swe.VENUS,
        'Mars': swe.MARS,
        'Jupiter': swe.JUPITER,
        'Saturn': swe.SATURN
    }
    # Note: Moon moves ~13 deg/day. Noon position has +/- 6.5 deg error. 
    # For broad distribution analysis (KDE) of thousands of couples, this noise might flatten the curve 
    # but shouldn't shift the mean significantly if random. 
    
    def get_positions(date_str):
        try:
            dt = datetime.strptime(date_str, "%Y-%m-%d")
            jd = swe.julday(dt.year, dt.month, dt.day, 12.0)
            pos = {}
            f
    
    visualize_kde.py 467 words
  • Move Project 27
    Open Project 27

    Horary Astrology - The Moon as Oracle

    Project 27
  • Move Introduction to project 27
    Open Introduction to project 27

    Horary Astrology - The Moon as Oracle

    1. Study Overview

    Horary Astrology is the branch of astrology that answers specific questions (e.g., "Will I get the job?", "Where is my lost ring?") using a chart cast for the exact moment the question is understood by the astrologer.

    Unlike Natal astrology (character analysis), Horary is binary and outcome-oriented: The answer is usually certain (Yes/No/Found/Lost). This makes it hypothetically the most scientifically testable branch of astrology.

    2. The Research Problem

    Automating Horary research is difficult because the "Significators" (the planets representing the actors) change based on the question:

    • "Will I marry him?" -> Check Aspect between Lord 1 (Querent) and Lord 7 (Quesited).
    • "Will I get the money?" -> Check Aspect between Lord 1 (Querent) and Lord 2 (Wealth).

    Without manual tagging of every chart, a script cannot easily know which planets to test.

    3. The "Rethought" Methodology

    To bypass the complexity of dynami

    Introduction to project 27 472 words
  • Move Results of project 27
    Open Results of project 27

    Results: Horary Astrology - The Moon as Oracle

    1. Study Overview

    This project investigates Horary Astrology, testing whether the condition of the Moon at the moment a question is asked (or an event is initiated) correlates with the outcome (Success vs. Failure).

    We define "Success" in two contexts:

    1. Synthetic Control: Randomly assigned True/False outcomes.
    2. Real IPO Data: Did the stock price increase after 1 year? (Source: Project 24).

    Moon Constraints Tested:

    • Void of Course: Moon makes no further aspects before changing signs. (Tradition: "Nothing will come of it").
    • Via Combusta: Moon between 15° Libra and 15° Scorpio. (Tradition: "Fear and instability").
    • Phase: Waxing (Growth) vs. Waning (Decay).

    2. Results Summary

    A. Synthetic Control (N=600)

    Baseline provided by random generation.

    • Void Success: 54.4% (Random noise)
    • Via Combusta Success: 32.6% (Random outlier in this seed)
    • Waxing vs Waning: ~50/50 s
    Results of project 27 480 words
  • Move Horary Analysis
    Horary Analysis
  • Move generate_data.py
    Open generate_data.py
    #!/usr/bin/env python3
    """
    Generate synthetic horary data for testing the pipeline.
    Generates 1000 random chart timestamps between 2000 and 2025.
    Assigns random outcomes (50/50) to serve as a CONTROL group.
    """
    import pandas as pd
    import numpy as np
    import random
    from datetime import datetime, timedelta
    
    def generate_synthetic_data(n_samples=1000):
        start_date = datetime(2000, 1, 1)
        end_date = datetime(2025, 1, 1)
        range_days = (end_date - start_date).days
    
        records = []
        question_types = ['lost_item', 'relationship', 'job', 'health', 'journey', 'lawsuit']
    
        for _ in range(n_samples):
            # Random date
            random_days = random.randrange(range_days)
            random_seconds = random.randrange(86400)
            dt = start_date + timedelta(days=random_days, seconds=random_seconds)
    
            # Random outcome (Base rate 50%)
            # NOTE: In a real study, this column would be user-supplied truth.
            outcome = random.choice([True, Fal
    
    generate_data.py 164 words
  • Move horary_data.csv
    Open horary_data.csv
    source,question_type,outcome,moon_phase,via_combusta,moon_void,moon_sign
    synthetic,lost_item,False,303.26233260415637,False,False,11
    synthetic,job,True,152.76055403665475,False,True,1
    synthetic,job,False,322.52547715807077,False,False,5
    synthetic,lawsuit,False,266.8378003945289,False,False,5
    synthetic,journey,True,57.87836622615626,True,False,7
    synthetic,health,True,237.40815971058873,False,False,11
    synthetic,lost_item,True,49.511972994919766,False,False,2
    synthetic,job,False,272.72305900213075,False,False,0
    synthetic,relationship,True,117.29118296491674,False,False,11
    synthetic,lost_item,False,141.66549520251743,False,False,0
    synthetic,journey,True,298.74752957933174,False,False,5
    synthetic,job,False,210.64909254554522,False,False,3
    synthetic,lawsuit,False,345.11823145843005,False,False,4
    synthetic,lawsuit,True,293.432621811084,False,False,2
    synthetic,lost_item,True,82.81070037137624,False,False,2
    synthetic,lost_item,False,347.8075856460435,False,True,3
    synthetic,lost_item,True,279.9
    
    horary_data.csv 1,410 words
  • Move synthetic_horary_data.csv
    Open synthetic_horary_data.csv
    question_type,year,month,day,hour,outcome
    lost_item,2022,4,26,2.4,False
    job,2002,12,17,9.85,True
    job,2018,10,6,8.55,False
    lawsuit,2011,12,17,18.933333333333334,False
    journey,2024,9,8,9.85,True
    health,2000,7,21,17.766666666666666,True
    lost_item,2021,4,16,15.95,True
    job,2012,7,11,7.7,False
    relationship,2008,11,8,12.366666666666667,True
    lost_item,2010,11,18,9.95,False
    journey,2013,10,29,13.483333333333333,True
    job,2021,11,22,5.083333333333333,False
    lawsuit,2016,8,31,2.75,False
    lawsuit,2021,8,2,17.0,True
    lost_item,2011,3,12,9.016666666666667,True
    lost_item,2005,8,4,0.23333333333333334,False
    lost_item,2019,10,22,7.3,True
    journey,2019,5,4,20.183333333333334,True
    relationship,2008,12,1,17.566666666666666,True
    relationship,2019,4,13,19.05,True
    relationship,2023,4,5,2.1166666666666667,True
    job,2019,8,11,15.283333333333333,True
    journey,2013,1,5,22.266666666666666,False
    relationship,2005,7,20,17.116666666666667,False
    lost_item,2004,7,2,9.633333333333333,False
    lost_item,2010,2,27,16.3,Fa
    
    synthetic_horary_data.csv 603 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """Project 27: Horary Astrology Questions Analysis"""
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime
    import matplotlib.pyplot as plt
    from pathlib import Path
    
    OUTPUT_DIR = Path(__file__).parent
    swe.set_ephe_path(None)
    
    # Historical recorded horary questions with outcomes (from Lilly's Christian Astrology and modern sources)
    # Format: (question_type, year, month, day, hour, outcome_positive)
    HORARY_RECORDS = [
        ('lost_item', 1646, 3, 15, 14, True),   # Found
        ('relationship', 1647, 5, 20, 10, False),
        ('journey', 1645, 8, 12, 9, True),
        ('health', 1646, 11, 3, 16, True),
        ('business', 1647, 2, 28, 11, False),
        ('lost_item', 1645, 6, 7, 15, True),
        ('relationship', 1646, 9, 14, 8, True),
        ('journey', 1647, 4, 22, 13, False),
        ('health', 1645, 12, 1, 10, True),
        ('business', 1646, 7, 18, 14, True),
    ]
    
    def get_horary_factors(year, month, day, hour):
    
    
    analysis.py 693 words
  • Move analysis_results.csv
    Open analysis_results.csv
    void_success,waxing_success
    1.0,1.0
    
    analysis_results.csv 4 words
  • Move Project 28
    Open Project 28

    Solar Houses and Life Domains

    Project 28
  • Move Introduction to project 28
    Open Introduction to project 28

    Solar Houses and Life Domains

    1. The Pivot: Why Solar Houses?

    Traditional astrological research into "Houses" (Life Domains) is plagued by two problems:

    1. Data Scarcity: Accurate houses require birth times precise to the minute (AA rating). Most historical data is not this accurate.
    2. System Ambiguity: There are 20+ house systems (Placidus, Koch, Whole Sign, Equal, etc.), and astrologers disagree on which to use.

    The Solution: This project uses Solar Houses.

    • We set the Sun as the anchor (0°).
    • We measure all other planets relative to the Sun.
    • This creates a "Life Domain" map that is independent of birth time and geographically stable.

    2. Research Question

    Does the distribution of planets relative to the Sun (Solar Houses) predict an individual's career path or life focus?

    3. Methodology

    1. Ingest birth data for ~80 celebrities across 5 categories (Science, Arts, Politics, Entertainment, Sports).
    2. Calculate the phase angle variance betwee
    Introduction to project 28 269 words
  • Move Results of project 28
    Open Results of project 28

    Results: Solar Houses and Life Domains

    1. Study Overview

    This project reformulates the study of "Astrological Houses" by moving away from time-dependent house systems (which require exact birth minutes and suffer from "house system" debates like Placidus vs. Whole Sign) to a universally calculating system: Solar Houses.

    The Concept: The Sun is the center of the solar system and the primary source of vitality in the chart. By treating the Sun's position as the permanent "Ascendant" (0°), we can map every other planet's relationship to the Sun as a "Solar House" position.

    • Example: If the Sun is at 10° Aries and Jupiter is at 10° Leo, Jupiter is 120° away. 120° / 30° = 4 signs away -> 5th Solar House (Creativity/Joy).

    2. Hypothesis

    Different professions emphasize different "Solar Distances" (Solar Houses) and Elemental distributions.

    • Politics: Should emphasize Fire (Action) and 1st/10th Solar Houses (Self/Public Standing).
    • Arts: Should emphasize Water (Emo
    Results of project 28 547 words
  • Move Solar House Heatmap
    Solar House Heatmap
  • Move Element Heatmap
    Element Heatmap
  • Move solar_houses_processed.csv
    Open solar_houses_processed.csv
    Category,Name,Planet,Sign,Solar_House,Element
    Science,Albert Einstein,Moon,Sag,9,Fire
    Science,Albert Einstein,Mercury,Ari,1,Fire
    Science,Albert Einstein,Venus,Ari,1,Fire
    Science,Albert Einstein,Mars,Cap,11,Earth
    Science,Albert Einstein,Jupiter,Aqu,12,Air
    Science,Albert Einstein,Saturn,Ari,1,Fire
    Science,Albert Einstein,Uranus,Vir,6,Earth
    Science,Albert Einstein,Neptune,Tau,2,Earth
    Science,Albert Einstein,Pluto,Tau,3,Earth
    Science,Marie Curie,Moon,Pis,5,Water
    Science,Marie Curie,Mercury,Sag,1,Fire
    Science,Marie Curie,Venus,Sco,1,Water
    Science,Marie Curie,Mars,Sco,1,Water
    Science,Marie Curie,Jupiter,Aqu,4,Air
    Science,Marie Curie,Saturn,Sco,1,Water
    Science,Marie Curie,Uranus,Can,8,Water
    Science,Marie Curie,Neptune,Ari,5,Fire
    Science,Marie Curie,Pluto,Tau,7,Earth
    Science,Isaac Newton,Moon,Can,6,Water
    Science,Isaac Newton,Mercury,Sag,12,Fire
    Science,Isaac Newton,Venus,Aqu,2,Air
    Science,Isaac Newton,Mars,Tau,4,Earth
    Science,Isaac Newton,Jupiter,Pis,3,Water
    Science,Isaac Newton,Saturn
    
    solar_houses_processed.csv 588 words
  • Move data_source.py
    Open data_source.py
    """
    Shared Celebrity Data Source for Project 28
    Migrated from Project 23 for independent analysis.
    """
    
    CELEBRITY_DATA = [
        # SCIENCE & TECH
        {'name': 'Albert Einstein', 'date': '1879-03-14', 'time': '11:30', 'category': 'Science'},
        {'name': 'Marie Curie', 'date': '1867-11-07', 'time': '12:00', 'category': 'Science'},
        {'name': 'Isaac Newton', 'date': '1643-01-04', 'time': '01:38', 'category': 'Science'},
        {'name': 'Charles Darwin', 'date': '1809-02-12', 'time': '03:00', 'category': 'Science'},
        {'name': 'Nikola Tesla', 'date': '1856-07-10', 'time': '00:00', 'category': 'Science'},
        {'name': 'Sigmund Freud', 'date': '1856-05-06', 'time': '18:30', 'category': 'Science'},
        {'name': 'Carl Jung', 'date': '1875-07-26', 'time': '19:32', 'category': 'Science'},
        {'name': 'Steve Jobs', 'date': '1955-02-24', 'time': '19:15', 'category': 'Science'},
        {'name': 'Bill Gates', 'date': '1955-10-28', 'time': '22:00', 'category': 'Science'},
        {'name': 'Elon Musk', '
    
    data_source.py 332 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 28: Solar House & Sign Emphasis by Life Domain
    """
    import pandas as pd
    import numpy as np
    import swisseph as swe
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    from data_source import CELEBRITY_DATA
    
    OUTPUT_DIR = Path(__file__).parent
    swe.set_ephe_path('/usr/share/libswe/ephe') # Try standard path, or None
    
    PLANETS = {
        'Sun': swe.SUN,
        'Moon': swe.MOON,
        'Mercury': swe.MERCURY,
        'Venus': swe.VENUS,
        'Mars': swe.MARS,
        'Jupiter': swe.JUPITER,
        'Saturn': swe.SATURN,
        'Uranus': swe.URANUS,
        'Neptune': swe.NEPTUNE,
        'Pluto': swe.PLUTO
    }
    
    SIGNS = ['Ari', 'Tau', 'Gem', 'Can', 'Leo', 'Vir', 'Lib', 'Sco', 'Sag', 'Cap', 'Aqu', 'Pis']
    
    def get_positions(date_str, time_str):
        year, month, day = map(int, date_str.split('-'))
        hour, minute = map(int, time_str.split(':'))
        ut = hour + minute/60.0
    
        jd = swe.julday(year, month, day, ut)
    
        positions = {}
    
    
    analysis.py 417 words
  • Move Project 29
    Open Project 29

    Asteroids and Psychological Themes

    Project 29
  • Move Introduction to project 29
    Open Introduction to project 29

    Asteroids and Psychological Themes

    Overview

    This project investigates the role of the four major asteroids (Ceres, Pallas, Juno, Vesta) and the centaur Chiron in the natal charts of notable individuals. By analyzing a dataset of 936 celebrities, we aim to uncover statistical correlations between these celestial bodies and specific psychological archetypes, professional inclinations, and life themes.

    Hypotheses

    1. Archetypal Prominence: Individuals who achieve fame or significant professional success will have a higher-than-expected frequency of asteroids conjunct their Sun (Identity) or Moon (Emotional Body).
    2. Sign Signatures: Certain asteroids will show "favored" signs in this population, reflecting the collective "mood" or traits required for fame (e.g., Pallas/Strategy in Aquarius/Innovation).
    3. Professional Correlation: Specific archetypes will cluster in relevant professions (e.g., Pallas for politicians/scientists, Vesta for single-minded artis
    Introduction to project 29 396 words
  • Move Results of project 29
    Open Results of project 29

    Results: Asteroids and Archetypes

    Synthesis

    This analysis explores the distribution of major asteroids (Ceres, Pallas, Juno, Vesta) and Chiron in the charts of 936 celebrities. Significant deviations from random distribution suggest that these archetypes play a role in fame and professional expression.

    Key Findings

    • Pallas (Strategy/Intellect) peaks significantly in Aquarius, suggesting a link between fame and innovative or unconventional intelligence.
    • Juno (Partnership) is prominent in Scorpio, highlighting the intensity and transformative nature of relationships in the public eye.
    • Vesta (Devotion) peaks in Aries, emphasizing focus, self-determination, and pioneering spirit.
    • Solar Conjunctions: Pallas, Juno, and Vesta are conjunct the Sun significantly more often than chance, indicating these archetypes are often fused with the core identity of famous individuals.

    Analysis Results: Asteroids, Aspects, and Archetypes

    Total Records: 936 Records with Pr

    Results of project 29 319 words
  • Move Asteroid Sign Distribution
    Asteroid Sign Distribution
  • Move Asteroid Sun Conjunctions
    Asteroid Sun Conjunctions
  • Move celebrity_data.csv
    Open celebrity_data.csv
    name,birth_date,death_date,age_at_death,cause,sun_sign,sun_element,sun_saturn_hard,moon_saturn_hard,mars_sign,sun_neptune_aspect,cos_return_Sun,angle_return_Sun,cos_return_Moon,angle_return_Moon,cos_return_Mercury,angle_return_Mercury,cos_return_Venus,angle_return_Venus,cos_return_Mars,angle_return_Mars,cos_return_Jupiter,angle_return_Jupiter,cos_return_Saturn,angle_return_Saturn,cos_return_Uranus,angle_return_Uranus,cos_return_Neptune,angle_return_Neptune,cos_return_Pluto,angle_return_Pluto,cos_return_North Node,angle_return_North Node,birth_doy,death_doy,days_from_birthday
    Marilyn Monroe,1926-06-01 09:30:00,1962-08-05,36.17522245037645,overdose,Gemini,Air,False,True,Pisces,False,0.46241615438891304,62.456872241166096,-0.5962647575772474,233.39715359026266,0.2771797335577552,73.90804573587397,-0.8491120035069426,148.11521695661423,0.02904166447687333,88.33580120356606,0.9699985136957561,14.070218040454336,0.23765326093655142,76.2519247938279,-0.8723817042877126,150.73659964111474,0.19858455370243389
    
    celebrity_data.csv 2,881 words
  • Move celebrity_data_with_asteroids.csv
    Open celebrity_data_with_asteroids.csv
    name,birth_date,death_date,age_at_death,cause,sun_sign,sun_element,sun_saturn_hard,moon_saturn_hard,mars_sign,sun_neptune_aspect,cos_return_Sun,angle_return_Sun,cos_return_Moon,angle_return_Moon,cos_return_Mercury,angle_return_Mercury,cos_return_Venus,angle_return_Venus,cos_return_Mars,angle_return_Mars,cos_return_Jupiter,angle_return_Jupiter,cos_return_Saturn,angle_return_Saturn,cos_return_Uranus,angle_return_Uranus,cos_return_Neptune,angle_return_Neptune,cos_return_Pluto,angle_return_Pluto,cos_return_North Node,angle_return_North Node,birth_doy,death_doy,days_from_birthday,Ceres_Sign,Ceres_Lon,Pallas_Sign,Pallas_Lon,Juno_Sign,Juno_Lon,Vesta_Sign,Vesta_Lon,Chiron_Sign,Chiron_Lon
    Marilyn Monroe,1926-06-01 09:30:00,1962-08-05,36.17522245037645,overdose,Gemini,Air,False,True,Pisces,False,0.462416154388913,62.456872241166096,-0.5962647575772474,233.39715359026263,0.2771797335577552,73.90804573587397,-0.8491120035069426,148.11521695661423,0.0290416644768733,88.33580120356606,0.969998513695756,14.07021804
    
    celebrity_data_with_asteroids.csv 2,881 words
  • Move celebrity_data_asteroids_tagged.csv
    Open celebrity_data_asteroids_tagged.csv
    name,birth_date,death_date,age_at_death,cause,sun_sign,sun_element,sun_saturn_hard,moon_saturn_hard,mars_sign,sun_neptune_aspect,cos_return_Sun,angle_return_Sun,cos_return_Moon,angle_return_Moon,cos_return_Mercury,angle_return_Mercury,cos_return_Venus,angle_return_Venus,cos_return_Mars,angle_return_Mars,cos_return_Jupiter,angle_return_Jupiter,cos_return_Saturn,angle_return_Saturn,cos_return_Uranus,angle_return_Uranus,cos_return_Neptune,angle_return_Neptune,cos_return_Pluto,angle_return_Pluto,cos_return_North Node,angle_return_North Node,birth_doy,death_doy,days_from_birthday,profession,Sun_Lon,Moon_Lon,Ceres_Sign,Ceres_Lon,Ceres_Sun_Conj,Ceres_Moon_Conj,Pallas_Sign,Pallas_Lon,Pallas_Sun_Conj,Pallas_Moon_Conj,Juno_Sign,Juno_Lon,Juno_Sun_Conj,Juno_Moon_Conj,Vesta_Sign,Vesta_Lon,Vesta_Sun_Conj,Vesta_Moon_Conj,Chiron_Sign,Chiron_Lon,Chiron_Sun_Conj,Chiron_Moon_Conj
    Marilyn Monroe,1926-06-01 09:30:00,1962-08-05,36.17522245037645,overdose,Gemini,Air,False,True,Pisces,False,0.462416154388913,62.456872241166
    
    celebrity_data_asteroids_tagged.csv 2,881 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 29: Asteroids and Psychological Themes Analysis
    Calculate positions for Ceres, Pallas, Juno, Vesta, and Chiron.
    Includes PyEphem fallback since Swiss Ephemeris asteroid files are often missing.
    """
    
    import pandas as pd
    import numpy as np
    import swisseph as swe
    import os
    import matplotlib.pyplot as plt
    from scipy.stats import chisquare, chi2_contingency
    from datetime import datetime
    
    # Try importing ephem for fallback
    try:
        import ephem
        HAS_EPHEM = True
    except ImportError:
        HAS_EPHEM = False
    
    # Constants
    OUTPUT_DIR = os.path.dirname(os.path.abspath(__file__))
    PROFESSION_DATA_PATH = os.path.join(os.path.dirname(OUTPUT_DIR), '35-professional-clustering-unsupervised', 'professional_data.csv')
    
    # Check for ephemeris path
    if os.path.exists('/usr/share/sweph/ephe'):
        swe.set_ephe_path('/usr/share/sweph/ephe')
    else:
        swe.set_ephe_path(None)
    
    # Asteroid IDs for Swiss Ephemeris
    ASTEROID_IDS = {
        'Ceres': 17,    # swe.CERE
    
    analysis.py 1,399 words
  • Move Project 30
    Open Project 30

    Cross-Cultural Zodiac and Personality (Chinese Zodiac Focus)

    Project 30
  • Move Introduction to project 30
    Open Introduction to project 30

    Project 30: Cross-Cultural Zodiac and Personality (Chinese Zodiac Focus)

    Overview

    This project investigates statistical correlations between the Chinese Zodiac (Shengxiao) and the Big Five Personality Traits (Five Factor Model).

    Using a large-scale dataset of open-source psychometric results, we analyze whether birth years associated with specific animal archetypes (Year of the Rat, Ox, Tiger, etc.) show distinct personality profiles consistent with traditional lore or generational cohorts.

    Methodology

    Data Source

    • Dataset: Open-Source Psychometrics Project (OSPP) Big Five Data (BIG5_data.csv).
    • Sample Size: N = 19,632 (Filtered for ages 13-90).
    • Timeframe: Data collected circa 2018.

    Variables

    • Chinese Zodiac Sign: Calculated cyclically based on birth year derived from Age.
      • Formula: Birth Year = 2018 - Age.
      • Sign: (Birth Year - 1900) % 12.
    • Personality Traits:
      • Extroversion (E)
      • **Ne
    Introduction to project 30 318 words
  • Move Results of project 30
    Open Results of project 30

    Results: Cross-Cultural Zodiac and Personality

    Data Sample: N=19,632 (Source: Open Psychometrics, 2018) Method: ANOVA comparison of Big 5 Traits across 12 Chinese Zodiac signs (Cyclic Year calculated from Age in 2018).

    Extroversion (E)

    • F-Statistic: 3.9789
    • P-Value: 8.1032e-06 (SIGNIFICANT)
    • Highest: Dog (3.12)
    • Lowest: Dragon (2.95)
    • Global Mean: 3.01

    Neuroticism (N)

    • F-Statistic: 5.1865
    • P-Value: 3.3534e-08 (SIGNIFICANT)
    • Highest: Goat (3.20)
    • Lowest: Dog (3.14)
    • Global Mean: 3.17

    Agreeableness (A)

    • F-Statistic: 5.9749
    • P-Value: 8.2065e-10 (SIGNIFICANT)
    • Highest: Horse (2.41)
    • Lowest: Dog (2.28)
    • Global Mean: 2.34

    Conscientiousness (C)

    • F-Statistic: 11.9208
    • P-Value: 1.2432e-22 (SIGNIFICANT)
    • Highest: Rooster (3.30)
    • Lowest: Horse (3.13)
    • Global Mean: 3.22

    Openness (O)

    • F-Statistic: 4.1401
    • P-Value: 3.9644e-06 (SIGNIFICANT)
    • Highest: Dog (3.70)
    • Lowest: Dragon (3.64
    Results of project 30 142 words
  • Move Chinese Zodiac Heatmap
    Chinese Zodiac Heatmap
  • Move BIG5_data.csv
    Open BIG5_data.csv
    race    age engnat  gender  hand    source  country E1  E2  E3  E4  E5  E6  E7  E8  E9  E10 N1  N2  N3  N4  N5  N6  N7  N8  N9  N10 A1  A2  A3  A4  A5  A6  A7  A8  A9  A10 C1  C2  C3  C4  C5  C6  C7  C8  C9  C10 O1  O2  O3  O4  O5  O6  O7  O8  O9  O10
    3   53  1   1   1   1   US  4   2   5   2   5   1   4   3   5   1   1   5   2   5   1   1   1   1   1   1   1   5   1   5   2   3   1   5   4   5   4   1   5   1   5   1   4   1   4   5   4   1   3   1   5   1   4   2   5   5
    13  46  1   2   1   1   US  2   2   3   3   3   3   1   5   1   5   2   3   4   2   3   4   3   2   2   4   1   3   3   4   4   4   2   3   4   3   4   1   3   2   3   1   5   1   4   4   3   3   3   3   2   3   3   1   3   2
    1   14  2   2   1   1   PK  5   1   1   4   5   1   1   5   5   1   5   1   5   5   5   5   5   5   5   5   5   1   5   5   1   5   1   5   5   5   4   1   5   1   5   1   5   1   5   5   4   5   5   1   5   1   5   5   5   5
    3   19  2   2   1   1   RO  2   5   2   4   3   4   3   4   4   5   5   4   4   2   4   5   5   5   4   5   2   5   4   4   3   5   3   4   4   3   3   3   4   5   1   4   5   4   2   3   4   3   5   2   4   2   5   2   5   5
    11  25  2   2   1   2   US  3   1   3   3   3   1   3   1   3   5   3   3   3   4   3   3   3   3   3   4   5   5   3   5   1   5   1   5   5   5   3   1   5   3   3   1   1   3   3   3   3   1   1   1   3   1   3   1   5   3
    13  31  1   2   1   2   US  1   5   2   4   1   3   2   4   1   5   1   5   4   5   1   4   4   1   5   2   2   2   3   4   3   4   3   5   5   3   2   5   4   3   3   4   5   3   5   3   4   2   1   3   3   5   5   4   5   3
    5   20  1   2   1   5   US  5   1   5   1   5   1   5   4   4   1   2   4   2   4   2   2   3   2   2   2   5   5   1   5   1   5   1   5   4   5   2   4   3   3   3   3   3   3   3   3   3   1   5   1   4   1   4   3   
    
    BIG5_data.csv 1,124,033 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    PROJECT 30: CROSS-CULTURAL ZODIAC PERSONALITY
    Analysis of Big Five Personality Traits vs Chinese Zodiac (Cyclic Years).
    
    Note: Western Zodiac requires Month/Day, which is not available in the public Big5 dataset (only Age).
    Therefore, this analysis focuses on the Chinese Zodiac (Cyclic Year of Birth) and Generational Archetypes.
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    
    # Constants
    OUTPUT_DIR = Path(__file__).parent
    DATA_PATH = OUTPUT_DIR / 'BIG5_data.csv'
    DATA_YEAR = 2018 # Assumption based on dataset metadata timeframe
    
    # Chinese Zodiac Order (Rat starts cycle)
    CHINESE_SIGNS = [
        'Monkey', 'Rooster', 'Dog', 'Pig', 
        'Rat', 'Ox', 'Tiger', 'Rabbit', 
        'Dragon', 'Snake', 'Horse', 'Goat'
    ]
    # Note: 1900 was Year of the Rat.
    # (1900 % 12) = 4. 
    # Modulo 12 logic check:
    # 0: Monkey, 1: Rooster, 2: Dog, 3: Pig, 
    
    analysis.py 955 words
  • Move Project 31
    Open Project 31

    Planetary Patterns and Disease Outbreaks (12-Body Cosine Metric)

    Project 31
  • Move Introduction to project 31
    Open Introduction to project 31

    Planetary Patterns and Disease Outbreaks (12-Body Cosine Metric)

    Project Objective

    This project analyzes the angular relationships between 12 celestial bodies during major historical disease outbreaks (1900-2025). Instead of using predefined "aspects" (Conjunction, Square), we use the Cosine of the Angular Difference as a continuous metric to detect subtle harmonic patterns or tendencies toward alignment (+1) or opposition (-1).

    Methodology

    • Bodies Analyzed: Sun, Moon, Rahu, Ketu, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto.
    • Metric: Cosine(Angle_A - Angle_B)
      • +1.0: Conjunction (0°)
      • 0.0: Square (90°)
      • -1.0: Opposition (180°)
    • Control Group: Full Century Analysis (All non-outbreak years 1900-2025).
    • Statistical Test: T-test (Independent samples) comparing the mean Cosine value of Outbreak Years vs. Control Years.

    Key Findings (Significant Pairs)

    Several planetary pairs showed statistically significant devia

    Introduction to project 31 449 words
  • Move Results of project 31
    Open Results of project 31

    Results: Planetary Patterns and Outbreaks

    Analysis Window: 1900-2025 Total Years Analyzed: 126 Outbreak Years: 13 Control Years: 113

    Methodology

    Calculated the cosine of the angular difference for all pairs of the following 12 bodies: Sun, Moon, Rahu, Ketu, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto

    • Analysis Type: Full Century Control (1900-2025)
    • Outbreak Years: 13
    • Control Years: 113

    Statistical Significance (T-Test)

    Pairs with P-Value < 0.10:

    Pair Outbreak Mean Control Mean Diff P-Value
    Rahu-Pluto -0.487 0.040 -0.527 0.0123
    Rahu-Mars 0.307 -0.017 +0.324 0.0842
    Ketu-Mars -0.307 0.017 -0.324 0.0842
    Sun-Pluto -0.228 0.238 -0.466 0.0897
    Saturn-Uranus -0.542 -0.008
    Results of project 31 199 words
  • Move Pair Significances
    Pair Significances
  • Move Outbreak Heatmap
    Outbreak Heatmap
  • Move analysis_data_full_century.csv
    Open analysis_data_full_century.csv
    year,is_outbreak,outbreak_name,hard_aspect_count,Jupiter-Saturn_angle,Jupiter-Saturn_aspect,Jupiter-Uranus_angle,Jupiter-Uranus_aspect,Jupiter-Neptune_angle,Jupiter-Neptune_aspect,Jupiter-Pluto_angle,Jupiter-Pluto_aspect,Saturn-Uranus_angle,Saturn-Uranus_aspect,Saturn-Neptune_angle,Saturn-Neptune_aspect,Saturn-Pluto_angle,Saturn-Pluto_aspect,Uranus-Neptune_angle,Uranus-Neptune_aspect,Uranus-Pluto_angle,Uranus-Pluto_aspect,Neptune-Pluto_angle,Neptune-Pluto_aspect
    1900,False,None,3,29.027120980990844,None,7.1709686688549255,Conjunction,154.94825718352007,None,165.42526039788473,None,21.85615231213592,None,176.02462183548909,Opposition,165.54761862112443,None,162.119225852375,None,172.59622906673965,Opposition,10.477003214364657,None
    1901,False,None,2,5.343754027521925,Conjunction,24.155600656872394,None,171.2696532519284,None,159.62070636122493,None,29.49935468439432,None,165.92589922440646,None,154.276952333703,None,164.57474609119922,None,176.22369298190267,Opposition,11.648946890703456,None
    1902,F
    
    analysis_data_full_century.csv 145 words
  • Move analysis_data_12body_cosine.csv
    Open analysis_data_12body_cosine.csv
    year,is_outbreak,outbreak_name,Sun-Moon_cos,Sun-Rahu_cos,Sun-Ketu_cos,Sun-Mercury_cos,Sun-Venus_cos,Sun-Mars_cos,Sun-Jupiter_cos,Sun-Saturn_cos,Sun-Uranus_cos,Sun-Neptune_cos,Sun-Pluto_cos,Moon-Rahu_cos,Moon-Ketu_cos,Moon-Mercury_cos,Moon-Venus_cos,Moon-Mars_cos,Moon-Jupiter_cos,Moon-Saturn_cos,Moon-Uranus_cos,Moon-Neptune_cos,Moon-Pluto_cos,Rahu-Ketu_cos,Rahu-Mercury_cos,Rahu-Venus_cos,Rahu-Mars_cos,Rahu-Jupiter_cos,Rahu-Saturn_cos,Rahu-Uranus_cos,Rahu-Neptune_cos,Rahu-Pluto_cos,Ketu-Mercury_cos,Ketu-Venus_cos,Ketu-Mars_cos,Ketu-Jupiter_cos,Ketu-Saturn_cos,Ketu-Uranus_cos,Ketu-Neptune_cos,Ketu-Pluto_cos,Mercury-Venus_cos,Mercury-Mars_cos,Mercury-Jupiter_cos,Mercury-Saturn_cos,Mercury-Uranus_cos,Mercury-Neptune_cos,Mercury-Pluto_cos,Venus-Mars_cos,Venus-Jupiter_cos,Venus-Saturn_cos,Venus-Uranus_cos,Venus-Neptune_cos,Venus-Pluto_cos,Mars-Jupiter_cos,Mars-Saturn_cos,Mars-Uranus_cos,Mars-Neptune_cos,Mars-Pluto_cos,Jupiter-Saturn_cos,Jupiter-Uranus_cos,Jupiter-Neptune_cos,Jupiter-Pluto_cos,Saturn-Uranus_c
    
    analysis_data_12body_cosine.csv 145 words
  • Move analsis_v1_aspects.py
    Open analsis_v1_aspects.py
    #!/usr/bin/env python3
    """
    Project 31: Planetary Patterns and Disease Outbreaks
    Comparative analysis of outer planetary cycles during major historical epidemics 
    vs. non-epidemic years (full century control group).
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    import matplotlib.pyplot as plt
    from pathlib import Path
    import seaborn as sns
    
    OUTPUT_DIR = Path(__file__).parent
    if not OUTPUT_DIR.exists():
        OUTPUT_DIR.mkdir()
    
    # Ensure ephemeris is available or set to None (moshier fallback)
    # Using standard path usually available or None
    swe.set_ephe_path(None)
    
    # --- Configuration ---
    START_YEAR = 1900
    END_YEAR = 2025
    
    # List of major 20th/21st century pandemics/epidemics
    # Source: WHO, CDC historical records
    # Format: Name, Start Year
    OUTBREAKS = {
        1918: "Spanish Flu",
        1919: "Spanish Flu (Cont)",
        1957: "Asian Flu",
        1968: "Hong Kong Flu",
        1981: "HIV/AIDS Emergence",
        2002: "SARS (Early)",
        200
    
    analsis_v1_aspects.py 1,083 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 31: Planetary Patterns and Disease Outbreaks
    Metric: Cosine of Planetary Angle Differences (12 Bodies)
    Bodies: Sun, Moon, Rahu, Ketu, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    import matplotlib.pyplot as plt
    from pathlib import Path
    import seaborn as sns
    import math
    
    OUTPUT_DIR = Path(__file__).parent
    if not OUTPUT_DIR.exists():
        OUTPUT_DIR.mkdir()
    
    # Ensure ephemeris is available or set to None (moshier fallback)
    swe.set_ephe_path(None)
    
    # --- Configuration ---
    START_YEAR = 1900
    END_YEAR = 2025
    
    # List of major 20th/21st century pandemics/epidemics
    OUTBREAKS = {
        1918: "Spanish Flu",
        1919: "Spanish Flu (Cont)",
        1957: "Asian Flu",
        1968: "Hong Kong Flu",
        1981: "HIV/AIDS Emergence",
        2002: "SARS (Early)",
        2003: "SARS",
        2009: "Swine Flu (H1N1)",
        2014: "Ebola (West Africa)",
        2019: 
    
    analysis.py 774 words
  • Move Project 32
    Open Project 32

    Historical Predictions

    Project 32
  • Move Introduction to project 32
    Open Introduction to project 32

    Historical Predictions

    Overview

    This project evaluates the accuracy of 39 famous astrological predictions made between 1555 and 2022. The dataset includes a mix of Mundane (world events), Financial, and Electional predictions to determine if historical success rates exceed random chance.

    Data Source

    A curated list of well-documented predictions from astrologers such as:

    • Nostradamus
    • William Lilly
    • Evangeline Adams
    • Jeane Dixon
    • Modern Financial Astrologers (Raymond Merriman, Arch Crawford)

    Methodology

    • Success Criteria: Rated based on historical consensus of the outcome.
    • Statistical Test: Binomial Test (Success Rate vs 50% chance).
    • Segmentation: Analysis by Category and Time Horizon.

    Results

    • Overall Accuracy: 56.4% (22 Correct, 17 Incorrect)
    • Significance: P = 0.2612 (Not significant). The results are indistinguishable from random chance.

    Performance by Category

    1. Financial: 80% (Small sample, selection bias likel
    Introduction to project 32 254 words
  • Move Results of project 32
    Open Results of project 32

    Results: Historical Predictions

    Overview

    This analysis evaluated 39 famous astrological predictions from 1555 to 2022.

    Key Findings

    • Overall Accuracy: 56.4%
    • Statistical Significance: p=0.2612 The aggregate performance of these historical predictions is not statistically distinguishable from a coin flip.

    Performance by Category

    Category N Accuracy
    Personal 1.0 100.0%
    Financial 5.0 80.0%
    Mundane 25.0 60.0%
    Electional 8.0 25.0%

    Performance by Time Horizon

    Horizon N Accuracy
    Short Term (<2y) 20.0 45.0%
    Medium (2-10y) 12.0 58.3%
    Long Term (>10y) 7.0 85.7%

    The Dataset

    Source Year_Made Target_Year Event_Description Result
    William Lilly 1651 16
    Results of project 32 680 words
  • Move Accuracy by Category
    Accuracy by Category
  • Move Horizon vs Outcome
    Horizon vs Outcome
  • Move predictions_data.csv
    Open predictions_data.csv
    Source,Year_Made,Target_Year,Event_Description,Category,Result,Time_Delta_Years
    William Lilly,1651,1666,Great Fire of London,Mundane,Success,15
    William Lilly,1651,1665,Great Plague of London,Mundane,Success,14
    Nostradamus,1555,1789,French Revolution (Vague),Mundane,Success,234
    Nostradamus,1555,1999,King of Terror from Sky,Mundane,Failure,444
    Jeane Dixon,1956,1960,Democrats win election (JFK),Electional,Failure,4
    Jeane Dixon,1956,1963,President dies in office,Mundane,Success,7
    Jeane Dixon,1958,1958,World War III,Mundane,Failure,0
    Jeane Dixon,1968,1970,Communism collapse,Mundane,Failure,2
    Evangeline Adams,1914,1917,US enters War,Mundane,Success,3
    Evangeline Adams,1899,1899,Windsor Hotel Fire,Personal,Success,0
    Evangeline Adams,1931,1944,US at War (WWII),Mundane,Success,13
    John Gribbin,1974,1982,The Jupiter Effect (Earthquakes),Mundane,Failure,8
    Indian Astrologers,1962,1962,World Doom (8 Planet Cluster),Mundane,Failure,0
    André Barbault,1974,1989,Collapse of Soviet Union,Mundane,Success,15
    
    predictions_data.csv 156 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 32: Historical Predictions Evaluation
    Statistical analysis of famous astrological predictions vs outcomes.
    """
    
    import pandas as pd
    import numpy as np
    from scipy import stats
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    
    OUTPUT_DIR = Path(__file__).parent
    DATA_FILE = OUTPUT_DIR / 'predictions_data.csv'
    
    def main():
        print("Project 32: Historical Predictions Analysis")
        print("-" * 50)
    
        # Load Data
        if not DATA_FILE.exists():
            print("Error: predictions_data.csv not found.")
            return
    
        df = pd.read_csv(DATA_FILE)
        df['Result_Bool'] = df['Result'] == 'Success'
    
        total_n = len(df)
        success_n = df['Result_Bool'].sum()
        accuracy = success_n / total_n
    
        print(f"Total Predictions: {total_n}")
        print(f"Successful: {success_n}")
        print(f"Accuracy Rate: {accuracy:.2%}")
    
        # 1. Binomial Test vs Random Chance (50/50)
        # H0: p <= 0.5
    
    
    analysis.py 464 words
  • Move Project 33
    Open Project 33

    Planetary Dignities and Character

    Project 33
  • Move Introduction to project 33
    Open Introduction to project 33

    Project 33: Planetary Dignities and Character

    Objective

    To investigate whether "Essential Dignity" (a planet's strength by sign) correlates with professional success in relevant fields, using a dataset of 758 Creative Geniuses (Project 16 data).

    Methodology

    • Metric: Standard Ptolemaic Dignity Scores.
      • Domicile (+5)
      • Exaltation (+4)
      • Peregrine (0)
      • Detriment (-5)
      • Fall (-4)
    • Controls: Comparison of specific occupations (e.g., Writers) against the rest of the high-achievement dataset.

    Key Findings

    1. Writers (n=139)

    Significant findings (p < 0.05):

    • Mars (Diff: -0.80, p=0.011): Writers have significantly WEAKER Mars (more Debility) than other creative geniuses. This aligns with the archetype of the writer as observer rather than action-hero.
    • Sun (Diff: -0.46, p=0.07): Writers generally have lower solar dignity (less ego-drive/leadership focus?).
    • Moon (Diff: +0.46, p=0.05): Writers tend to have **Stronger Moons
    Introduction to project 33 525 words
  • Move Results of project 33
    Open Results of project 33

    Results: Planetary Dignities & Character

    Overview

    Analyzed 758 charts of historical figures for Essential Dignity (Domicile/Exaltation vs Detriment/Fall). Does the 'strength' of a planet correlate with career choice?

    Scoring System

    • Domicile: +5
    • Exaltation: +4
    • Peregrine: 0
    • Detriment: -5
    • Fall: -4

    Significant Findings (P < 0.10)

    Occupation Planet Mean Score Vs Rest Diff P-Value
    writer Mars -0.76 0.04 -0.80 0.0112
    filmmaker Sun 0.83 -0.02 +0.85 0.0265
    writer Moon 0.34 -0.12 +0.46 0.0532
    filmmaker Moon -0.79 0.02 -0.81 0.0608
    writer Sun -0.34 0.12 -0.46 0.0722

    Interpretation

    The most significant finding is writer and Mars (Diff: -0.80). This group actually has WEAKER Mars placement than average (Debility?).


    Phase 2: Vedic Analysis (Sidereal/Lahiri)

    Overview

    Re-analyzed 758 charts using **Sidereal Z

    Results of project 33 267 words
  • Move Total Chart Dignities
    Total Chart Dignities
  • Move Total Chart Dignities in Vedic
    Total Chart Dignities in Vedic
  • Move Dignity Heatmap
    Dignity Heatmap
  • Move Dignity Heatmap in Vedic
    Dignity Heatmap in Vedic
  • Move genius_data.csv
    Open genius_data.csv
    name,field,achievement,sun_sign,sun_neptune_aspect,sun_uranus_aspect,venus_neptune_aspect,trop_sun_in_creative_sign,trop_venus_in_creative_sign,trop_creativity_score,sid_sun_in_creative_sign,sid_venus_in_creative_sign,sid_creativity_score,Sun-Moon,Sun-Mercury,Sun-Venus,Sun-Mars,Sun-Jupiter,Sun-Saturn,Sun-Uranus,Sun-Neptune,Sun-Pluto,Sun-Rahu,Sun-Ketu,Moon-Mercury,Moon-Venus,Moon-Mars,Moon-Jupiter,Moon-Saturn,Moon-Uranus,Moon-Neptune,Moon-Pluto,Moon-Rahu,Moon-Ketu,Mercury-Venus,Mercury-Mars,Mercury-Jupiter,Mercury-Saturn,Mercury-Uranus,Mercury-Neptune,Mercury-Pluto,Mercury-Rahu,Mercury-Ketu,Venus-Mars,Venus-Jupiter,Venus-Saturn,Venus-Uranus,Venus-Neptune,Venus-Pluto,Venus-Rahu,Venus-Ketu,Mars-Jupiter,Mars-Saturn,Mars-Uranus,Mars-Neptune,Mars-Pluto,Mars-Rahu,Mars-Ketu,Jupiter-Saturn,Jupiter-Uranus,Jupiter-Neptune,Jupiter-Pluto,Jupiter-Rahu,Jupiter-Ketu,Saturn-Uranus,Saturn-Neptune,Saturn-Pluto,Saturn-Rahu,Saturn-Ketu,Uranus-Neptune,Uranus-Pluto,Uranus-Rahu,Uranus-Ketu,Neptune-Pluto,Neptune-Rahu,Neptune-
    
    genius_data.csv 2,270 words
  • Move source_data.py
    Open source_data.py
    # Extracted from Project 16
    CREATIVE_GENIUSES = [
        # ============================================================
        # SCIENTISTS & INVENTORS (400+)
        # ============================================================
        # Physics Nobel Laureates
        ('Albert Einstein', '1879-03-14', '11:30', 'scientist', 'Physics Nobel 1921'),
        ('Marie Curie', '1867-11-07', '12:00', 'scientist', 'Physics Nobel 1903'),
        ('Niels Bohr', '1885-10-07', '12:00', 'scientist', 'Physics Nobel 1922'),
        ('Werner Heisenberg', '1901-12-05', '12:00', 'scientist', 'Physics Nobel 1932'),
        ('Erwin Schrodinger', '1887-08-12', '12:00', 'scientist', 'Physics Nobel 1933'),
        ('Paul Dirac', '1902-08-08', '12:00', 'scientist', 'Physics Nobel 1933'),
        ('Enrico Fermi', '1901-09-29', '12:00', 'scientist', 'Physics Nobel 1938'),
        ('Richard Feynman', '1918-05-11', '14:30', 'scientist', 'Physics Nobel 1965'),
        ('Murray Gell-Mann', '1929-09-15', '12:00', 'scientist', 'Physics Nobel 1969'),
        ('Steven 
    
    source_data.py 5,459 words
  • Move dignities_analyzed.py
    Open dignities_analyzed.py
    name,occupation,Sun_Sign,Sun_Score,Sun_Dignity,Moon_Sign,Moon_Score,Moon_Dignity,Mercury_Sign,Mercury_Score,Mercury_Dignity,Venus_Sign,Venus_Score,Venus_Dignity,Mars_Sign,Mars_Score,Mars_Dignity,Jupiter_Sign,Jupiter_Score,Jupiter_Dignity,Saturn_Sign,Saturn_Score,Saturn_Dignity,Total_Dignity
    Albert Einstein,scientist,Pisces,0,Peregrine,Sagittarius,0,Peregrine,Aries,0,Peregrine,Aries,-5,Detriment,Capricorn,4,Exaltation,Aquarius,0,Peregrine,Aries,-4,Fall,-5
    Marie Curie,scientist,Scorpio,0,Peregrine,Pisces,0,Peregrine,Sagittarius,-5,Detriment,Scorpio,-5,Detriment,Scorpio,5,Domicile,Aquarius,0,Peregrine,Scorpio,0,Peregrine,-5
    Niels Bohr,scientist,Libra,-4,Fall,Libra,0,Peregrine,Libra,0,Peregrine,Scorpio,-5,Detriment,Leo,0,Peregrine,Virgo,-5,Detriment,Cancer,-5,Detriment,-19
    Werner Heisenberg,scientist,Sagittarius,0,Peregrine,Libra,0,Peregrine,Scorpio,0,Peregrine,Capricorn,0,Peregrine,Capricorn,4,Exaltation,Capricorn,-4,Fall,Capricorn,5,Domicile,5
    Erwin Schrodinger,scientist,Leo,5,Domicile,Taurus,4,Exa
    
    dignities_analyzed.py 1,576 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 33: Planetary Dignities & Character
    Does Essential Dignity (Domicile/Exaltation) correlate with Career Success/Field?
    """
    
    import sys
    import pandas as pd
    import numpy as np
    import swisseph as swe
    from scipy import stats
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    from datetime import datetime
    
    # Import the data extracted from Project 16
    from source_data import CREATIVE_GENIUSES
    
    OUTPUT_DIR = Path(__file__).parent
    swe.set_ephe_path(None)
    
    SIGNS = ['Aries', 'Taurus', 'Gemini', 'Cancer', 'Leo', 'Virgo',
             'Libra', 'Scorpio', 'Sagittarius', 'Capricorn', 'Aquarius', 'Pisces']
    
    PLANETS = {
        'Sun': swe.SUN,
        'Moon': swe.MOON,
        'Mercury': swe.MERCURY,
        'Venus': swe.VENUS,
        'Mars': swe.MARS,
        'Jupiter': swe.JUPITER,
        'Saturn': swe.SATURN
    }
    
    # Dignity Map (Sign Indices 0-11)
    # Sign: 0=Ari, 1=Tau, 2=Gem, 3=Can, 4=Leo, 5=Vir, 6=Lib, 7=Sco, 8=Sag, 9=Cap, 10=Aqu, 11=Pis
    DIGNITIES
    
    analysis.py 921 words
  • Move analysis_vedic.py
    Open analysis_vedic.py
    #!/usr/bin/env python3
    """
    Project 33: Planetary Dignities & Character (VEDIC/SIDEREAL)
    Re-analysis using Sidereal Zodiac (Lahiri Ayanamsa).
    Does Essential Dignity (Domicile/Exaltation) correlate with Career Success/Field?
    """
    
    import sys
    import pandas as pd
    import numpy as np
    import swisseph as swe
    from scipy import stats
    import matplotlib.pyplot as plt
    import seaborn as sns
    from pathlib import Path
    from datetime import datetime
    
    # Import the data extracted from Project 16
    from source_data import CREATIVE_GENIUSES
    
    OUTPUT_DIR = Path(__file__).parent
    swe.set_ephe_path(None)
    
    # --- VEDIC SETUP ---
    # Set Sidereal Mode to Lahiri
    swe.set_sid_mode(swe.SIDM_LAHIRI, 0, 0)
    print("Sidereal Mode: Lahiri Ayanamsa Set.")
    
    SIGNS = ['Aries', 'Taurus', 'Gemini', 'Cancer', 'Leo', 'Virgo',
             'Libra', 'Scorpio', 'Sagittarius', 'Capricorn', 'Aquarius', 'Pisces']
    
    PLANETS = {
        'Sun': swe.SUN,
        'Moon': swe.MOON,
        'Mercury': swe.MERCURY,
        'Venus': swe.VENUS,
        'Ma
    
    analysis_vedic.py 827 words
  • Move dignities_analyzed_vedic.py
    Open dignities_analyzed_vedic.py
    name,occupation,Sun_Sign,Sun_Score,Sun_Dignity,Moon_Sign,Moon_Score,Moon_Dignity,Mercury_Sign,Mercury_Score,Mercury_Dignity,Venus_Sign,Venus_Score,Venus_Dignity,Mars_Sign,Mars_Score,Mars_Dignity,Jupiter_Sign,Jupiter_Score,Jupiter_Dignity,Saturn_Sign,Saturn_Score,Saturn_Dignity,Total_Dignity
    Albert Einstein,scientist,Pisces,0,Peregrine,Scorpio,-4,Fall,Pisces,-9,Detriment/Fall,Pisces,4,Exaltation,Capricorn,4,Exaltation,Aquarius,0,Peregrine,Pisces,0,Peregrine,-5
    Marie Curie,scientist,Libra,-4,Fall,Aquarius,0,Peregrine,Scorpio,0,Peregrine,Scorpio,-5,Detriment,Scorpio,5,Domicile,Aquarius,0,Peregrine,Scorpio,0,Peregrine,-4
    Niels Bohr,scientist,Virgo,0,Peregrine,Virgo,0,Peregrine,Virgo,9,Domicile/Exaltation,Scorpio,-5,Detriment,Cancer,-4,Fall,Virgo,-5,Detriment,Gemini,0,Peregrine,-5
    Werner Heisenberg,scientist,Scorpio,0,Peregrine,Virgo,0,Peregrine,Scorpio,0,Peregrine,Capricorn,0,Peregrine,Sagittarius,0,Peregrine,Sagittarius,5,Domicile,Sagittarius,0,Peregrine,5
    Erwin Schrodinger,scientist,Cancer,0,Peregr
    
    dignities_analyzed_vedic.py 1,576 words
  • Move Project 34
    Open Project 34

    Solar Return Annual Predictions (Cosine Method)

    Project 34
  • Move Introduction to project 34
    Open Introduction to project 34

    Solar Return Annual Predictions (Cosine Analysis)

    Objective

    To test the predictive validity of Solar Return Charts (annual charts cast for the moment the Sun returns to its exact natal position) using an agnostic, continuous metric rather than prejudged "good" or "bad" aspects.

    Methodology

    The traditional approach defines specific aspects (e.g., "Jupiter Trine Sun = Good"). We discarded this in favor of a data-driven approach:

    1. Metric: Cosine Similarity of the angle between every planetary pair.
      • $\text{Cos}(0^\circ) = +1.0$ (Conjunction)
      • $\text{Cos}(180^\circ) = -1.0$ (Opposition)
      • $\text{Cos}(90^\circ) = 0.0$ (Square)
    2. Features: Calculated for all 66 pairs generated from 12 celestial bodies:
      • Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto, Mean Node, Mean Lilith (Apogee).
    3. Statistical Test: T-Tests comparing the mean cosine value of a pair during an Event Year (e.g., Marriage) vs. the rest
    Introduction to project 34 463 words
  • Move Results of project 34
    Open Results of project 34

    Results: Solar Return Annual Predictions

    Methodology

    Instead of traditional "Good/Bad" aspects, we calculated the Cosine Similarity of the angle between every planetary pair in the Solar Return chart ($+1$ for Conjunction, $-1$ for Opposition).

    • Sample: 451 Life Events (Death, Marriage, Award, Divorce, Crisis).
    • Metric: T-test comparing the cosine mean of a specific event vs. all other years.

    Key Findings

    1. The Secular Bias (Slow Movers)

    The strongest statistical signals came from outer planet pairs (Uranus, Neptune, Pluto).

    • Death & Uranus-Neptune ($p < 0.001$): This is likely a historical artifact. The Uranus-Neptune conjunction occurred in the early 1990s. If our dataset has a cluster of deaths in the 1990s (which it does, as many 20th-century figures died then), this "signal" is likely just a timestamp, not astrology.
    • Divorce & Uranus-Pluto ($p < 0.001$): Similarly, the Uranus-Pluto conjunction of the mid-1960s coincides with the cultural ri
    Results of project 34 414 words
  • Move Cosine Analysis
    Cosine Analysis
  • Move cosine_analysis.py
    Open cosine_analysis.py
    #!/usr/bin/env python3
    """
    Project 34: Solar Return Annual Predictions (Cosine Analysis)
    -------------------------------------------------------------
    Objective: Be agnostic. Use cosines of angle differences of pairs from the 
    12 celestial features (Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, 
    Uranus, Neptune, Pluto, Mean Node, Lilith).
    
    Methodology:
    1. Load event data from solar_return_data.csv.
    2. For each event year:
       a. Calculate Solar Return chart (assuming 12:00 birth time if unknown).
       b. Calculate positions of 12 bodies.
       c. Calculate 66 pair-wise Cosines (cos(A-B)).
    3. Statistical Analysis:
       a. For each Event Type (Death, Marriage, etc.), compare pair means to the rest of the dataset.
       b. Identify significant deviations.
    """
    
    import pandas as pd
    import numpy as np
    import swisseph as swe
    from datetime import datetime, timedelta
    from pathlib import Path
    from scipy import stats
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    # Constants
    PLAN
    
    cosine_analysis.py 864 words
  • Move analysis_results.csv
    Open analysis_results.csv
    saturn_fisher_p,saturn_odds_ratio,jupiter_fisher_p,n_events,n_crisis,n_positive,crisis_saturn_pct,positive_saturn_pct,crisis_jupiter_pct,positive_jupiter_pct,crisis_mars_pct,positive_mars_pct,crisis_venus_pct,positive_venus_pct,crisis_uranus_pct,positive_uranus_pct,crisis_pluto_pct,positive_pluto_pct
    0.8262246007721575,1.0639072847682118,0.05602608529990441,451,202,249,0.2524752475247525,0.24096385542168675,0.23267326732673269,0.1606425702811245,0.19801980198019803,0.20481927710843373,0.21782178217821782,0.1606425702811245,0.15841584158415842,0.1927710843373494,0.27722772277227725,0.17269076305220885
    
    
    analysis_results.csv 4 words
  • Move analysis.py
    Open analysis.py
    #!/usr/bin/env python3
    """
    Project 17b: Solar Return Annual Predictions
    ============================================
    Tests predictive accuracy of solar return charts using 10,000+ famous people.
    
    DATA SOURCES (REAL):
    - Wikidata: Birth dates, death dates, key life events
    - Wikipedia: Marriage dates, divorce dates, major achievements
    - Swiss Ephemeris: Solar return calculations
    
    METHODOLOGY:
    1. Fetch birth/death/marriage/divorce data for famous people
    2. Categorize years as crisis (death year, divorce) or positive (marriage, awards)
    3. Calculate solar returns for event years
    4. Test if return chart indicators correlate with event types
    """
    
    import numpy as np
    import pandas as pd
    import swisseph as swe
    from scipy import stats
    from datetime import datetime
    import matplotlib.pyplot as plt
    from pathlib import Path
    import requests
    import time
    import json
    
    OUTPUT_DIR = Path(__file__).parent
    swe.set_ephe_path(None)
    
    SIGNS = ['Aries', 'Taurus', 'Gemini', 'Cancer', 'Leo', 'Virg
    
    analysis.py 6,359 words
  • Move Gratitude
    Gratitude
  • Move Thank you
    Open Thank you

    Thank you

    • to the Maker of Heaven and Earth
    • also to the makers of the Swiss Ephemeris
    • and to my astrology teachers
    Thank you 25 words