Viridia Capital

Internal Access Only

This document is confidential and covered by NDA. Enter the access code to continue.

Viridia Capital — Internal Technical Specification

Automated Trading Pipeline
System Architecture

Five-layer end-to-end system specification covering the VCSE signal engine, signal validation, trade construction, order management, and PnL attribution. Internal use only — NDA required.

v0.2 — April 2026 BingX · Binance · Kraken · Deribit (TBD) Python + Node.js Proprietary · Confidential
00

Team & Ownership

Every deliverable in this document is assigned to a primary owner. Colour coding is used consistently throughout.

Sam Head Trader — Backend & Infra owner
Senior Quant Right-hand, orchestrates Eng-1 & Eng-2, leads quant research
Engineer 1 Options engine & anything options-related
Engineer 2 L2 Signal Validation system
ComponentPrimary OwnerSupportingStatus
Backend infrastructure & DevOpsSamActive
Dashboard (frontend)SamSenior QuantLive
VCSE research & methodologySamSenior QuantIn Progress
Shared data backbone (DB, event bus)SamSenior QuantBuild
Market scannerSenior QuantSamPartial
L1 Signal pipeline (VCSE → event store)Senior QuantSamBuild
L2 Signal validation & confluence scoringEngineer 2Senior QuantBuild
L3 Trade construction engineSenior QuantSamBuild
L4 OMS & order routingSamSenior QuantBuild
L4 Bankroll management modelSenior QuantSamBuild
Options pricing & vol engineEngineer 1Senior QuantDeribit TBD
L5 PnL attribution & feedback loopSenior QuantSamBuild
Kraken API integrationSamPartial
Deribit integrationEngineer 1SamPending account
01

System Overview

One pipeline, five layers. A validated signal flows from detection through construction, execution, management, and close — with every event logged to a shared data backbone. The loop closes by feeding trade outcomes back into signal quality scoring.

L1
Signal Detection
VCSE · Scanner · Vol Engine
L2
Validation
Confluence scoring · Filtering
L3
Construction
Instrument · Structure · Size
L4
Management
OMS · Risk · Bankroll
L5
Close & PnL
Exit · Attribution · Loop
Design principle: Every event (signal, validation, trade plan, fill, close) is written to the shared event store with a timestamp, source, and metadata. This makes cross-layer querying trivial: "how did VCSE signals perform when confluence > 0.8?" or "avg hold time on Kraken trades this quarter?" — the data is already there without any joins across separate systems.

Build Status Overview

ComponentStatusNotes
Dashboard (React frontend)LiveDark theme, admin routes, 5s polling, risk aggregator
BingX + Binance APIsLivePosition feeds, partial execution, real-time data
VCSE Research PaperCompletev0.1 Architecture Draft — April 2026
Jupiter–Saturn PineScript IndicatorBuiltv3.0 with 20 aspects, retrograde, projection
Planet Ingress PineScript IndicatorBuiltMFE/MAE stats per transit
Live risk aggregatorLiveLeverage, liquidation distance, VaR, VCSE overlay
Kraken APIPartialAccount live, full integration needed
VCSE ML pipelineIn ProgressPaper complete, XGBoost baseline underway
Market scannerPartialRunning; output standardisation needed
Shared event store (DB backbone)BuildPriority zero — blocks all other layers
L2 Confluence scoring engineBuildOwned by Engineer 2
L3 Trade constructionBuildDecision tree + sizing
OMS (unified order router)BuildBingX + Binance + Kraken
Bankroll management modelBuildKelly / fractional sizing
Options pricing & vol engineTBDOwned by Engineer 1, blocked until Deribit live
Deribit integrationTBDAccount setup pending
L5 PnL attributionBuildSignal feedback loop
02

Shared Data Backbone

The single most important infrastructure piece. Every layer reads from and writes to it. Build this before any other layer.

Priority zero. All five layers depend on this. Building them without it means painful retrofitting later. Sam owns infra; Senior Quant defines schemas. Target: live in Week 1–2.

Core Schema

TablePurposeWritten byRead by
signalsEvery signal from any source with metadataL1L2, L5
validated_signalsSignals that passed L2 with confluence scoreL2L3
trade_plansConstructed trades: instrument, size, entries, stops, targetsL3L4
ordersEvery order sent to any exchange (all states)L4L4, L5
positionsLive position state synced from exchanges every 5sL4L4, L5, Dashboard
trades_closedCompleted trades with full PnL and attributionL5L1, L5, Dashboard
eventsAppend-only audit log of every system eventAll layersAll layers
portfolio_stateCurrent snapshot: capital, exposure, drawdown, allocationL4L3, L4, Dashboard
vcse_snapshotsDaily PSV(t) computed by ephemeris pipelineVCSE engineL1, L2

Infrastructure Stack

Persistent Storage

PostgreSQL + TimescaleDB

Structured data (trades, orders, positions) in Postgres. TimescaleDB extension for time-series (signals, events, VCSE snapshots) — fast time-range queries without a separate TSDB. Primary data store for all layers.

Real-Time Cache

Redis

Current position state, live risk metrics, active alerts. This is what the dashboard polls every 5 seconds. Also serves as Celery broker for background task queuing. Sub-millisecond reads for live trading.

Task Queue

Celery

Background jobs: signal scoring, PnL calculation, VCSE ephemeris updates, model inference. Decouples heavy computation from API request cycles. Workers can be scaled horizontally.

Event Bus

Python Signals / Redis Pub-Sub

Cross-layer event emission. A validated signal emits signal_validated; L3 listens and builds a trade plan; L4 listens and stages orders. Enables async pipeline without tight coupling.

Event Flow — Full Pipeline Example

VCSE engine computes daily PSV(t)
  → writes to vcse_snapshots table
  → detects inflection window (P_inflection > 0.65)
  → writes to signals table  { source: "vcse", confidence: 0.78, direction: "short" }
  → emits event: "signal_created"

