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 is the actual structure it runs on — every factor, every rule, every formula, and every result. A small set of exact coefficients and thresholds stays in-house so the engine can't be trivially cloned, and we flag those wherever they apply; everything you need to verify the record — the picks, the reasoning, the scoring rules, and the outcomes — is public.

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 deterministic arithmetic — the same inputs always produce the same output, with no black box in between.

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. The exact weights and clamps are fixed, pre-registered parameters — calibrated on ~20 years of data and deduced from each factor's role, not grid-searched to flatter past returns. We publish what each factor reads, which way it pushes, and its relative importance; the precise coefficients are the one part we keep in-house.

FactorReadsEffect on the scoreWeight
VIXImplied volatility (close)Low volatility pushes risk-on; spikes push risk-offHigh
Fear & GreedCNN index, 0–100Greed adds, fear subtracts — capped low to avoid double-counting VIXMed
Yield curve10Y − 2Y spreadA normal / steepening curve is expansion-friendly, addsMed
S&P 500 (daily)Day's % changeSmall same-direction momentum tiltLow–Med
MA200 deviation% vs 200-day averageAbove trend adds — one-sided, it rides winnersLow
Market breadth(adv − dec) / (adv + dec)Broad participation adds, narrow leadership subtractsLow–Med
Asia overnightSame-day session avg where available (IEX live snapshot at seal time), falling back to the prior completed session per-ticker when no fresh premarket print exists — US-listed Asia ETFs (EWJ / EWY / EWT / MCHI). (Effective 2026-07-14)Overnight risk backdrop, small tiltLow
High-volume selloffDistribution-day flagFixed penalty when triggeredPenalty

VIX is centred defensively — below the recent-cycle median, so a calm tape has to earn its risk-on reading. Fear & Greed is deliberately weighted well below VIX 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.

There is also a minimum hold. Even when a switch condition is met, the current label must persist for a short minimum run of sessions before it can flip. The exact enter/exit thresholds and hold length are fixed but kept in-house; the principle is what matters — entering a regime takes a stronger signal than staying in it, and between the two 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 / k )
where sigmoid(x) = 1 / (1 + e^−x); k is a fixed calibrated slope

# 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 above a fixed confidence threshold. The Sector-Champion persona holds a small basket of each sector's strongest names (up to three), overweighting on good news and trimming hard on bad, within a cash band.
  3. Calibrate confidence. Raw model confidence is tempered by temperature scaling to curb overconfidence, until enough live hits accrue to switch to empirical bucket-mapping.
  4. Risk-adjust. Raw size scales with calibrated confidence over downside volatility only — upside variance is left alone so winners keep running.
  5. ½-Kelly ceiling. Each name is capped at a half-Kelly fraction under symmetric-payoff assumptions — deliberately half of the growth-optimal bet, to trade a little return for a lot less drawdown.
  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 small no-trade band suppresses churn on tiny day-to-day changes.

Entry gates: persona books admit candidates at raw confidence ≥ 0.55, while the Sector Champion basket screens at calibrated confidence ≥ 0.55. The two scales are intentionally distinct — a 2026-07-13 20-year backtest showed unifying either direction degrades one strategy beyond our pre-registered harm limits (see ALGO log).

# downside volatility (semi-deviation, MAR = 0), annualised & floored
downside_vol = sqrt( mean( min(r, 0)² ) ) × sqrt(252)

# raw position score, then ½-Kelly ceiling (exact offsets kept in-house)
raw = conf_cal / downside_vol
cap = min( single_cap[persona], half_kelly( conf_cal ) )

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; uninvested cash accrues the short-term risk-free rate (the 1-month T-bill), not zero.

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.

Exposure = how much of the book it deploys (the sigmoid floor/ceiling, §02). Concentration = how large any single position can get. Reaction speed = how fast it shifts exposure day-to-day. Defensive buffer = how hard it leans to cash and gold when the regime turns. The exact per-persona values are fixed but kept in-house — the personas' results are public, their dials are not.

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
The held book is marked to the close. A day's return combines two legs — the overnight move of yesterday's positions (their close→open, dividends included) and today's positions intraday (open→close). Everything is anchored at the first entry open. Uninvested cash accrues the 1-month T-bill rate (daily = rate ÷ 252); a day with no positions is recorded flat.

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

Every position is bought at the open and held, so the track record is anchored at that first entry open — there is no "previous close" to start from. Day one is open→close; from then on the book is marked forward through each close, so the overnight moves of the positions we actually hold are part of the cumulative. 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).

r_day = ( 1 + r_overnight ) × ( 1 + r_intraday ) − 1 # day one: r_overnight = 0
r_overnight = Σ ( wᵢ,ₚᵣₑᵥ × [ (openᵢ + divᵢ) / closeᵢ,ₚᵣₑᵥ − 1 ] ) # yesterday's weights
r_intraday   = Σ ( wᵢ × [ (closeᵢ − openᵢ) / openᵢ ] ) + cash% × (t_bill ÷ 252) # today's weights
TWR = Π ( 1 + r_day ) − 1 # chain-linked across days

The benchmark (S&P 500) is anchored the same way — its first tracked day is open→close, then total return close to close — so the cumulative comparison starts from the same point. The daily "vs S&P" shown in each report is a separate, session-only lens: our picks' open→close versus the index's open→close. It reflects that trading day and deliberately excludes the overnight (which belongs to yesterday's book and lives in the cumulative), so the daily session figure will not add up to the cumulative — by design. Direction hits: "up" is correct when the return is positive, "down" when negative, "neutral" 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. v2 (July 2026) corrects scoring to the held-book model: a day's return now includes the overnight of the positions we actually hold, anchored at the first entry open — v1 scored open-to-close only. Every sealed pick is unchanged; only the yardstick was fixed. Current: Methodology v2 · Engine v2.2 · July 2026.