01 — Philosophy

Why we publish everything

Most "AI investing" is a black box: you see a call, never the logic, and never the full record — winners are screenshotted, losers quietly disappear.

Alphixir is built on the opposite premise. If a model knows something, it should be provable. So we show the logic, publish every decision, seal it before the market opens, and let the track record speak — wins and losses alike. Nothing is back-filled, cherry-picked, or rewritten after the fact.

That is the whole point of this page. The engine is deterministic: given the same inputs, it produces the same decisions, every time. Below are the actual factors, weights, thresholds and formulas it runs on. Where a number is a fixed parameter, we show the number.

The dividing line

The quantitative engine — regime score, allocation, sizing, scoring — is code. It is fully determined by the factors below. A language model contributes only two things: a per-stock direction and conviction, and a small, tightly capped qualitative overlay on the regime score. Everything else is arithmetic you can reproduce.

02 — Market regime

The regime engine

Every morning the engine reduces the market backdrop to one continuous score from −100 (risk-off) to +100 (risk-on). It is a weighted sum of independent factors, each individually clamped so no single input can dominate. There are no knife-edge binary triggers — everything is continuous.

The factors

Each factor contributes a bounded number of points. Weights and clamps are fixed parameters (deduced from the factor's role, not tuned to fit past returns).

FactorReadsContributionClamp
VIXImplied volatility (close)(19.5 − VIX) × 3.5±50
Fear & GreedCNN index, 0–100(F&G − 50) × 0.5±25
Yield curve10Y − 2Y spread(10Y − 2Y) × 30±15
S&P 500 (daily)Day's % changereturn% × 3±15
MA200 deviation% vs 200-day averagedeviation% × 0.5±10
Market breadth(adv − dec) / (adv + dec)ratio × 10±10
Asia overnightPrev-day avg of US-listed Asia ETFs (EWJ / EWY / EWT / MCHI)avg% × 2±6
High-volume selloffDistribution-day flag−5 when triggered−5

VIX is centred at 19.5 (defensive vs. the 2024–2026 median). Fear & Greed is weighted at half of VIX's scale to avoid double-counting the same volatility signal. MA200 deviation is one-sided in spirit — it rides winners rather than treating strength as a sell signal.

# regime score — a bounded weighted sum
score = clamp( Σ factor , −100, +100 )

Hysteresis — no label flicker

The continuous score drives everything internally; the label (Risk-On / Neutral / Risk-Off) is for display and uses asymmetric entry/exit thresholds plus a minimum hold, so a single noisy day cannot whipsaw the regime.

Minimum hold = 2 trading days. Even when a switch condition is met, the current label must have held for at least two sessions before it can flip. Between the enter and exit thresholds the previous label persists (the inertia band).

From score to cash level

The regime score sets how much of each persona's book is actually invested. A logistic (sigmoid) curve maps score to an invested percentage between the persona's own floor and ceiling — smooth, never a step change.

invested% = lo + (hi − lo) × sigmoid( score / 40 )
where sigmoid(x) = 1 / (1 + e^−x)

# lo / hi are per-persona (see §04). Daily change is further
# limited to a persona-specific slew step (%p per day).

The language-model overlay — deliberately small

A language model may nudge the quantitative score for context the factors can't see (e.g. a policy surprise). That nudge is hard-capped at ±10 points — the quant engine cannot be overruled. This cap stays in place until 6–12 months of live, forward results validate the overlay.

adjusted = clamp( quant_score + clamp( overlay, −10, +10 ), −100, +100 )
03 — Selection & sizing

Choosing stocks and sizing positions

The regime sets the risk budget; selection and sizing decide what fills it. A language model supplies only step 1 — a direction and a conviction per stock. Everything after that is deterministic code.

  1. Direction & conviction. For each name, the model reads overnight news and the prior close and outputs a direction (up / down / neutral) and a raw confidence. This catalyst-driven layer is the newest part of the system and is actively being refined and backtested — treat it as evolving.
  2. Candidate filter. Keep names with direction = up and confidence ≥ 0.55 (exit threshold 0.50, a small hysteresis). The Sector-Champion persona only considers each sector's market-cap leader.
  3. Calibrate confidence. Raw model confidence is tempered by temperature scaling (T = 1.3) to curb overconfidence, until enough live hits accrue to switch to empirical bucket-mapping.
  4. Risk-adjust. Raw size is conf_cal / downside_vol. Only downside volatility is penalised — upside variance is left alone so winners keep running.
  5. ½-Kelly ceiling. Each name is capped at max(0, conf_cal − 0.5) — a half-Kelly fraction under symmetric-payoff assumptions.
  6. Normalise + water-fill cap. Weights are normalised within the sleeve, then each is capped at min(single-cap, ½-Kelly). Overflow is redistributed to names that still have room; if every name is capped, the remainder simply becomes cash.
  7. Scale & hold. Weights are scaled to the sleeve target, and a 2%p no-trade band suppresses churn on tiny changes.
# downside volatility (semi-deviation, MAR = 0)
downside_vol = sqrt( mean( min(r, 0)² ) ) × sqrt(252) # floored at 5%

# raw position score, then ½-Kelly ceiling
raw = conf_cal / downside_vol
cap = min( single_cap[persona], max(0, conf_cal − 0.5) )

Above the individual stocks, each persona holds an anchor allocation (equity / gold / cash) that tilts with the regime inside fixed bands — so defense shows up as more cash and gold, not just smaller positions. Gold (GLD) is the only ETF sleeve; cash simply earns 0%.

04 — The personas

Same market, different answers

Four personas run the exact same engine on the exact same data. They diverge only in fixed, personality-deduced parameters — how much they'll invest, how concentrated they get, how fast they react, and how hard they tilt to defense. These are constants of character, not knobs tuned to past returns.

Invested range = floor / ceiling of the sigmoid (§02). Single-cap = maximum weight in any one stock. Slew = maximum change in invested % per day (reaction speed). Equity / gold anchor = the baseline allocation before the regime tilt.

05 — Proof

Sealed, scored, chain-linked

A track record only means something if it can't be edited after the fact. Alphixir runs a three-stage daily pipeline, and every day's picks are cryptographically sealed before the US open.

The daily pipeline (US Eastern)
~06:00 ET
Seal — picks committed
The AI reads overnight news and the prior close, decides its virtual positions, and publishes the full reasoning. The picks are hashed and sealed before the open — nothing can be added or altered after this point.
09:30 ET
Open — entry basis fixed
The opening price becomes each position's entry basis (entry_open) and is recorded once. It is never recomputed later, which is what prevents retroactive reconstruction.
16:00 ET
Close — scoring
Each position is scored on its open-to-close return; the persona's day is the weight-blended sum. Uninvested cash earns 0%.

The seal (tamper-evident chain)

Each run computes a SHA-256 seal over that morning's picks, then chains it to the previous day's seal. Change any past pick and every later hash breaks — so the whole history is append-only and publicly checkable, no account needed.

contentHash = sha256( canonical(picks) )
chainHash   = sha256( contentHash | prevChainHash | date | session | sealedAt )
# genesis (first-ever) prevChainHash = 000…0 (64 zeros)

Scoring & the track record

Scoring is intentionally plain: a session return is just the move from the recorded open to the close. There is no real money, so there are no cash flows to distort the numbers — the cumulative figure is a clean time-weighted return (TWR).

return% = (close − open) / open × 100
daily_portfolio% = Σ ( return × weight ) # cash earns 0%
TWR = Π ( 1 + daily_portfolio ) − 1 # chain-linked across days

Direction hits are judged the same way: an "up" call is correct when the return is positive, "down" when negative, "neutral" when the move stays within ±0.5%. Only percentage results are ever shown — never raw prices.

06 — Honesty

Limits & versioning

Transparency includes being clear about what this is not, and about how young the live record is.

  • No real money. Every portfolio is virtual. Nothing here is a real trade, and none of it is redeemable.
  • Not investment advice. No recommendation, no solicitation, no personalised guidance for your portfolio.
  • Past ≠ future. Past virtual performance does not indicate future results.
  • Small sample, early days. The live record is sealed from day one — so it is honest — but early figures reflect a small sample and will stabilise only as more sealed sessions accrue.
Versioning

This methodology evolves as we validate it against forward, out-of-sample results. Parameters here are pre-registered — deduced from each persona's character and fixed in advance, not grid-searched to flatter past returns. Material changes get a new version number and date, so you can always see what rules were in force on any given day. Current: Methodology v1 · Engine v2.1 · July 2026.