This document is confidential and covered by NDA. Enter the access code to continue.
Five-layer system specification covering the VCSE signal engine, governed signal routing and validation, trade construction, portfolio risk and order management, and PnL attribution. V0.6 reconciles the live Linear board, the Figma strategy universe, current implementation evidence, and the expanded four-role engineering model. Internal use only — NDA required.
The team now operates as four complementary workstreams. Sam concentrates on VCSE and system direction; Engineer 2 builds the L1–L3 contract chain; Engineer 1 and Senior Quant carry the options and volatility programme; Senior Quant also provides quantitative review across layer PRs and development cycles.
| Component | Primary Owner | Supporting | Status |
|---|---|---|---|
| VCSE research, training & productionisation | Sam | Senior Quant | In Progress |
| L1 data backbone, evidence & signal routing | Engineer 2 | Sam · Senior Quant | 66% |
| L2 signal validation & confluence | Engineer 2 | Senior Quant · Sam | 25% |
| L3 trade construction & lifecycle intent | Engineer 2 | Sam · Senior Quant | 16% |
| Options engine & volatility anomaly detection | Engineer 1 | Senior Quant | Active build |
| Options research, calibration & strategy validation | Senior Quant | Engineer 1 | Active |
| Cross-layer PR and development-cycle review | Senior Quant | All engineers | Ongoing |
| L4 portfolio risk, OMS & position management | Sam | Engineer 2 · Engineer 1 | 2% · Shadow only |
| L5 PnL attribution & calibration feedback | Senior Quant | Engineer 2 · Sam | 0% · Groundwork |
One system, five persistent ownership layers. The layers are stable architectural boundaries—not calendar phases—and can advance concurrently when their versioned contracts are explicit. Evidence flows from detection through validation and non-executing trade intent into risk/OMS, with outcomes returning through attribution and governed calibration.
execution_authorized=false. Dashboard approval is not venue authority.
| Component | Status | Notes |
|---|---|---|
| Dashboard (React frontend) | Live | Dark theme, admin routes, 5s polling, risk aggregator |
| BingX + Binance APIs | Live | Position feeds, partial execution, real-time data |
| VCSE Research Paper | Complete | v0.1 Architecture Draft — April 2026 |
| Jupiter–Saturn PineScript Indicator | Built | v3.0 with 20 aspects, retrograde, projection |
| Planet Ingress PineScript Indicator | Built | MFE/MAE stats per transit |
| Live risk aggregator | Live | Leverage, liquidation distance, VaR, VCSE overlay |
| VCSE ML pipeline | In Progress | Sam-led development; baseline validation, calibrated outputs, training evidence, and production producer path remain active |
| Market scanner | Operational | Scanner evidence and standardised routing are operational; source freshness and lineage remain governed L1 concerns |
| L1 data backbone + detection | 66% | Scanner evidence, durable L1→L2 handoff, retention, and non-execution controls operational; VCSE/options/volatility producer paths and migration reconciliation remain |
| L2 Confluence scoring engine | 25% | l2.validation.v3 is the current shadow contract; canonical v4 production emission is not merged or enabled |
| L3 Trade construction | 16% | Canonical evidence, MarketSnapshot, and concrete-candidate work are in stacked PRs #18–#20; persistence, replay, receipts, and lifecycle memory remain incomplete |
| L4 portfolio risk + OMS | 2% | Read-only portfolio risk and non-executing shadow management are merged; no live order creation, amendment, or cancellation is authorized |
| Bankroll management model | Build | Kelly / fractional sizing |
| Options pricing, vol engine & surface anomaly detection | Active build | Engineer 1 builds public Deribit ingestion, IV/skew/term-structure signals, anomalies, and options lifecycle; Senior Quant researches, calibrates, validates, and reviews |
| Deribit integration | TBD | Account setup pending |
| L5 PnL attribution | 0% | Outcome/calibration groundwork exists; authoritative PnL, complete attribution, and governed feedback are not production-ready |
The Figma board’s 102-strategy universe is a consumer map for the layer architecture, not a mandate to turn every strategy into a VCSE objective. The canonical boundary is: VCSE emits calibrated evidence; L2 validates agreement; L3 chooses an expression; L4 alone owns venue and portfolio authority.
Consume P_inflection(t), B(t), and V(t) directly. These are the nearest-term VCSE research and validation families.
Require standard scanner/event-store evidence and L2 confluence before L3 may compile a candidate trade plan.
Originate outside VCSE. VCSE may gate or contextualize them, while signal routing preserves the producing source and provenance.
Flow through Engineer 1 and Senior Quant’s options/volatility programme and depend on trustworthy Deribit surfaces, Greeks, liquidity, and later execution infrastructure.
Likelihood of a local price extreme, reversal, or acceleration window.
Directional evidence, equivalent to 2 × P(return > 0) − 1.
Expected volatility regime. Position size, stops, and structures are downstream L3/L4 decisions—not raw VCSE outputs.
The system is now tracked as a single Linear migration project with supporting technical subprojects. This section maps the hosted spec to the operational project board and the workstreams that matter for implementation.
| Project / Workstream | System Role | Current Status | Canonical Tracker |
|---|---|---|---|
| Viridia Automated Trading Pipeline | Main build roadmap and migration board | Active | Linear project |
| System Spec v0.6 | Current readable architecture mirror, reconciled to the persistent-layer model, current implementation evidence, team ownership, and Figma strategy/output map | Current | Linear project |
| Layer Library | Canonical layer definitions, contracts, acceptance gates, and current-state documents | Current | Linear index |
| Layer Data Contracts and Pipeline Notes | Event flow, schema contracts, scoring thresholds, lifecycle boundaries, and bankroll defaults | Current | Linear doc |
| Hosted System Spec | Readable public/static copy of the architecture | Mirror | GitHub repo |
| Dashboard | Risk aggregation, monitoring, review workflow and health visibility | Live + expanding | Layer 1 / Layer 2 Linear issues |
| VCSE Research + ML Pipeline | Planetary feature generation, XGBoost baseline, calibration, feature QA, daily snapshot emission, and future Transformer stage | In Progress | VCSE and Research issues |
| Exchange Integration Stack | BingX, Binance, Kraken and future Deribit connectivity | Partial | Exchange Integration issues |
| Options / Volatility Engine | Deribit IV surface, skew, term structure, volatility surface anomaly detection, L1 vol signals, options construction and future execution | Active build | Cross-layer options and volatility issues |
| Linear Area | Issues | Purpose |
|---|---|---|
| VIR-5 / Layer 1 | 66% | Operational scanner evidence and durable L1→L2 handoff; active VCSE/options/volatility producers and migration-history reconciliation |
| VIR-6 / Layer 2 | 25% | Engineer 2 builds normalization, explainable scoring, conflict handling, validated_signals, and v4 emission with Senior Quant direction |
| VIR-7 / Layer 3 | 16% | Candidate plans, proposed risk, lifecycle intent, persistence, replay, watch runner, and L4 acceptance receipts—always non-executing |
| VIR-8 / Layer 4 | 2% | Authoritative portfolio/risk boundary; current code remains read-only or shadow-only while OMS safety, reconciliation, and governance are specified |
| VIR-9 / Layer 5 | 0% | Authoritative PnL, immutable outcomes, attribution, sample-size discipline, and review-governed feedback remain future production work |
| VIR-20 / 21 / 22 / 53 / 54 / 55 | L2 active set | Confluence engine, v3→v4 write path, conflicts, normalization, deterministic fixtures, and explainable reason codes |
| VIR-97 / 99 / 102 / 103 | L3 active set | Open-thesis watch loop, governed persistence, domain agreement and deterministic exits, and L3→L4 semantic receipts |
| VIR-40 and options track | Options / vol | Engineer 1 implementation with Senior Quant research, calibration, options-strategy guidance, and review |
The durable evidence and transport foundation shared by all layers. Its contracts allow work to proceed concurrently while preserving provenance, freshness, replay, and non-execution controls.
| Table | Purpose | Written by | Read by |
|---|---|---|---|
market_data | Exchange market data and candles used for signals and backtests | Exchange adapters | L1, VCSE, L5 |
signals | Every signal from any source with metadata | L1 | L2, L5 |
validated_signals | Signals that passed L2 with confluence score | L2 | L3 |
trade_plans | Constructed trades: instrument, size, entries, stops, targets | L3 | L4 |
orders | Every order sent to any exchange (all states) | L4 | L4, L5 |
positions | Live position state synced from exchanges every 5s | L4 | L4, L5, Dashboard |
pnl_attribution | Completed trades with full PnL, fees, funding and source attribution | L5 | L1, L2, L5, Dashboard |
system_logs | Append-only audit log of every system event | All layers | All layers |
portfolio_state | Current snapshot: capital, exposure, drawdown, allocation | L4 | L3, L4, Dashboard |
vcse_snapshots | Daily PSV(t) computed by ephemeris pipeline | VCSE engine | L1, L2 |
vol_surface_snapshots | Deribit public IV surface, skew, term structure, anomaly scores, and data-quality flags | Vol Engine / surface anomaly detector | L1, L2, L3 |
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.
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.
Background jobs: signal scoring, PnL calculation, VCSE ephemeris updates, model inference. Decouples heavy computation from API request cycles. Workers can be scaled horizontally.
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.
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 pnl_attribution with full attribution
→ computes signal source accuracy
→ updates VCSE signal quality score in signals table
→ loop feeds back into L1 confidence calibration
Provisions Postgres + TimescaleDB + Redis. Manages server sizing, backups, API keys, secrets management. Defines deployment environment.
Defines all table schemas, column types, indices. Writes migration scripts. Ensures schemas support all downstream query patterns across all five layers.
A quantitative ML framework treating planetary positions as a structured, deterministic feature space. Not a metaphysical system — a correlational and empirical one. In v0.6, VCSE is Sam’s primary development focus: model evidence, calibrated outputs, repeatable training, and a governed L1 producer path are the active priorities.
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.
For engineers without an astrology background, these are the core structural concepts the system encodes:
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.
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.
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.
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.
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.
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.
Three properties make planetary data unusual as a feature set and difficult to arbitrage away:
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.
| Area | Current State | V0.6 Focus |
|---|---|---|
| Research basis | VCSE paper complete and treated as the canonical methodology reference | Keep methodology stable while engineering turns it into repeatable L1 outputs |
| Feature pipeline | Planetary state vector, ingress events, aspects, retrograde flags, and aggregate features specified | Harden batch generation, feature completeness checks, and reproducible Parquet/Timescale writes |
| Model layer | XGBoost / LightGBM baseline underway; Transformer remains a later stage | Prioritise interpretable baseline, walk-forward validation, SHAP reports, and calibration before sequence-model expansion |
| L1 integration | VCSE outputs are defined but need automated daily emission | Write vcse_snapshots, emit unified signals, and expose freshness/model diagnostics in dashboard health |
| Ownership | Sam leads VCSE development; Senior Quant provides quantitative review; Engineer 2 owns the L1 integration boundary | Keep VCSE model work distinct from the options/volatility programme while preserving shared contracts into L2 |
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
| Feature | Description | Encoding |
|---|---|---|
sign_idx | Zodiac sign: 0=Aries … 11=Pisces | OHE / embed |
dignity_score | Domicile +2, Exaltation +1, Detriment −1, Fall −2, neutral 0 — measures planetary strength | Ordinal int |
deg_in_sign | Degrees elapsed in current sign (0.0 – 30.0) | Continuous |
pct_in_sign | Percent through current sign (0–100) | Continuous |
days_since_ingress | Calendar days since last sign boundary crossing | Continuous |
is_retrograde | Planet moving retrograde at time t — retrograde often signals reversals | Binary |
element_idx | Fire=0, Earth=1, Air=2, Water=3 — elemental quality of sign | Categorical |
modality_idx | Cardinal=0 (initiating), Fixed=1 (sustaining), Mutable=2 (transitioning) | Categorical |
lon_sin / lon_cos | Circular encoding of ecliptic longitude — preserves cyclical continuity across 360° | Continuous ×2 |
speed_norm | Daily angular velocity normalised to planet mean speed — captures acceleration / deceleration | Continuous |
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.
| Feature | Description | Dim |
|---|---|---|
aspect_type[i,j] | 0=none, 1=conjunction, 2=opposition, 3=trine, 4=square, 5=sextile, 6–13=minor aspects | 45 categorical |
orb[i,j] | Angular distance from exact aspect in degrees | 45 continuous |
orb_pct[i,j] | Orb as fraction of allowed maximum (0–1). Tighter orb = stronger signal | 45 continuous |
applying[i,j] | Boolean: planets converging toward exact angle. Weighted more heavily in model | 45 binary |
n_active_aspects | Total active aspects at time t across all 45 pairs | 1 count |
n_hard / n_soft | Hard (conj/opp/square) vs soft (trine/sextile) counts — hard aspects correlate with volatility | 2 count |
tension_score | Weighted sum: hard aspects +1, soft aspects −0.5 — net sky tension index | 1 continuous |
jup_sat_angle | Raw Jupiter–Saturn separation 0–180°. Historical top predictive signal in BTC backtests | 1 continuous |
saturn_aspect_active | Boolean: Saturn in any active aspect. Saturn aspects consistently flag high-volatility windows | 1 binary |
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.
| Feature | Description |
|---|---|
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_7d | Count of any-planet ingresses in past 7 days — ingress clustering flags transition zones |
slow_planet_ingress_90d | Boolean: Saturn/Uranus/Neptune/Pluto ingressed in past 90 days — slow planet ingresses define multi-month regimes |
saturn_days_in_sign | Days Saturn has been in current sign (0 – ~900) — position within its 2.5yr sign transit |
moon_sign_idx | Moon's current sign — changes every ~2.5 days, adds short-term timing layer |
| Feature | Description |
|---|---|
n_fire / n_earth / n_air / n_water | Planet count in each element at time t — elemental dominance affects market temperament |
n_cardinal / n_fixed / n_mutable | Planet count in each modality — cardinal = trend initiation, fixed = trend continuation, mutable = reversals |
n_domicile / n_exalted | Planets in strongest dignity positions — high counts indicate collectively "strong" sky |
n_detriment / n_fall | Planets in weakest dignity positions — associated with disruption and volatility |
dignity_sum | Net celestial strength: sum of all 10 dignity scores. Range: −20 to +20 |
n_retrograde | Total planets retrograde simultaneously — high counts historically correlate with confusion / reversal |
mutual_reception | Pairs where each planet is in the other's domicile sign — mutual support between planets |
stellium_size | Largest cluster of planets sharing one sign — stelliums concentrate energy and are historically significant |
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.
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.
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.
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).
| Fold | Training Period | Embargo | Test Period |
|---|---|---|---|
| 1 | Oct 2013 – Dec 2016 | 90 days | Mar 2017 – Dec 2017 |
| 2 | Oct 2013 – Dec 2017 | 90 days | Mar 2018 – Dec 2018 |
| 3 | Oct 2013 – Dec 2018 | 90 days | Mar 2019 – Dec 2019 |
| 4 | Oct 2013 – Dec 2019 | 90 days | Mar 2020 – Dec 2020 |
| 5 | Oct 2013 – Dec 2020 | 90 days | Mar 2021 – Dec 2021 |
| 6 | Oct 2013 – Dec 2021 | 90 days | Mar 2022 – Dec 2022 |
| 7 | Oct 2013 – Dec 2022 | 90 days | Mar 2023 – Dec 2023 |
| 8 (OOS) | Oct 2013 – Dec 2023 | 90 days | Mar 2024 – Present (live) |
| Metric | What It Measures |
|---|---|
| AUC-ROC | Discrimination: model correctly ranks bullish vs bearish bars |
| Precision-Recall AUC | More informative than ROC for rare events (~15% inflection rate) |
| Brier Score | Calibration: how well predicted probabilities match actual frequencies |
| Matthews Correlation Coeff. | Balanced accuracy for binary classifiers under class imbalance |
| Simulated Sharpe Ratio | Signal-weighted P&L divided by daily return volatility |
| Profit Factor | Gross wins ÷ gross losses — directly comparable to trading edge |
| Max Drawdown (simulated) | Worst peak-to-trough on signal-generated positions across all folds |
| SHAP Stability Index | Consistency of feature importance rankings across all folds |
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.
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.
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.
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.
| Stage | Process | Libraries | Output |
|---|---|---|---|
| 1 Ingest | Pull OHLCV from Kraken / Binance REST APIs. Validate gaps, outliers. Daily primary; hourly secondary for timing precision. | ccxt, pandas | Raw OHLCV DataFrame |
| 2 Ephemeris | Compute 10-planet longitudes, speeds, retrograde flags at each timestamp. pyswisseph queried at 00:00 UTC per bar. | pyswisseph | Planet position array |
| 3 Ingress | Detect sign changes, compute dignity, days in sign, MFE/MAE per transit. | pandas, numpy | Ingress event table |
| 4 Aspects | Evaluate 45 pairs × 13 types: orb, applying/separating, tension score. Vectorised. | numpy | Aspect matrix N×45×4 |
| 5 Aggregates | Element/modal counts, dignity sum, mutual receptions, stellium detection. | pandas | Aggregate feature columns |
| 6 Targets | Forward returns, vol, drawdown, MFE/MAE, inflection labels for every bar. | pandas, scipy | Target variable columns |
| 7 Store | Merge all features. Save to Parquet + TimescaleDB for fast indexed queries. | pyarrow, sqlalchemy | Master feature store |
| 8 Split | Temporal walk-forward splits with 90-day purging embargo per fold. | mlfinlab, sklearn | Train / validation sets |
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.
| Asset | Data from | Why |
|---|---|---|
| ETH/USD | Jul 2015 – Present | Shares BTC market cycle structure. Unique natal chart (Jul 30, 2015). Cross-asset validation. |
| Gold (XAU/USD) | 1975 – Present | 50+ years provides multiple Saturn full cycles — dramatically increases slow-planet statistical power. |
| S&P 500 (SPX) | 1950 – Present | Validates that planetary signals are not BTC-specific artifacts but reflect broader market psychology. |
| Crude Oil (WTI) | 1983 – Present | Commodity with well-documented sensitivity to Saturn–Jupiter cycles. Strong academic literature support. |
| DXY (USD Index) | 1971 – Present | Macro regime indicator. Saturn–Capricorn periods historically correlate with USD strength. |
Sam owns the astro research framework and signal definitions. Defines what constitutes a valid VCSE signal and how the signal should be interpreted in trading context. The research paper remains the canonical reference.
Reviews the XGBoost baseline, walk-forward CV, leakage controls, SHAP analysis, and calibration evidence while Sam remains the primary VCSE developer.
Connects governed VCSE snapshots and signals to the durable L1 evidence path, with explicit schema versions, freshness, lineage, retries, and L2 handoff behavior.
Four governed producer families emit versioned evidence into a unified L1 contract. Engineer 2 owns the routing, validation-ready envelopes, operational checks, and durable handoff; Sam owns VCSE development; Engineer 1 and Senior Quant own the options/volatility producer programme.
execution_authorized=false before downstream use.
Sam’s primary development focus. 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: reproducible validation evidence and an operational producer that writes vcse_snapshots and governed signals; Engineer 2 owns the L1 integration boundary and Senior Quant reviews calibration and model evidence.
Technical signal source operating independently of VCSE. Its standardised evidence path is operational. Engineer 2 maintains routing, provenance, freshness, and rejection behavior while Sam owns scanner intent and dashboard use. Scope covers technical setups and reliable microstructure inputs without collapsing source-specific evidence.
Third signal source, implemented by Engineer 1 with Senior Quant owning signal design and calibration. Trading is blocked until Deribit account access is active, but L1 development is not blocked: Deribit's public API should feed IV surface snapshots, skew, term structure, vol regime transitions, and premium dislocation signals for use with existing perp trades.
New L1 component built by Engineer 1 and supported by Senior Quant. Detects abnormal IV surface moves, skew kinks, term-structure inversions, expiry-local dislocations, and stale/erroneous surface prints. Outputs anomaly signals for L2 scoring and feeds the Vol Engine with surface-quality flags before any options trade construction depends on the data.
| Task | Owner | Output |
|---|---|---|
| VCSE research, training, and producer hardening | Sam · Senior Quant | Reproducible model evidence, calibrated outputs, stored vcse_snapshots, freshness and diagnostics |
| Signal routing, lineage, failure contracts, and L2 handoff | Engineer 2 | Versioned L1 envelopes, durable writes, retries, quality/freshness flags, and governed emission |
| Scanner evidence and acceptance checks | Engineer 2 · Sam | Operational scanner rows preserved with producer provenance and explicit rejection/suppression evidence |
| Public-data Vol Engine adapter | Engineer 1 · Senior Quant | Deribit public IV, skew, term-structure, and vol-regime signals written to L1 schema |
| Volatility surface anomaly detection engine | Engineer 1 · Senior Quant | Surface anomaly detector emitting abnormal skew, tenor, IV percentile, and data-quality signals for L2 confluence |
| L1 signal confidence calibration | Senior Quant | Per-source confidence rules documented and compatible with L2 confluence scoring |
{
id: "sig_20260417_vcse_001",
timestamp: "2026-04-17T00:00:00Z",
source: "vcse" | "scanner" | "vol_engine" | "surface_anomaly" | "manual",
type: "inflection" | "breakout" | "divergence" | "vol_regime" | "surface_anomaly" | "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, premium dislocation
// Surface anomaly: anomaly score, expiry bucket, strike band, data quality flag
},
expires_at: "2026-04-19T00:00:00Z" // signals have a validity window
}
Develops VCSE and defines scanner/strategy intent, thresholds, and operator-facing review needs.
Builds and maintains governed ingestion, signal envelopes, durable transport, lineage, freshness, rejection behavior, and L2-ready outputs.
Engineer 1 implements surfaces, anomalies, and options adapters; Senior Quant defines the quantitative tests, calibration, and cross-layer review criteria.
Engineer 2 owns implementation of the L2 validation path, with Senior Quant directing normalization, calibration, deterministic fixtures, and quantitative review. L2 converts L1 evidence into explainable, provenance-complete decisions; it does not authorize execution.
l2.validation.v3 is the shadow contract. The canonical v4 production emission is not merged or enabled. Active work covers normalization, explainable scoring, conflicts, reason codes, validated_signals persistence, and a fail-closed handoff to L3.
| Input | Initial Weight | What it checks |
|---|---|---|
| VCSE inflection probability | 0.22 | P_inflection threshold crossed; B(t) direction aligns with proposed trade |
| VCSE volatility regime | 0.13 | V(t) regime compatible with trade structure (expanding for directional, contracting for mean reversion) |
| Scanner technical signal | 0.22 | Breakout, divergence, or setup aligns with direction and timeframe |
| Volatility / options signal | 0.13 | IV expanding or cheap (good for directional); skew supports direction |
| Volatility surface anomaly | 0.10 | Surface dislocation, skew kink, term-structure inversion, or stale surface print is actionable and data-quality checked |
| Funding & sentiment | 0.10 | Funding rate extreme, OI structure, liquidation cascade risk |
| Macro alignment | 0.10 | DXY, rates, risk-on/off environment supports trade direction |
{
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: true, note: "Deribit public IV proxy active" },
surface_anomaly: { score: 0.68, active: true, note: "Skew kink in front expiry; quality flag clean" },
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
}
Builds normalization, confluence scoring, conflict handling, reason codes, deterministic fixtures, validated_signals persistence, and the versioned L2→L3 handoff.
Defines source comparability, calibration tests, scoring evidence, and leakage safeguards; reviews L2 PRs and development cycles before contract promotion.
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.
Engineer 2 owns the non-executing L3 compiler: convert governed L2 evidence into a typed candidate plan, proposed risk, and lifecycle intent. Sam supplies strategy and bankroll policy; Senior Quant reviews quantitative construction; Engineer 1 and Senior Quant own options-specific structures.
execution_authorized=false; Layer 4 may accept, reject, quarantine, or mark it stale.
| Instrument | Exchange | Use Case | Status | Owner |
|---|---|---|---|---|
| Perpetual futures | BingX, Binance, Kraken | Directional with leverage, delta-1 exposure, primary vehicle | Live | Sam |
| Spot | Kraken, Binance | Basis trades (spot + short perp), lower-risk directional | Available | Sam |
| Options | Deribit | Vol trades, hedging, defined-risk directional, premium selling | TBD | Engineer 1 |
| Basis / cash-and-carry | Spot + Perp | Market-neutral funding rate capture | Can build | Senior Quant |
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)
Before constructing the trade, L3 queries portfolio_state. No trade plan is generated unless bankroll rules are satisfied.
{
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_review",
execution_authorized: false, // invariant across every current L3 path
policy_version: "l3.policy.v1"
}
Builds typed candidate-plan compilation, evidence binding, proposed sizing, persistence, replay, open-thesis refresh, semantic exit recommendations, and L4 acceptance receipts.
Reviews strategy-selection logic, sizing assumptions, options structures, and lifecycle evidence across L3 PRs without moving portfolio authority out of L4.
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.
Defines the bankroll parameters (max risk per trade, max portfolio heat, leverage limits) that L3 queries. Approves trade plans via dashboard before L4 executes.
Layer 4 owns authoritative portfolio and position state, risk arbitration, OMS behavior, venue interaction, reconciliation, and receipts. Current implementation is read-only or shadow-only. Sam owns the system boundary; Engineer 2 supports contracts and safety workflows; Engineer 1 contributes options/Deribit specifics.
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. Sam owns the core OMS; Engineer 1 supports order-routing implementation, adapter edge cases, and Deribit routing. Every order is written to the orders table at every state transition.
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.
| Rule | Parameter | Default |
|---|---|---|
| Max risk per trade | % of total equity | 1.5% (Sam to confirm) |
| Max portfolio heat | Total % of equity at risk simultaneously | 6% across all positions (Sam to confirm) |
| Max portfolio leverage | Aggregate weighted effective leverage | ≤ 5x (Sam to confirm) |
| Max concentration | Single position as % of capital | 25% (Sam to confirm) |
| Drawdown circuit breaker | % from equity peak | 10% → halt new trades 24h (Sam to confirm) |
| Correlation limit | Pairwise correlation threshold | If two positions correlation > 0.85, size as one |
| Confluence scaling | Size multiplier by score | Score 0.90+ = 100%, 0.75 = 70%, 0.65 = 50% |
| Win streak scaling | Modified Kelly adjustment | Scale up after edge confirmed, scale down after losses |
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.
Supports L4 routing implementation, exchange adapter behavior, retry/idempotency handling, order-state edge cases, and Deribit routing integration under Sam's OMS ownership.
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.
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.
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.
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.
| Trigger | Description | Action |
|---|---|---|
| Target hit | Price reaches TP level from trade plan | Partial or full exit per defined % |
| Stop-loss hit | Stop triggered by exchange | Full exit, log as loss with MFE recorded |
| Trailing stop | Dynamic stop triggered after favourable move | Full exit, capture profit vs original target |
| VCSE window close | P_inflection drops below 0.45 while trade is open | Tighten management; close if marginal P&L |
| Signal expiry | Trade plan expires_at timestamp reached | Alert Sam; close if no new signal confirmation |
| Time decay rule | Position open beyond max hold time with no movement | Reduce or close to free capital |
| Manual override | Sam closes via dashboard | Immediate close, flag as manual in attribution |
| Circuit breaker | Portfolio drawdown limit hit | Close all positions or reduce to target heat |
{
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 }
}
}
This is the highest long-term value component of the system. Every closed trade creates data that improves signal detection and confluence weighting:
Builds the full PnL computation (gross, fees, funding), attribution model, and feedback loop. Monthly performance reports aggregating signal source accuracy and confluence effectiveness.
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.
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.
| Component | Language | Libraries / Tools | Notes |
|---|---|---|---|
| Frontend dashboard | React (TS) | Recharts / lightweight-charts, WebSocket, TailwindCSS, Radix UI | Live — extends with new panels per layer |
| API / WebSocket server | Node.js | Express or Fastify, ws, Redis pub-sub consumer | REST + WebSocket serving the React frontend |
| VCSE signal engine | Python | pyswisseph, pandas, numpy, XGBoost, LightGBM, PyTorch (Transformer) | Core of the system. Runs as daily Celery job |
| Market scanner | Python | ccxt, TA-Lib, pandas | Technical analysis scanning + signal standardisation |
| Options / vol engine | Python | QuantLib or py_vollib, scipy, numpy, Deribit public API | Engineer 1 implementation; Senior Quant owns L1 Vol Engine architecture and calibration |
| Volatility surface anomaly detector | Python | scipy, numpy, pandas, robust z-scores, surface smoothing | Engineer 1 builds; Senior Quant supports anomaly definitions, thresholds, and calibration |
| L2 Confluence engine | Python | numpy, sklearn (future ML scoring) | Engineer 2 implementation; Senior Quant calibration and PR review |
| L3 Trade constructor | Python | Custom rule engine, governed evidence contracts | Engineer 2 builds non-executing plans and lifecycle intent; Senior Quant reviews construction logic |
| OMS / order router | Python | ccxt (unified exchange API), asyncio, WebSocket clients | Sam owns core OMS; Engineer 1 supports L4 order routing and Deribit-specific routing |
| Database | — | PostgreSQL + TimescaleDB extension | Structured + time-series. All layers read/write. |
| Real-time cache | — | Redis | Position state, live metrics, dashboard feed |
| Task queue | Python | Celery + Redis broker | Background jobs: VCSE daily run, PnL calc, scoring |
| ML interpretability | Python | SHAP TreeExplainer, Optuna (hyperparameter search) | VCSE model validation and feature importance |
| Feature store | Python | Apache Parquet (pyarrow), SQLite secondary | Master VCSE feature DataFrame persisted to disk |
| Backtesting validation | Python | mlfinlab (purged CV), sklearn, scipy | Walk-forward with 90-day embargo |
Five persistent layers tracked in Linear. These are ownership and contract boundaries, not sequential calendar phases. Work may proceed concurrently against stable, versioned contracts; readiness is earned through each layer’s acceptance gate.
Operational: scanner evidence, retention, durable L1→L2 handoff, and non-execution controls.
Next: operational VCSE, options, and volatility producers; recover missing migration history; close freshness, provenance, quality, and replay evidence.
Owners: Engineer 2 layer engineering · Sam VCSE · Engineer 1 options/vol build · Senior Quant calibration/review
Gate: typed sources, durable evidence, migration parity, and fail-closed non-execution enforcement.
Current: l2.validation.v3 shadow contract, active confluence, normalization, conflicts, fixtures, reason codes, and persistence work.
Next: merge and evidence canonical v4 emission with deterministic replay and provenance-complete output.
Owners: Engineer 2 implementation · Senior Quant direction and PR review · Sam priors and review policy
Gate: deterministic, explainable, fail-closed validation with freshness, conflicts, and reason codes.
Current: canonical-evidence, MarketSnapshot, and concrete-candidate work in stacked PRs #18–#20.
Next: governed persistence, restart-safe lifecycle memory, watch runner, receipts, semantic alignment, and deterministic replay.
Owners: Engineer 2 implementation · Sam strategy/risk rules · Senior Quant construction review · Engineer 1 options structures
Gate: typed, replayable candidate plans and lifecycle intent with no source guessing and no venue authority.
Current: read-only portfolio risk and non-executing shadow position management are merged.
Next: authoritative reconciliation, adapter contracts, paper/sandbox harness, idempotent receipts, kill switches, and execution-governance policy.
Owners: Sam authority and OMS · Engineer 2 contracts/safety · Engineer 1 Deribit specifics
Gate: paper proof and explicit governance before any live order mutation is considered.
Current: outcome and calibration groundwork only; authoritative PnL and complete attribution are not production-ready.
Next: immutable outcomes, fee/funding reconciliation, source and strategy attribution, reporting evidence, and sample-size-governed recommendations.
Owners: Senior Quant attribution/calibration · Engineer 2 feedback pipeline · Sam reporting and approval
Gate: reproducible PnL, versioned attribution, and review-only feedback until separately approved.