L2 listener picks up "signal_created"
  → scores confluence across all inputs
  → writes to validated_signals  { score: 0.84, recommendation: "high_conviction" }
  → emits event: "signal_validated"

L3 listener picks up "signal_validated"
  → queries portfolio_state (available capital, open exposure)
  → constructs trade plan  { instrument: "perp", exchange: "binance", size: $12k, lev: 3x }
  → writes to trade_plans
  → emits event: "trade_plan_ready"

→ TODAY: Sam reviews on dashboard and approves
→ FUTURE: auto-approve if score > 0.80 and within bankroll limits

L4 OMS sends orders to exchange
  → writes to orders table (status: "pending")
  → monitors fills → updates orders (status: "filled")
  → writes to positions table
  → updates portfolio_state and Redis cache

L5 detects position close event
  → writes to trades_closed with full attribution
  → computes signal source accuracy
  → updates VCSE signal quality score in signals table
  → loop feeds back into L1 confidence calibration
Owner

Sam Infrastructure

Provisions Postgres + TimescaleDB + Redis. Manages server sizing, backups, API keys, secrets management. Defines deployment environment.

Owner

Senior Quant Schema Design

Defines all table schemas, column types, indices. Writes migration scripts. Ensures schemas support all downstream query patterns across all five layers.

03

Viridia Celestial Signal Engine (VCSE)

A quantitative ML framework treating planetary positions as a structured, deterministic feature space. Not a metaphysical system — a correlational and empirical one. Full specification: VCSE Research Paper v0.1, March 2026.

What Is Financial Astrology?

Financial astrology is the practice of correlating planetary cycles with market behaviour. It has been documented in academic and practitioner research for over a century — not as a mystical claim, but as the observation that planetary cycles produce measurable, recurring periodicities that overlap with cycles in human sentiment and economic activity. The mechanism hypothesis is straightforward: markets are driven by collective human psychology, and if planetary cycles correlate with recurring shifts in that psychology, they carry statistical signal regardless of the reason.

The field was formalised in the 20th century by researchers including W.D. Gann, who embedded cycle analysis into his trading methodology, and has since been extended quantitatively by Merriman, Pesavento, and Adkins, who documented statistically significant correlations between specific planetary configurations and commodity price extremes across multi-decade datasets. The VCSE is a modern, ML-native continuation of this lineage — replacing manual interpretation with a calibrated probabilistic model trained on the full history of Bitcoin.

Astrological Concepts — Engineering Primer

For engineers without an astrology background, these are the core structural concepts the system encodes:

Zodiac Signs

The 12-Sign Cycle

