Skip to content

Four Pillars & Derivations (四柱八字)

Complete BaZi (Eight Characters) analysis API. Computes the four pillars (year, month, day, hour) from a date, then derives all classical relationships: hidden stems, stem combinations and clashes, branch harmonies/clashes/punishments, ten relations, twelve life stages, element strength, void branches, virtue stars, and 30 almanac flags. Includes major and minor luck period computation.

Four Pillars (四柱)

ExportDescription
computeFourPillars(date)Compute year, month, day, and hour pillars

Hidden Stems (地支藏干)

ExportDescription
HIDDEN_STEMSRecord<Branch, HiddenStem[]> — main, middle, residual stems
getHiddenStems(branch)Hidden stems for a branch (main stem first)

Stem Relations (天干五合/相衝)

ExportDescription
STEM_COMBINATIONSFive stem combinations with transformed elements
STEM_CLASHESFour stem clash pairs
isStemCombination(a, b)Check if two stems form a 五合
isStemClash(a, b)Check if two stems clash
getCombinedElement(a, b)Transformed element of a combination, or null

Branch Relations (地支六合/六衝/三合/刑/害/破)

ExportDescription
HARMONY_PAIRS六合: 子丑, 寅亥, 卯戌, 辰酉, 巳申, 午未
CLASH_PAIRS六衝: 子午, 丑未, 寅申, 卯酉, 辰戌, 巳亥
THREE_HARMONIES三合: 申子辰水, 寅午戌火, 巳酉丑金, 亥卯未木
SEASONAL_UNIONS三會: 寅卯辰木, 巳午未火, 申酉戌金, 亥子丑水
HALF_HARMONIES半合: pairs from three-harmony groups
PUNISHMENT_GROUPS刑: 寅巳申無恩, 丑戌未恃勢, 子卯無禮
SELF_PUNISHMENT自刑: 辰午酉亥
HARM_PAIRS六害: 子未, 丑午, 寅巳, 卯辰, 申亥, 酉戌
DESTRUCTION_PAIRS六破: 子酉, 丑辰, 寅亥, 卯午, 巳申, 未戌
isThreeHarmony(a, b, c)Check three-harmony group
isPunishment(a, b)Check punishment relationship
isSelfPunishment(branch)Check self-punishment
isHarm(a, b)Check harm pair
isDestruction(a, b)Check destruction pair

Hidden Harmony (暗合)

ExportDescription
HIDDEN_HARMONY_PAIRSPre-computed pairs where main hidden stems form 五合
isHiddenHarmony(a, b)Check if two branches have 暗合

Ten Relations (十神)

ExportDescription
TEN_RELATION_NAMESAll 10 relation names
getTenRelation(dayStem, otherStem)Derive the ten-relation
getTenRelationForBranch(dayStem, branch)Ten-relation using main hidden stem

Twelve Life Stages (長生十二神)

ExportDescription
TWELVE_STAGES['長生','沐浴','冠帶','臨官','帝旺','衰','病','死','墓','絕','胎','養']
getLifeStage(stem, branch)Life stage of a stem at a branch

Element Strength (旺相休囚死)

ExportDescription
STRENGTHRecord<Strength, string> with descriptive labels
getStrength(element, monthBranch)Seasonal strength: 旺, 相, 休, 囚, or 死

Earth Types (濕土/燥土)

ExportDescription
EARTH_BRANCHES['辰','丑','戌','未']
isWetEarth(branch)辰丑 are wet earth
isDryEarth(branch)戌未 are dry earth
getStorageElement(branch)庫/墓: 辰→水, 戌→火, 丑→金, 未→木

Void Branches (旬空)

ExportDescription
computeVoidBranches(dayStem, dayBranch){ true: Branch, partial: Branch } — 正空 (polarity match) and 偏空

Salary Star (祿神)

ExportDescription
SALARY_STARRecord<Stem, Branch> — stem → 臨官 branch
getSalaryStar(stem)Get the 祿 branch for a stem

Virtue Stars (天德/月德)

ExportDescription
getMonthlyVirtue(monthBranch)月德: yang stem of the three-harmony element
getHeavenlyVirtue(monthBranch)天德: traditional 12-entry lookup (stem or branch)
getMonthlyVirtueCombo(monthBranch)月德合: 五合 partner of 月德
getHeavenlyVirtueCombo(monthBranch)天德合: combination partner of 天德

Almanac Flags (神煞)

30 symbolic markers derived from stem-branch combinatorics:

ExportDescription
ALMANAC_FLAG_REGISTRYFull registry of all 30 flags with metadata
getAlmanacFlags(date)All active flags for a date
getAlmanacFlagsForPillars(pillars, season)All active flags from pre-computed pillars

Day stem derivations:

ExportDescription
getHeavenlyNoble(stem)天乙貴人: two noble branches
getSupremeNoble(stem)太極貴人: supreme noble branches
getLiteraryStar(stem)文昌貴人: literary star branch
getProsperityStar(stem)祿神: prosperity branch
getRamBlade(stem)羊刃: ram blade branch
getGoldenCarriage(stem)金輿: golden carriage branch
getStudyHall(stem)學堂: study hall (長生 position)

Branch derivations (三合 based):

ExportDescription
getTravelingHorse(branch)驛馬: from 三合 group
getPeachBlossom(branch)桃花: from 三合 group
getCanopy(branch)華蓋: from 三合 group
getGeneralStar(branch)將星: from 三合 group
getRobberyStar(branch)劫煞: from 三合 group
getDeathSpirit(branch)亡神: from 三合 group

Branch derivations (other):

ExportDescription
getRedPhoenix(branch)紅鸞: red phoenix
getHeavenlyJoy(branch)天喜: heavenly joy (紅鸞 + 6)
getLonelyStar(branch)孤辰: lonely star
getWidowStar(branch)寡宿: widow star
getHeavenlyDoctor(branch)天醫: heavenly doctor (year branch + 1)

Day pillar predicates:

ExportDescription
isCommandingStar(stem, branch)魁罡: 庚辰/壬辰/庚戌/戊戌
isTenEvils(stem, branch)十惡大敗: 10 specific day pillars
isYinYangError(stem, branch)陰差陽錯: 12 specific day pillars
isGoldSpirit(stem, branch)金神: 己巳/癸酉/乙丑
isTenSpirits(stem, branch)十靈日: 10 specific day pillars
isHeavenNet(branch)天羅: 戌/亥
isEarthTrap(branch)地網: 辰/巳

Calendar predicates:

ExportDescription
isHeavensPardon(stem, branch, season)天赦日: seasonal pardon day
isMonthBreak(dayBranch, monthBranch)月破: day clashes month
isYearBreak(dayBranch, yearBranch)歲破: day clashes year
isFourWaste(stem, branch, season)四廢: element dead in season

Multi-pillar patterns:

ExportDescription
getThreeWonders(pillars)三奇貴人: 乙丙丁 (天) / 甲戊庚 (地) / 壬癸辛 (人)

Luck Periods (大運/小運)

ExportDescription
getLuckDirection(yearStem, gender)Yang+male or yin+female → forward; opposite → backward
computeMajorLuck(birthDate, gender, count?)大運: 10-year periods from month pillar (default 8 periods)
computeMinorLuck(hourPillar, direction, fromAge, toAge)小運: year-by-year pillars from hour pillar

Types

typescript
interface Pillar { stem: Stem; branch: Branch; }
interface FourPillars { year: Pillar; month: Pillar; day: Pillar; hour: Pillar; }
type TenRelation = '比肩' | '劫財' | '食神' | '傷官' | '偏財' | '正財' | '七殺' | '正官' | '偏印' | '正印';
type LifeStage = '長生' | '沐浴' | '冠帶' | '臨官' | '帝旺' | '衰' | '病' | '死' | '墓' | '絕' | '胎' | '養';
type DayFitness = '建' | '除' | '滿' | '平' | '定' | '執' | '破' | '危' | '成' | '收' | '開' | '閉';
type AlmanacCategory = 'noble' | 'academic' | 'romance' | 'travel' | 'wealth' | 'protection' | 'health' | 'inauspicious';
interface AlmanacFlagInfo { name: string; english: string; auspicious: boolean; category: AlmanacCategory; }
interface AlmanacFlagResult extends AlmanacFlagInfo { positions: ('year' | 'month' | 'day' | 'hour')[]; }
type LuckDirection = 'forward' | 'backward';
interface MajorLuckPeriod { pillar: { stem: Stem; branch: Branch; stemBranch: StemBranch }; startAge: number; endAge: number; }
interface MajorLuckResult { direction: LuckDirection; startAge: number; periods: MajorLuckPeriod[]; }
interface MinorLuckYear { age: number; pillar: { stem: Stem; branch: Branch; stemBranch: StemBranch }; }
type PunishmentType = '無恩' | '恃勢' | '無禮';
type EarthType = '濕' | '燥';
type DayRelation = '生' | '剋' | '合' | '衝' | '比和';