The ecliptic (the Sun's apparent path through the sky) is divided into 12 equal 30° sectors, each named after a constellation. Every planet moves through all 12 signs continuously — the Sun completes one full cycle per year, Saturn takes 29.5 years. A planet's sign determines its elemental quality (Fire, Earth, Air, Water) and modality (Cardinal, Fixed, Mutable), which are encoded as categorical features.

Planetary Dignity

Strength Scores

Each planet has signs where it operates at maximum strength (domicile, exaltation) and signs where it is weakened (detriment, fall). Saturn in Capricorn (domicile) is at full strength; Saturn in Cancer (detriment) is at its weakest. These dignity states are encoded as a signed integer score (−2 to +2) and represent historically significant regime transition markers — particularly when slow-moving planets like Saturn or Jupiter change dignity state.

Planetary Ingress

Sign Boundary Crossings

The moment a planet crosses a 30° sign boundary is called an ingress. For outer planets (Saturn, Jupiter, Uranus), ingresses are rare, multi-year events that historically mark macroeconomic regime shifts. For inner planets (Sun, Mercury, Venus, Mars), ingresses occur weekly to monthly and provide shorter-term timing signals. The VCSE treats ingresses as discrete regime transition events and labels them in the training data.

Aspects

Angular Relationships Between Planets

When two planets form specific angular separations as viewed from Earth, they are said to be "in aspect." The primary aspects are conjunction (0° — same position), opposition (180° — directly opposite), trine (120° — harmonious), square (90° — tension), and sextile (60° — mild support). Hard aspects (conjunction, opposition, square) correlate historically with increased volatility and trend reversals. Soft aspects (trine, sextile) correlate with smoother, lower-volatility regimes.

Retrograde Motion

Apparent Backward Movement

Due to the geometry of planetary orbits, planets periodically appear to move backward through the zodiac from Earth's perspective. Mercury goes retrograde roughly three times per year; Saturn and Jupiter retrograde annually for months at a time. Retrograde periods are encoded as binary flags and have historically correlated with increased indecision, reversals, and volatility in speculative markets — particularly Mercury retrograde overlapping with key technical levels.

Applying vs. Separating

Leading vs. Lagging Signal

An aspect is "applying" when two planets are converging toward an exact angle, and "separating" once they have passed exactness and are moving apart. Applying aspects are treated as leading indicators — the energy is building. Separating aspects are treated as lagging — the event has already peaked. This distinction allows the model to differentiate between an incoming inflection and one that has already resolved, which is critical for timing precision.


Core thesis: Markets are driven by human sentiment and collective psychology. Planetary cycles are deterministic, long-period oscillators with well-defined frequencies. The VCSE hypothesis is that these oscillators — particularly the slow outer planets (Saturn, Jupiter, Uranus) whose cycles span years to decades — correlate with recurring shifts in macroeconomic sentiment at a level a machine learning model can identify and exploit. The question is not whether the cosmos moves markets — it is whether the periodicity of planetary cycles correlates with recurring sentiment patterns at a level a model can detect and quantify. That is an empirical question, answered with data.

Why This Edge Is Structurally Defensible

Three properties make planetary data unusual as a feature set and difficult to arbitrage away:

  • Zero look-ahead bias. Planetary positions are computed from orbital mechanics and can be calculated for any future date without reference to price data. There is no data leakage by construction — the feature space is fully separable from the target variable.
  • Long cycle periods. Saturn's 29.5-year orbit means there are only ~1–2 full cycles of Bitcoin data available for training. The signal, if it exists, operates on a timescale that cannot be rapidly discovered and arb'd away by high-frequency participants.
  • Low adoption. Systematic, ML-native financial astrology is a niche practised by a small number of quant funds globally. The signal is not crowded. As the framework matures and expands to multi-asset validation, the edge becomes more defensible, not less.

Why Planetary Data Works as a Feature Set

Unlike price-derived indicators (RSI, moving averages), planetary positions are computed from orbital mechanics and carry zero look-ahead bias — they can be calculated for any future date without reference to price data. This eliminates the feature leakage that plagues most technical indicator models and provides genuine forward-looking predictive power. The feature space is also fully deterministic and reproducible: given the same date, every engineer running the pipeline will compute identical features via the Swiss Ephemeris (pyswisseph), the same VSOP87-based astronomical engine used by professional observatories.


The 10 Planetary Bodies

☉ SunAnnual cycle, macro sentiment backdrop
☽ Moon2.5d sign changes, short-term timing
☿ Mercury88d orbit, retrograde ~3×/year
♀ Venus225d orbit, risk appetite proxy
♂ Mars1.88yr orbit, volatility & aggression
♃ Jupiter11.86yr orbit, expansion & amplification
♄ Saturn29.5yr orbit, top historical signal
⛢ Uranus84yr orbit, regime disruption
♆ Neptune165yr orbit, long-wave background
♇ Pluto248yr orbit, generational cycles

The Planetary State Vector PSV(t)

At any bar, all 10 bodies are encoded as a structured feature vector. The concatenation of all per-planet features plus aspect and aggregate dimensions produces 200+ features total.

PSV(t) = [ f_Sun(t), f_Moon(t), f_Mercury(t), ... , f_Pluto(t), A(t), E(t) ]

where:
  f_p(t)  = per-planet feature sub-vector (sign, dignity, position, speed, retrograde)
  A(t)    = 45-pair aspect matrix (all C(10,2) unique planet pairs)
  E(t)    = elemental & modal aggregate statistics

Per-Planet Feature Set (×10 planets each)

FeatureDescriptionEncoding
sign_idxZodiac sign: 0=Aries … 11=PiscesOHE / embed
dignity_scoreDomicile +2, Exaltation +1, Detriment −1, Fall −2, neutral 0 — measures planetary strengthOrdinal int
deg_in_signDegrees elapsed in current sign (0.0 – 30.0)Continuous
pct_in_signPercent through current sign (0–100)Continuous
days_since_ingressCalendar days since last sign boundary crossingContinuous
is_retrogradePlanet moving retrograde at time t — retrograde often signals reversalsBinary
element_idxFire=0, Earth=1, Air=2, Water=3 — elemental quality of signCategorical
modality_idxCardinal=0 (initiating), Fixed=1 (sustaining), Mutable=2 (transitioning)Categorical
lon_sin / lon_cosCircular encoding of ecliptic longitude — preserves cyclical continuity across 360°Continuous ×2
speed_normDaily angular velocity normalised to planet mean speed — captures acceleration / decelerationContinuous

The Aspect Matrix A(t) — 45 Planetary Pairs

Beyond sign placement, planets form angular relationships that carry independent predictive signals. At every bar, all C(10,2) = 45 unique planet pairs are evaluated for active aspects across 13 aspect types: conjunction (0°), opposition (180°), trine (120°), square (90°), sextile (60°), and 8 minor aspects. Each pair encodes orb, applying/separating direction, and orb-as-percentage-of-max.

Applying vs. separating: An applying aspect — where two planets are converging toward an exact angle — is weighted more heavily than a separating one. Applying aspects represent incoming energy, acting as leading indicators. Separating aspects represent dissipating energy. This distinction is critical for timing accuracy.
FeatureDescriptionDim
aspect_type[i,j]0=none, 1=conjunction, 2=opposition, 3=trine, 4=square, 5=sextile, 6–13=minor aspects45 categorical
orb[i,j]Angular distance from exact aspect in degrees45 continuous
orb_pct[i,j]Orb as fraction of allowed maximum (0–1). Tighter orb = stronger signal45 continuous
applying[i,j]Boolean: planets converging toward exact angle. Weighted more heavily in model45 binary
n_active_aspectsTotal active aspects at time t across all 45 pairs1 count
n_hard / n_softHard (conj/opp/square) vs soft (trine/sextile) counts — hard aspects correlate with volatility2 count
tension_scoreWeighted sum: hard aspects +1, soft aspects −0.5 — net sky tension index1 continuous
jup_sat_angleRaw Jupiter–Saturn separation 0–180°. Historical top predictive signal in BTC backtests1 continuous
saturn_aspect_activeBoolean: Saturn in any active aspect. Saturn aspects consistently flag high-volatility windows1 binary

Ingress Events as Regime Transitions

A planetary ingress — the moment a planet crosses a 30° zodiac boundary — is treated as a discrete regime transition event. Empirically, ingresses by Saturn, Jupiter, and Mars into dignity-relevant signs (domicile or fall) show statistically elevated MFE and MAE in BTC backtests. The PineScript Ingress Indicator already built for this framework provides the full historical dataset of all ingress events with per-transit returns, MFE, MAE, retrograde status, and dignity context — forming the labelled training set for supervised models.

Validated example: Saturn ingressed Capricorn (domicile — maximum dignity) on December 17, 2017. This coincided with the exact BTC all-time high of that cycle. Used as an ephemeris validation checkpoint.

FeatureDescription
ingress_today[p]Binary: planet p ingressed on this bar
ingress_into_dignity[p]Ingress into domicile or exaltation — historically strongest signal events
ingress_into_weakness[p]Ingress into detriment or fall — also historically significant
n_ingresses_7dCount of any-planet ingresses in past 7 days — ingress clustering flags transition zones
slow_planet_ingress_90dBoolean: Saturn/Uranus/Neptune/Pluto ingressed in past 90 days — slow planet ingresses define multi-month regimes
saturn_days_in_signDays Saturn has been in current sign (0 – ~900) — position within its 2.5yr sign transit
moon_sign_idxMoon's current sign — changes every ~2.5 days, adds short-term timing layer

Elemental & Modal Aggregate Features

FeatureDescription
n_fire / n_earth / n_air / n_waterPlanet count in each element at time t — elemental dominance affects market temperament
n_cardinal / n_fixed / n_mutablePlanet count in each modality — cardinal = trend initiation, fixed = trend continuation, mutable = reversals
n_domicile / n_exaltedPlanets in strongest dignity positions — high counts indicate collectively "strong" sky
n_detriment / n_fallPlanets in weakest dignity positions — associated with disruption and volatility
dignity_sumNet celestial strength: sum of all 10 dignity scores. Range: −20 to +20
n_retrogradeTotal planets retrograde simultaneously — high counts historically correlate with confusion / reversal
mutual_receptionPairs where each planet is in the other's domicile sign — mutual support between planets
stellium_sizeLargest cluster of planets sharing one sign — stelliums concentrate energy and are historically significant

Model Architecture — Three Stages

Stage 1 — Interpretability

XGBoost / LightGBM

Tree-based models as the primary interpretability layer. Handles mixed feature types natively, robust to collinearity, produces SHAP values revealing exactly which planetary combinations drive each prediction. Objective: binary:logistic. Class balance via scale_pos_weight (inflection events are ~15% of bars). Regularisation tuned via Bayesian optimisation (Optuna). This is the layer that proves or disproves the hypothesis.

Stage 2 — Sequence Learning

Temporal Transformer

Captures long-range sequential dependencies in planetary cycles — a Saturn ingress 60 days after a Jupiter–Saturn square carries different weight than one in isolation. 60–90 day lookback window. Positional encoding seeded with known cycle periods (Saturn=29.5yr, Jupiter=11.86yr, Mars=1.88yr) rather than learned — embeds domain knowledge directly, reducing training data requirements dramatically.

Stage 3 — Production Output

Ensemble & Calibration

Stacks Stage 1 and Stage 2 using a logistic regression meta-learner trained on out-of-fold predictions. Final probabilities calibrated with isotonic regression — a predicted 70% inflection probability must correspond to an actual 70% historical hit rate. Uncalibrated probabilities cause systematic over/under-betting regardless of model accuracy. Essential for Kelly-based position sizing.


Backtesting: Walk-Forward Validation

Standard k-fold cross-validation violates the temporal structure of financial data. The VCSE uses expanding-window walk-forward validation with a 90-day purging embargo between each training cutoff and test period — preventing leakage through overlapping multi-day return windows (López de Prado, 2018).

FoldTraining PeriodEmbargoTest Period
1Oct 2013 – Dec 201690 daysMar 2017 – Dec 2017
2Oct 2013 – Dec 201790 daysMar 2018 – Dec 2018
3Oct 2013 – Dec 201890 daysMar 2019 – Dec 2019
4Oct 2013 – Dec 201990 daysMar 2020 – Dec 2020
5Oct 2013 – Dec 202090 daysMar 2021 – Dec 2021
6Oct 2013 – Dec 202190 daysMar 2022 – Dec 2022
7Oct 2013 – Dec 202290 daysMar 2023 – Dec 2023
8 (OOS)Oct 2013 – Dec 202390 daysMar 2024 – Present (live)
Non-negotiable: The 90-day purging embargo is a structural requirement, not a configuration option. Any relaxation inflates metrics that will not generalise live. Inflection labels require future bars to confirm — strict purging prevents leakage.

Evaluation Metrics

MetricWhat It Measures
AUC-ROCDiscrimination: model correctly ranks bullish vs bearish bars
Precision-Recall AUCMore informative than ROC for rare events (~15% inflection rate)
Brier ScoreCalibration: how well predicted probabilities match actual frequencies
Matthews Correlation Coeff.Balanced accuracy for binary classifiers under class imbalance
Simulated Sharpe RatioSignal-weighted P&L divided by daily return volatility
Profit FactorGross wins ÷ gross losses — directly comparable to trading edge
Max Drawdown (simulated)Worst peak-to-trough on signal-generated positions across all folds
SHAP Stability IndexConsistency of feature importance rankings across all folds

The Three Signal Outputs

All outputs are calibrated probabilities or continuous scores — not binary buy/sell signals. This supports position-sizing decisions in L3 and bankroll management in L4.

Output 1 — Primary
Inflection Point Probability
P_inflection(t) ∈ [0, 1]

Calibrated probability that bar t falls within a ±N bar window of a local price extreme (reversal or acceleration). Threshold guidance: P > 0.65 = high-conviction inflection window; 0.45–0.65 = moderate; P < 0.45 = trend regime favoured. Strongest signals historically coincide with slow-planet ingresses into dignity-relevant signs + active hard aspects between Jupiter and Saturn.

Output 2 — Directional
Directional Bias Score
B(t) ∈ [−1, +1]

Computed as B(t) = 2 × P(return > 0) − 1, where P is the calibrated probability from the direction classifier. B = +1.0 is maximum bull conviction; B = −1.0 is maximum bear. Can be used directly for exposure scaling: long exposure = max(0, B(t)), short exposure = max(0, −B(t)). Horizon: 3–30 day forward return.

Output 3 — Volatility
Volatility Regime Label
V(t) ∈ {Low, Medium, High}

Three-class label for expected volatility over the next 14 days. Low regime: favour mean-reversion, tighter stops. High regime (typically Saturn/Uranus applying squares, multiple retrogrades, Moon in cardinal signs): favour wider stops, reduced leverage, trend-following over mean reversion. Direct input to L3 trade construction decision tree.

Worked Signal Example

Configuration: Saturn ingresses Aquarius (detriment) · Jupiter applies square to Saturn · 3 planets in fire signs · Moon ingresses Aries (cardinal)

Model outputs: P_inflection = 0.72 (HIGH — window active) · B(t) = −0.41 (bearish, −41% weight) · V(t) = HIGH (elevated volatility)

Interpretation for L3: High probability of a local price extreme forming within 5–10 bars in a bearish direction. Prioritise short setups on technical confirmation. Widen stops and reduce leverage relative to normal sizing. L2 confluence scoring will confirm or attenuate this before trade construction.

Data Pipeline

StageProcessLibrariesOutput
1 IngestPull OHLCV from Kraken / Binance REST APIs. Validate gaps, outliers. Daily primary; hourly secondary for timing precision.ccxt, pandasRaw OHLCV DataFrame
2 EphemerisCompute 10-planet longitudes, speeds, retrograde flags at each timestamp. pyswisseph queried at 00:00 UTC per bar.pyswissephPlanet position array
3 IngressDetect sign changes, compute dignity, days in sign, MFE/MAE per transit.pandas, numpyIngress event table
4 AspectsEvaluate 45 pairs × 13 types: orb, applying/separating, tension score. Vectorised.numpyAspect matrix N×45×4
5 AggregatesElement/modal counts, dignity sum, mutual receptions, stellium detection.pandasAggregate feature columns
6 TargetsForward returns, vol, drawdown, MFE/MAE, inflection labels for every bar.pandas, scipyTarget variable columns
7 StoreMerge all features. Save to Parquet + TimescaleDB for fast indexed queries.pyarrow, sqlalchemyMaster feature store
8 SplitTemporal walk-forward splits with 90-day purging embargo per fold.mlfinlab, sklearnTrain / validation sets

Multi-Asset Expansion Roadmap

The pipeline is asset-agnostic — only the OHLCV source changes. Expanding to additional assets both validates the cross-market hypothesis and dramatically increases statistical power for slow-planet features where BTC history alone provides insufficient cycles.

AssetData fromWhy
ETH/USDJul 2015 – PresentShares BTC market cycle structure. Unique natal chart (Jul 30, 2015). Cross-asset validation.
Gold (XAU/USD)1975 – Present50+ years provides multiple Saturn full cycles — dramatically increases slow-planet statistical power.
S&P 500 (SPX)1950 – PresentValidates that planetary signals are not BTC-specific artifacts but reflect broader market psychology.
Crude Oil (WTI)1983 – PresentCommodity with well-documented sensitivity to Saturn–Jupiter cycles. Strong academic literature support.
DXY (USD Index)1971 – PresentMacro regime indicator. Saturn–Capricorn periods historically correlate with USD strength.
Owner

Sam Hypothesis & Methodology

Sam owns the astro research framework and signal definitions. Defines what constitutes a valid VCSE signal. The research paper is the canonical reference.

Owner

Senior Quant ML Pipeline & Validation

Leads the XGBoost baseline, walk-forward CV, SHAP analysis, Transformer architecture, and ensemble calibration. Directs Engineer 2 on integrating VCSE outputs into L2.

L1

Signal Detection

Three signal sources producing a unified output format. Each fires independently; confluence scoring happens in L2. All signals are written to the signals table on the shared event store.

In Progress

VCSE — Celestial Signal Engine

Primary signal source. Produces P_inflection, B(t), and V(t) daily from the PSV(t) feature vector. Pipeline: ccxt OHLCV → pyswisseph ephemeris → feature assembly → XGBoost/Transformer ensemble → calibrated outputs. Needs: automated daily ephemeris runner that writes to vcse_snapshots and emits signals to the event store.

Partial

Market Scanner

Technical signal source operating independently of VCSE. Currently running in dashboard. Gap: Output must be standardised into the unified signal schema before being written to the event store. Scope to define: is it scanning for technical setups (breakouts, divergences), or market microstructure (funding rates, OI, volume anomalies), or both?

TBD (Engineer 1)

Options & Volatility Engine

Third signal source, owned by Engineer 1. Blocked until Deribit account is active. Will produce: IV surface signals (skew, term structure), vol regime transitions, and premium dislocations. Even pre-Deribit, Deribit's public API can be used for vol data as a signal input to existing perp trades.

Unified Signal Schema

{
  id:          "sig_20260417_vcse_001",
  timestamp:   "2026-04-17T00:00:00Z",
  source:      "vcse" | "scanner" | "vol_engine" | "manual",
  type:        "inflection" | "breakout" | "divergence" | "vol_regime" | "funding_extreme",
  asset:       "BTC" | "ETH" | ...,
  direction:   "long" | "short" | "neutral",
  timeframe:   "4h" | "1d" | "1w",
  confidence:  0.0 – 1.0,         // calibrated probability from model
  metadata: {
    // VCSE: P_inflection, B(t), V(t), active aspects, dignity sum, jup_sat_angle
    // Scanner: pattern type, key levels, volume context
    // Vol: IV percentile, skew, term structure shape
  },
  expires_at:  "2026-04-19T00:00:00Z"  // signals have a validity window
}
Owner

Senior Quant Signal Adapters

Build adapters that take raw VCSE outputs, scanner outputs, and vol engine outputs and write standardised signals to the event store. Define confidence scoring per source type.

Owner

Engineer 1 Vol Engine Signals

Once Deribit is live: IV surface computation, skew analysis, term structure signals. Short-term: build vol signal layer using Deribit public API data even before trading account is active.

L2

Signal Validation & Confluence Scoring

Owned by Engineer 2, directed by Senior Quant. The goal is not noise filtering — it's scoring the strength of agreement across all signal sources so L3 knows how aggressively to size and structure the trade.

Why L2 matters even at low volume: A signal from VCSE alone with P_inflection = 0.70 is interesting. The same VCSE signal combined with a scanner breakout and vol expansion might score 0.88. L2 combines these into a single confluence score that directly drives position sizing in L3. It also checks compatibility: a VCSE bearish signal combined with a bullish scanner setup flags a contradiction worth investigating before committing capital.

Confluence Scoring Model

InputInitial WeightWhat it checks
VCSE inflection probability0.25P_inflection threshold crossed; B(t) direction aligns with proposed trade
VCSE volatility regime0.15V(t) regime compatible with trade structure (expanding for directional, contracting for mean reversion)
Scanner technical signal0.25Breakout, divergence, or setup aligns with direction and timeframe
Volatility / options signal0.15IV expanding or cheap (good for directional); skew supports direction
Funding & sentiment0.10Funding rate extreme, OI structure, liquidation cascade risk
Macro alignment0.10DXY, rates, risk-on/off environment supports trade direction
Note: Initial weights above are Sam's priors based on trading experience. The L5 feedback loop will produce empirical data over time that Senior Quant uses to recalibrate these weights toward actual historical performance per source.

Validated Signal Output Schema

{
  signal_id:         "sig_20260417_vcse_001",
  confluence_score:  0.84,
  recommendation:    "high_conviction",  // high_conviction | standard | reduced | pass
  direction_consensus: "short",          // do sources agree on direction?
  conflict_flag:     false,              // true if sources disagree on direction

  components: {
    vcse_inflection: { score: 0.78, active: true,  note: "P_inflection=0.72, B=-0.41" },
    vcse_vol:        { score: 0.75, active: true,  note: "V=HIGH, tension_score=4.2" },
    scanner:         { score: 0.82, active: true,  note: "4H breakdown below support" },
    vol_signal:      { score: 0.60, active: false, note: "Deribit TBD — using IV proxy" },
    funding:         { score: 0.70, active: true,  note: "Longs overfunded at 0.08%" },
    macro:           { score: 0.65, active: true,  note: "DXY strengthening" }
  },

  sizing_suggestion: "aggressive",       // aggressive | standard | reduced | skip
  trade_structure_hint: "perp_short"     // first-pass instrument suggestion for L3
}

Automation Phases

  • Phase 1 (now): L2 scores run automatically, results displayed on dashboard for Sam to review. Sam approves or rejects before proceeding to L3.
  • Phase 2: Signals scoring above 0.75 auto-advance to L3 for trade plan generation. Sam reviews and approves the trade plan (not the signal).
  • Phase 3: High-conviction signals auto-execute within pre-set bankroll limits. Sam monitors via dashboard with kill switch available.
Owner

Engineer 2 Confluence Engine

Builds and maintains the scoring engine. Implements the weight model, per-source adapters, conflict detection, and the validated_signals write path. Primary technical owner of this layer.

Owner

Senior Quant Orchestration & Calibration

Directs Engineer 2 on architecture and scoring logic. Owns weight calibration using L5 attribution data. Responsible for backtesting the scoring model and validating it doesn't introduce its own leakage.

Owner

Sam Weight Priors & Approval Gates

Defines initial weights based on trading experience. Defines the score thresholds for auto-advance vs manual review. Reviews and approves trade plans that flow from validated signals.

L3

Trade Construction

Given a validated signal, determine how to express the trade: which instrument, which exchange, what structure, what size. Instrument selection is driven by the VCSE V(t) regime, B(t) directional score, and available instruments per exchange.

Available Instruments

InstrumentExchangeUse CaseStatusOwner
Perpetual futuresBingX, Binance, KrakenDirectional with leverage, delta-1 exposure, primary vehicleLiveSam
SpotKraken, BinanceBasis trades (spot + short perp), lower-risk directionalAvailableSam
OptionsDeribitVol trades, hedging, defined-risk directional, premium sellingTBDEngineer 1
Basis / cash-and-carrySpot + PerpMarket-neutral funding rate captureCan buildSenior Quant

Trade Structure Decision Tree

validated_signal arrives { direction, confluence_score, V(t), B(t) }
│
├─ HIGH CONVICTION DIRECTIONAL  (score > 0.80, |B(t)| > 0.6)
│  ├─ V(t) = HIGH   → Perp (leveraged, 3–5x) + OTM option hedge (when Deribit live)
│  ├─ V(t) = MEDIUM → Perp (moderate leverage, 2–3x) + defined stops
│  └─ V(t) = LOW    → Perp (conservative, 1–2x) or spot directional
│
├─ STANDARD CONVICTION  (score 0.65–0.80)
│  ├─ Directional   → Perp (reduced leverage), tighter sizing from bankroll module
│  └─ Neutral       → Wait for stronger confluence or vol trade when Deribit live
│
├─ VOL PLAY  (V(t) signal strong, |B(t)| < 0.3)
│  ├─ Vol cheap (IV low percentile) → Long straddle / long gamma  [Deribit]
│  ├─ Vol rich (IV high percentile) → Short premium / iron condor  [Deribit]
│  └─ Skew dislocated              → Risk reversal / collar       [Deribit]
│
└─ FUNDING / BASIS PLAY  (funding rate extreme flag from L2)
   ├─ Funding positive extreme → Long spot + short perp (earn funding)
   └─ Funding negative extreme → Short spot + long perp (earn funding)

Position Sizing — Bankroll Integration

Before constructing the trade, L3 queries portfolio_state. No trade plan is generated unless bankroll rules are satisfied.

  • Available capital: Total equity minus margin already deployed across all exchanges
  • Risk budget: Max loss per trade defined as % of equity (e.g., 1.5%). Stop distance from entry determines size.
  • Concentration check: No single position may exceed the concentration limit
  • Correlation check: Existing BTC long + new ETH long = correlated exposure, treated as additive for sizing
  • Confluence scaling: Size scales with confluence score — a 0.90 signal gets full allocation; 0.65 gets 50%

Trade Plan Output Schema

{
  signal_id:     "sig_20260417_vcse_001",
  plan_id:       "plan_20260417_001",
  created_at:    "2026-04-17T08:15:00Z",
  instrument:    "perp",
  exchange:      "binance",
  asset:         "BTC",
  direction:     "short",
  leverage:      3.0,
  size_usd:      12000,
  entry_zone:    { low: 83500, high: 84200 },
  stop_loss:     85800,
  targets:       [
    { price: 79500, exit_pct: 50, note: "first target" },
    { price: 76000, exit_pct: 50, note: "full exit / VCSE window close" }
  ],
  risk_reward:   "1:2.6",
  max_loss_usd:  600,
  max_loss_pct:  1.5,
  confluence:    0.84,
  sizing_basis:  "confluence_scaled",
  expires_at:    "2026-04-19T00:00:00Z",
  status:        "pending_approval"   // → approved → executing → active
}
Owner

Senior Quant Decision Tree Logic

Builds the instrument selection logic and sizing formulas. Backtests different structure choices against historical signal data. Owns the interaction with the bankroll module.

Owner

Engineer 1 Options Construction

Once Deribit is live: options strategy selection (straddle, collar, risk reversal), strike/expiry selection logic, and options-specific sizing (premium budget, delta target). Interfaces with vol engine outputs.

Owner

Sam Rule Definitions

Defines the bankroll parameters (max risk per trade, max portfolio heat, leverage limits) that L3 queries. Approves trade plans via dashboard before L4 executes.

L4

Trade Management

Three sub-systems: Order Management (OMS), active trade management, and bankroll management. Sam owns OMS infrastructure; Senior Quant owns the bankroll model.

4A — Order Management System (OMS)

Build

Unified Order Router

Single Python/Node layer abstracting BingX, Binance, Kraken (and Deribit via Engineer 1). Accepts a trade plan from L3, translates to exchange-specific params via ccxt, sends, monitors fills, handles retries. Every order written to the orders table at every state transition.

Build

Order Type Support

Market, limit, stop-market, stop-limit, trailing stop, scaled entries (split entry across price range), bracket orders (entry + stop + TP as one unit). TWAP for larger orders. WebSocket fill monitoring for sub-second state updates across all exchanges.

4B — Active Trade Management

  • Trailing stop adjustment: ATR-based or structure-based stop movement as price moves in favour
  • Partial exits: Automated execution of TP levels from the trade plan at defined percentages
  • Dynamic hedge adjustment: If vol spikes while position is open, adjust option hedge notional (when Deribit live)
  • Signal degradation monitor: If VCSE inflection window closes while trade is open (P_inflection drops below threshold), tighten management rules automatically
  • Time-based rules: If position hasn't moved toward target within N hours, apply tighter stop to avoid capital drag
  • Exchange circuit breaker: If exchange API goes down, monitor-only mode with dashboard alert

4C — Bankroll Management

The governor on everything. No trade plan executes unless the bankroll module approves it. This is the risk officer between "good idea" and "capital deployed." All parameters are defined by Sam and enforced automatically.
RuleParameterDefault
Max risk per trade% of total equity1.5% (Sam to confirm)
Max portfolio heatTotal % of equity at risk simultaneously6% across all positions (Sam to confirm)
Max portfolio leverageAggregate weighted effective leverage≤ 5x (Sam to confirm)
Max concentrationSingle position as % of capital25% (Sam to confirm)
Drawdown circuit breaker% from equity peak10% → halt new trades 24h (Sam to confirm)
Correlation limitPairwise correlation thresholdIf two positions correlation > 0.85, size as one
Confluence scalingSize multiplier by scoreScore 0.90+ = 100%, 0.75 = 70%, 0.65 = 50%
Win streak scalingModified Kelly adjustmentScale up after edge confirmed, scale down after losses
Owner

Sam OMS Infrastructure

Builds and maintains the unified order router. Manages exchange API keys, rate limit handling, geo-routing (Binance US restrictions), WebSocket connections. Monitors OMS health via dashboard.

Owner

Senior Quant Bankroll Model

Implements Kelly / fractional sizing formula. Backtests against Sam's trade history to find optimal parameters. Builds the drawdown circuit breaker. Updates model parameters from L5 attribution data.

Owner

Engineer 1 Options Execution

Deribit-specific order management: options order types, delta-hedge rebalancing, expiry management, exercise handling. Interfaces with the unified OMS router but owns Deribit-specific logic.

Owner

Sam Risk Parameter Definitions

Defines all bankroll parameters above. These are Sam's rules — the system enforces them. Reviewed monthly using L5 attribution data and adjusted as fund AUM grows.

L5

Trade Closing & PnL Capture

Closes positions, captures full PnL with fee and funding accounting, attributes performance to signal sources, and feeds results back into L1 and L2 to continuously improve signal quality and confluence weights.

Exit Triggers

TriggerDescriptionAction
Target hitPrice reaches TP level from trade planPartial or full exit per defined %
Stop-loss hitStop triggered by exchangeFull exit, log as loss with MFE recorded
Trailing stopDynamic stop triggered after favourable moveFull exit, capture profit vs original target
VCSE window closeP_inflection drops below 0.45 while trade is openTighten management; close if marginal P&L
Signal expiryTrade plan expires_at timestamp reachedAlert Sam; close if no new signal confirmation
Time decay rulePosition open beyond max hold time with no movementReduce or close to free capital
Manual overrideSam closes via dashboardImmediate close, flag as manual in attribution
Circuit breakerPortfolio drawdown limit hitClose all positions or reduce to target heat

PnL Attribution Schema

{
  trade_id:       "trade_20260417_001",
  signal_id:      "sig_20260417_vcse_001",
  plan_id:        "plan_20260417_001",

  // Execution data
  entry_price:    84050,
  avg_exit_price: 79800,
  size_usd:       12000,
  leverage:       3.0,
  exchange:       "binance",
  instrument:     "perp",
  direction:      "short",

  // Returns
  gross_pnl:      1530.00,
  exchange_fees:  -52.40,
  funding_paid:   -18.20,
  net_pnl:        1459.40,
  return_pct:     12.16,
  risk_adjusted:  2.43,      // net_pnl / max_adverse_excursion

  // Trade quality metrics
  hold_time_hrs:   31,
  max_favorable:   5.8,      // % max move in favour during trade
  max_adverse:    -1.4,      // % max drawdown during trade
  exit_reason:    "target_1_hit",
  entry_vs_plan:  "within_zone",

  // Attribution feedback
  confluence_at_entry: 0.84,
  vcse_p_inflection:   0.72,
  vcse_direction_correct: true,
  vcse_vol_correct:       true,
  scanner_correct:        true,
  signal_source_scores: {
    vcse:    { accurate: true,  contribution_est: 0.45 },
    scanner: { accurate: true,  contribution_est: 0.35 },
    funding: { accurate: true,  contribution_est: 0.20 }
  }
}

The Feedback Loop → L1 & L2

This is the highest long-term value component of the system. Every closed trade creates data that improves signal detection and confluence weighting:

  • VCSE signal accuracy tracking: "When P_inflection > 0.70, what % of trades captured the predicted inflection?" Over hundreds of trades, this calibrates or recalibrates the model's threshold guidance.
  • Per-source win rate: Track win rate and avg risk-adjusted return per source. L2 weights update empirically toward actual performance.
  • Regime analysis: Which V(t) regime produces the best results? Which confluence score band? Refines L2 sizing suggestions.
  • Confluence threshold optimisation: What minimum score produces positive expectancy? Adjust the auto-advance threshold in L2 accordingly.
  • VCSE planetary feature importance: Closed trade outcomes feed back into the SHAP analysis, validating whether jup_sat_angle and saturn ingress features remain the top signals over time.
Owner

Senior Quant PnL Engine & Attribution

Builds the full PnL computation (gross, fees, funding), attribution model, and feedback loop. Monthly performance reports aggregating signal source accuracy and confluence effectiveness.

Owner

Sam Fund Reporting Layer

Uses attribution data for investor updates and LP reporting. "Our astro-technical confluence model: X% hit rate, Y Sharpe, Z max drawdown." PnL attribution is the quantitative narrative for fundraising.

TS

Full Tech Stack

Built on the existing dashboard (React + Python + Node hybrid). Node serves the API/WebSocket layer to the frontend; Python handles all quantitative work, exchange connectivity, and ML.

ComponentLanguageLibraries / ToolsNotes
Frontend dashboardReact (TS)Recharts / lightweight-charts, WebSocket, TailwindCSS, Radix UILive — extends with new panels per layer
API / WebSocket serverNode.jsExpress or Fastify, ws, Redis pub-sub consumerREST + WebSocket serving the React frontend
VCSE signal enginePythonpyswisseph, pandas, numpy, XGBoost, LightGBM, PyTorch (Transformer)Core of the system. Runs as daily Celery job
Market scannerPythonccxt, TA-Lib, pandasTechnical analysis scanning + signal standardisation
Options / vol enginePythonQuantLib or py_vollib, scipy, numpyEngineer 1 — blocked until Deribit live
L2 Confluence enginePythonnumpy, sklearn (future ML scoring)Engineer 2 — rule engine + scoring model
L3 Trade constructorPythonCustom rule engine, ccxt (exchange instrument info)Decision tree + sizing formulas
OMS / order routerPythonccxt (unified exchange API), asyncio, WebSocket clientsBingX + Binance + Kraken + Deribit (Eng-1)
DatabasePostgreSQL + TimescaleDB extensionStructured + time-series. All layers read/write.
Real-time cacheRedisPosition state, live metrics, dashboard feed
Task queuePythonCelery + Redis brokerBackground jobs: VCSE daily run, PnL calc, scoring
ML interpretabilityPythonSHAP TreeExplainer, Optuna (hyperparameter search)VCSE model validation and feature importance
Feature storePythonApache Parquet (pyarrow), SQLite secondaryMaster VCSE feature DataFrame persisted to disk
Backtesting validationPythonmlfinlab (purged CV), sklearn, scipyWalk-forward with 90-day embargo
RM

Build Roadmap

Five phases. Each phase produces a usable, integrated system that improves on the last. Do not start a phase until its dependencies are live.

Phase 1 — Weeks 1–3

Data Backbone + Signal Standardisation

Deliverables: Postgres + TimescaleDB deployed. Redis configured. Event bus wired. VCSE ephemeris runner automated (daily Celery job → vcse_snapshots). Market scanner output writing standardised signals to event store. Kraken fully integrated for position data.

Owners: Sam infra · Senior Quant schemas

Result: Every signal and every position flows through one system. Dashboard reads from it.

Phase 2 — Weeks 3–6

Confluence Scoring + Trade Plans

Deliverables: L2 confluence scoring engine live (Engineer 2). L3 trade plan generator (instrument selection, sizing, entries/stops/targets). Bankroll rules enforced. Trade plans visible on dashboard for Sam to approve.

Owners: Engineer 2 L2 · Senior Quant L3 · Sam review

Result: System says "here's the trade, here's why, here's the size." Sam approves or rejects.

Phase 3 — Weeks 6–10

OMS + Active Management

Deliverables: Unified OMS across BingX, Binance, Kraken. Approved plans execute via API. Trailing stops, partial exits, time-based rules automated. Sam approves plan; system executes and manages.

Owners: Sam OMS · Engineer 1 Deribit (when live)

Result: You approve the plan. The system executes and manages. You monitor on dashboard.

Phase 4 — Weeks 10–12

PnL Attribution + Feedback Loop

Deliverables: Full PnL engine (fee + funding accounting). Signal attribution by source. Feedback loop updating L2 weights. Monthly performance reports. VCSE signal accuracy validated against live trades.

Owners: Senior Quant attribution model · Sam investor reporting

Result: Every trade improves the next. Investor-grade reporting. VCSE hypothesis validated or refined empirically.

Phase 5 — Weeks 12+

Full Automation + Options

Deliverables: High-confluence signals auto-execute within bankroll limits. Manual override always available. Options strategies live on Deribit (Engineer 1). ML-based L2 weight optimisation. VCSE Transformer stage in production.

Owners: All · Engineer 1 options · Sam system oversight

Result: The system trades. You manage the system. Sam shifts from operator to portfolio director.

Critical path: The data backbone (Phase 1) blocks everything. Do not start L2, L3, or L4 coding until Postgres + TimescaleDB schemas are finalised and the event bus is wired. Senior Quant should own schema definition as the first deliverable of Week 1.