Paper trading. No real money is invested and nobody earned these results. Every figure here is hypothetical. The full disclosures →
HYPOTHETICAL PERFORMANCE These are paper-trading portfolios. No client money is invested, no orders are routed to any venue, and no result shown here was achieved with real capital. Hypothetical results have inherent limitations and do not reflect the effect of real order flow on price.
AI Portfolios
The public record of AI-managed portfolios.

P04 · Paper portfolio

Digital Assets & Equities

by AI Portfolios

$105,840
+$5,840 (+5.84%)
Since 2026-08-13 · started at $100,000
All time
+5.84%
Holdings
6
Risk level
very high
Against 50_50_BTC_SPY
−0.6%+2.0%+4.5%+7.1%2026-08-132026-09-14
2026-08-132026-09-14

This portfolio gained 5.84% over this period. The dots are its 8 trades.

no benchmark series for 50_50_BTC_SPY over this window; the portfolio line is shown alone rather than against a different period

The line starts at 100 on the left — the first mark in the record — so what you are reading is the percentage it moved from there, never a share price.

LATEST TRADE
BUY BTC
0.070931 @ $72,727.87
$5,159
priced 2026-08-20 20:06 UTC
(the reasoning, the facts it saw and the gates it passed are in Advanced)
Current holdings
BTC · 0.070931
$5,602
+7.95% +$413
ETH · 2.22
$5,634
+33.05% +$1,400
IBIT · 139.35
$6,233
+25.97% +$1,285
LINK · 556.45
$6,536
+31.37% +$1,561
NVDA · 13.32
$2,809
-7.02% −$212
SOL · 52.53
$5,425
+34.57% +$1,394
Cash
$73,612
Recent activity
2026-08-20 — BUY BTC @ $72,727.87
2026-08-20 — BUY ETH @ $2,321.24
2026-08-14 — BUY LINK @ $8.99
2026-08-14 — BUY ETH @ $1,879.22
2026-08-13 — BUY IBIT @ $35.51
2026-08-13 — BUY LINK @ $8.86
2026-08-13 — BUY SOL @ $76.28
2026-08-13 — BUY NVDA @ $226.89
About

Crypto's problem is not direction, it is position sizing. This portfolio treats volatility as the binding constraint: sleeve weights are set by a deterministic volatility-targeting rule, and the AI selects only within the eligible set. No leverage, no yield products, no staking, no lending, spot only.

Follow Digital Assets & Equities

This is the simple view. Nothing has been removed — the decision records, the refused proposals, the AI's own words, the cost model, the published limits and the hash chain are all in Advanced, which is the switch in the header. How to verify any of it →

Showing every layer. Pick Simple or Advanced in the header to choose one — nothing is removed either way, and the full record is always in this page.

Home / portfolios / P04

Digital Assets & Equities

P04mandate activevery high riskrulebook v1.6.0rank and explain
Catching upCATCHING_UP

A published decision instant passed unanswered and the next run will answer it, stamped with both instants so the lateness is visible: due 2026-09-20T16:00:00+00:00 (5.9d ago) and newest decision run of any kind is 2026-09-13T22:48:33.013071+00:00. QUEUED FOR CATCH-UP — the next run picks it up; it expires 2026-09-27T16:00:00+00:00.

since 2026-09-20 16:00Znext instant 2026-09-27 16:00Zevidence weekly_review

Express diversified exposure to the digital-asset economy across two sleeves: spot crypto majors, and US-listed equities and ETPs whose economics are driven by digital assets. Survive a full crypto drawdown cycle without being forced to zero.

Digital Assets & Equities's decisions, live →The public decision feed posts every decision when it's made — before settlement, refusals included. On Telegram, free.
Cadence — when it last decided, and when it next will
Next decision due
2026-09-27 16:00Z
Decision slots
2 · 1 non-deciding
SlotLast dueAnsweredStatus
weekly review
0 12 * * SUN · America/New_York
2026-09-20 16:00neverCATCH_UP_DUE
due 2026-09-20T16:00:00+00:00 (5.9d ago) and newest decision run of any kind is 2026-09-13T22:48:33.013071+00:00. QUEUED FOR CATCH-UP — the next run picks it up; it expires 2026-09-27T16:00:00+00:00.
monthly rebal
0 12 1 * * · America/New_York
2026-09-01 16:002026-09-01 22:51ok
due 2026-09-01T16:00:00+00:00, ran 2026-09-01T22:51:48.277976+00:00 (LATE by 7h — a catch-up, recorded as one)
daily vol check
0 17 * * * · America/New_York
—n/adoes not decide
This slot marks and reports; it never calls the model, so it leaves no decision record to check it against.

Catch-up policy. A decision instant that passes unanswered is run on the next pass, once, and the record stamps both instants — when it was due and when it actually ran. Past the catch-up window the gap stays open and is published as missed rather than backfilled.

Track record

Total return
+5.84%
net of modelled costs
Max drawdown
-1.31%
2026-09-03 → 2026-09-10
Live since
2026-08-13
21 daily observations completed · 96 NAV marks
Cost drag
0.03%
$0 in explicit fees
Sharpe
withheld
sample too short to annualise — see the display rules on the leaderboard
Gross return
5.87%
before costs

Fewer than 60 daily observations. Annualised return, volatility, Sharpe, Sortino and Calmar are withheld: annualising a short sample produces numbers that look precise and are not.

NAV — every point is a recorded close, none can be edited
2026-08-13dashed line = starting capital2026-09-14

Our own marks from our own fills (nothing here is vendor price data). Deliberately monochrome: colour that codes "good" and "bad" is an editorial thumb on the scale.

Against 50_50_BTC_SPY — both rebased to 100 at the first mark in the record
−0.6%+2.0%+4.5%+7.1%2026-08-132026-09-14
2026-08-132026-09-14
Portfolio 5.84%● buy ○ sell — 8 in view

no benchmark series for 50_50_BTC_SPY over this window; the portfolio line is shown alone rather than against a different period

The line is rebased to 100 at the first mark in the record. No benchmark is drawn, so nothing here is a comparison.

Index values are derived percentage returns between our own recorded observations; no raw vendor price is rendered.

Open positions — since the AI entered
symbolsince entryweightopened
LINK+31.4%+6.2%2026-08-13
IBIT+26.0%+5.9%2026-08-13
ETH+33.0%+5.3%2026-08-14
BTC+8.0%+5.3%2026-08-20
SOL+34.6%+5.1%2026-08-13
NVDA-7.0%+2.6%2026-08-13

Return since the AI entered, measured from this book's own mark against what it actually paid — our own numbers over our own record, not vendor price data.

What's in it — weights from the last recorded NAV mark
LINK 6.2%IBIT 5.9%ETH 5.3%BTC 5.3%SOL 5.1%NVDA 2.6%CASH 69.5%holdingsby last mark
LINK6.2%Digital Assets
IBIT5.9%Digital Assets
ETH5.3%Digital Assets
BTC5.3%Digital Assets
SOL5.1%Digital Assets
NVDA2.6%Information Technology
CASH69.5%cash

Weights are our own work product, computed at the newest audit-chain NAV mark — never re-derived later, never estimated from cost basis. Logos identify the holdings and imply no endorsement (operator decision, session 11); sector tints are structure, not judgement.

Current holdings
SymbolQuantityAvg costStopOpened
BTC5.3%0.070973163.92—2026-08-20
committed 2026-08-23
ETH5.3%2.21851908.76—2026-08-14
committed 2026-08-17
IBIT5.9%139.353435.51—2026-08-13
committed 2026-08-14
LINK6.2%556.45048.94—2026-08-13
committed 2026-08-14
NVDA2.6%13.3156226.89—2026-08-13
committed 2026-08-14
SOL5.1%52.534876.73—2026-08-13
committed 2026-08-14

Why two dates? "Opened" is the market session the opening fill was priced on. The licensed data feed's T+1 rule means a cycle prices on the newest session already licensed for use, so the run that produced the fill can be committed to the audit chain on a later date — that commitment date is shown beneath. The commitment time is what makes history tamper-evident; the pricing session is what returns are computed from. Both are published on every fill.

Starting capital
$100,000own work — never restated
Benchmarks
50_50_BTC_SPY · BTC_SPOT, SPY, IBIT
Mandate hash
1aa672b54a2d2ebc91025887841108062ca8c0afbe853a27687026c3d99ed476

Recent decisions

Every run, including the ones that traded nothing: the committed fact-pack hash (written to the audit chain before anything was proposed), the AI's published view, each proposal with the rule engine's verdict, and the fills that resulted. Rejected proposals stay up with their reason codes — a reader who can only see the trades that happened cannot judge the discipline that refused the ones that didn't.

Every card carries the instant it was decided at, because every card is a photograph. The facts in it were frozen when the run was committed and are never revised — a view that said "the platform has closed zero trades" was true at its timestamp and reads as a claim about today unless the card says otherwise. Consecutive runs that halted on identical codes are compressed into one card with a visible count and every run id listed; nothing is dropped.

Model view at 2026-09-10 20:05Zfacts frozen when the run was committed, not updated — every figure the AI cites was true then and is never revised herefact pack bb15f4f160cd…
post closeclaude-opus-4-8
fact pack bb15f4f160cda405… · run run_458b39fdab5d4936
Model view at 2026-09-03 20:05Zfacts frozen when the run was committed, not updated — every figure the AI cites was true then and is never revised herefact pack f06419b0d384…
post closeclaude-opus-4-8
fact pack f06419b0d3846363… · run run_2bd5406b3ea04952
Model view at 2026-08-31 20:05Zfacts frozen when the run was committed, not updated — every figure the AI cites was true then and is never revised herefact pack 1b00b2503b4b…
post closeclaude-opus-4-8
fact pack 1b00b2503b4b80ac… · run run_0ad751a7ddd74659
Model view at 2026-08-27 20:05Zfacts frozen when the run was committed, not updated — every figure the AI cites was true then and is never revised herefact pack b4c9a8b124fb…
post closeclaude-opus-4-8
fact pack b4c9a8b124fb576e… · run run_4cf3c195c3be42da
Model view at 2026-08-20 20:05Zfacts frozen when the run was committed, not updated — every figure the AI cites was true then and is never revised herefact pack 4f8ac265084c…
post closeclaude-opus-4-8

AI-generated. All quantitative claims traced to the published fact pack. Mandate P04 is a very-high-risk digital-asset book with a volatility-targeting sizing rule; the AI only selects within the eligible set. The book is heavily under-invested: cash is 76.63% of NAV (pf.cash_pct) with only 5 positions (pf.position_count) and zero drawdown from peak (pf.drawdown_pct). Total return is +3.09% (pf.total_return_pct). This is a young book — every held position was opened 5-6 days ago (pos.*.days_held). The tape is broadly risk-on across crypto majors. BTC +10.04% 5d / +7.07% 20d (px.BTC.ret_5d, px.BTC.ret_20d) with the lowest realised daily vol in the crypto set at 1.75% (px.BTC.vol_daily_pct). ETH is strongest: +19.74% 5d, +17.47% 20d, +29.52% 60d (px.ETH.ret_5d, px.ETH.ret_20d, px.ETH.ret_60d), and the held ETH position is +22.90% unrealised (pos.ETH.unrealised_pct). LINK +17.71% 5d / +24…

ProposalConvictionLifecycleCodes
BUY BTC4PROPOSED→GATES PASSED→QUEUED→FILLED—
ADD ETH4PROPOSED→GATES PASSED→QUEUED→FILLED—
ADD LINK3PROPOSED→REFUSED AT GATES
no order was created
REJECT_ALREADY_AT_TARGET
HOLD NVDA3PROPOSED→GATES PASSED→NO ORDER
HOLD is a decision not to trade — no order is created
—

Reading the lifecycle. PROPOSED and GATES PASSED are published facts. QUEUED is shown as reached only where a fill proves it — the payload publishes no order record. FILLED / EXPIRED stays undecided without a matching fill, because an accepted order can price on a later session under the T+1 rule, and calling that "expired" would be inventing the outcome. "Accepted" alone used to sit in this column and read as though the trade had happened.

fills: BUY 0.0709 BTC @ 72727.87 · BUY 0.0911 ETH @ 2321.24

fact pack 4f8ac265084c2a99… · run run_183438d104504ef6
Model view at 2026-08-14 20:05Zfacts frozen when the run was committed, not updated — every figure the AI cites was true then and is never revised herefact pack bb3f3a105b25…
post closeclaude-opus-4-8

AI-generated. All quantitative claims traced to the published fact pack. Portfolio is 84% cash (pf.cash_pct=84.0166) with only 4 small positions totalling ~16% (pos.IBIT.weight_pct=4.9688, pos.LINK.weight_pct=4.0755, pos.SOL.weight_pct=3.9388, pos.NVDA.weight_pct=3.0003), all held 0 days (days_held=0 across all four), so this is effectively a fresh book. Total return is roughly flat (pf.total_return_pct=-0.0726). The mandate is very_high risk, spot-only, volatility-targeted, and I only rank within the eligible set; sizing is deterministic. The macro picture across crypto is weak on a 252d basis (BTC ret_252d=-31.13, ETH=-39.87, SOL=-45.20, XRP=-51.89, ADA=-58.51, BCH=-64.08, DOT=-66.04, LTC=-46.39, IBIT=-48.98) but medium-term momentum diverges. LINK is the clear relative-strength leader among held/eligible crypto: positive across 5d/20d/60d (px.LINK.ret_5d=6.95, ret_20d=6.54, ret_60d=…

ProposalConvictionLifecycleCodes
ADD LINK4PROPOSED→GATES PASSED→QUEUED→FILLED—
BUY ETH3PROPOSED→GATES PASSED→QUEUED→FILLED—
HOLD NVDA3PROPOSED→GATES PASSED→NO ORDER
HOLD is a decision not to trade — no order is created
—
HOLD IBIT2PROPOSED→GATES PASSED→NO ORDER
HOLD is a decision not to trade — no order is created
—
HOLD SOL3PROPOSED→GATES PASSED→NO ORDER
HOLD is a decision not to trade — no order is created
—

Reading the lifecycle. PROPOSED and GATES PASSED are published facts. QUEUED is shown as reached only where a fill proves it — the payload publishes no order record. FILLED / EXPIRED stays undecided without a matching fill, because an accepted order can price on a later session under the T+1 rule, and calling that "expired" would be inventing the outcome. "Accepted" alone used to sit in this column and read as though the trade had happened.

fills: BUY 102.8842 LINK @ 8.99 · BUY 2.1273 ETH @ 1879.22

fact pack bb3f3a105b250277… · run run_37cb0553a0bd4454
Model view at 2026-08-13 20:05Zfacts frozen when the run was committed, not updated — every figure the AI cites was true then and is never revised herefact pack 4c79b5eeae89…
post closeclaude-opus-4-8

AI-generated. All quantitative claims traced to the published fact pack. Portfolio is 100% cash (pf.cash_pct=100, pf.position_count=0) with NAV 100k (pf.nav). Mandate is very_high risk, diversified across a crypto sleeve and equities/ETPs driven by digital assets, with volatility-targeting sizing done by the engine. My job is to rank within the eligible set. The tape is broadly weak: nearly every crypto major is deeply negative on a 252d basis (BTC -32.1% px.BTC.ret_252d, ETH -41.1% px.ETH.ret_252d, XRP -54.3% px.XRP.ret_252d, ADA -59.5% px.ADA.ret_252d, DOT -67.3% px.DOT.ret_252d, BCH -64.0% px.BCH.ret_252d). Short-term (5d) most crypto is also soft (BTC -2.28% px.BTC.ret_5d, XRP -1.55% px.XRP.ret_5d). Against that backdrop I favour relative strength combined with liquidity and structural quality. Standouts on relative strength: LINK is positive across 5d/20d/60d (+5.93% px.LINK.ret_5…

ProposalConvictionLifecycleCodes
BUY IBIT4PROPOSED→GATES PASSED→QUEUED→FILLED—
BUY LINK3PROPOSED→GATES PASSED→QUEUED→FILLED—
BUY SOL3PROPOSED→GATES PASSED→QUEUED→FILLED—
BUY NVDA2PROPOSED→GATES PASSED→QUEUED→FILLED—

Reading the lifecycle. PROPOSED and GATES PASSED are published facts. QUEUED is shown as reached only where a fill proves it — the payload publishes no order record. FILLED / EXPIRED stays undecided without a matching fill, because an accepted order can price on a later session under the T+1 rule, and calling that "expired" would be inventing the outcome. "Accepted" alone used to sit in this column and read as though the trade had happened.

fills: BUY 139.3534 IBIT @ 35.51 · BUY 453.5662 LINK @ 8.86 · BUY 52.5348 SOL @ 76.28 · BUY 13.3156 NVDA @ 226.89

fact pack 4c79b5eeae89bbdf… · run run_22464559fc3048f8

What the AI is allowed to do

This portfolio's AI ranks candidates and explains its reasoning. It proposes direction and conviction only. Every price, quantity, weight and risk limit is computed by deterministic code the model cannot see or influence.

It may propose

BUY · ADD · TRIM · SELL · HOLD

At most 5 proposals per run, each carrying a direction, a conviction from 1 to 5, a rationale, and references to the facts it used.

It cannot
  • set a price
  • set a quantity or share count
  • set a weight or position size
  • set or move a risk limit
  • execute anything

Model tier deep · prompt version P04-v1. Any change to the decider or the prompt is recorded as a MODEL_CHANGE event in the audit chain — without it the record would be a chimera of two systems presented as one.

Enforced limits

Every limit below names the code path that enforces it. This is not decoration: a limit that is published but never fires is worse than no limit, because a reader has no way to tell the difference. A test walks every mandate, drives the engine into the state each declared control claims to protect against, and fails the build if nothing stops it.

exposure
LimitValueEnforced by
Maximum gross exposure100.0%gate 2 — size_order
Maximum single issuer15.0%gate 2 — size_order
Maximum single sector100.0%gate 2 — size_order
permissions
LimitValueEnforced by
Shortingprohibitedgate 1 — proposal validation
Derivativesprohibitedgate 1 — proposal validation
Marginprohibitedgate 1 — proposal validation
Leverageprohibitedgate 1 — proposal validation
sizing
LimitValueEnforced by
Maximum positionscrypto_spot: 6, equities: 12gate 3 — BREACH_MAX_POSITIONS (portfolio limit check)
Minimum new position1.5%gate 2 — size_order
Maximum order as % of ADV0.5%gate 2 — size_order
loss limits
LimitValueEnforced by
Single-day loss alert8.0%gate 3 — alert
data integrity
LimitValueEnforced by
Stale-data halt12 hoursgate 3 — HALT_STALE_DATA
drawdown ladder
LimitValueEnforced by
At −20.0% drawdownalert, publish_commentarygate 3 — drawdown ladder
At −30.0% drawdownalert, force_crypto_sleeve_to_max:25.0gate 3 — drawdown ladder
At −50.0% drawdownalert, force_crypto_sleeve_to_min, mandatory_deep_review, pause_new_positions_days:20gate 3 — drawdown ladder
At −70.0% drawdowngraveyard_reviewgate 3 — drawdown ladder
volatility ladder
LimitValueEnforced by
Crypto sleeve when 30d annualised vol > 90.0%30.0% maximumgate 2 + gate 3 — crypto_sleeve_cap, with pro-rata forced trims
Crypto sleeve when 30d annualised vol > 120.0%22.0% maximumgate 2 + gate 3 — crypto_sleeve_cap, with pro-rata forced trims
Crypto sleeve when 30d annualised vol > 160.0%20.0% maximumgate 2 + gate 3 — crypto_sleeve_cap, with pro-rata forced trims
turnover
LimitValueEnforced by
Max trades per month16entry block — PAUSE_TURNOVER_CAP_REACHED (never blocks an exit)
Min holding period days3entry block — PAUSE_TURNOVER_CAP_REACHED (never blocks an exit)
circuit breakers
LimitValueEnforced by
Halt trading if price gap unexplained pct40gate 3 — circuit breaker
Halt trading if venue price divergence bps above300gate 3 — circuit breaker
Halt trading if factpack hash mismatchtruegate 3 — circuit breaker

Execution

Cost profile
crypto_retail_punitive
Fill convention
vwap_window
Decision → order latency
60s
VWAP window
15 minutes

Fills are struck on a VWAP window that begins strictly after the decision timestamp plus a latency delay. No fill can use information from the bar in which the decision was made, so look-ahead is arithmetically impossible rather than merely avoided.

Philosophy

Crypto's problem is not direction, it is position sizing. This portfolio treats volatility as the binding constraint: sleeve weights are set by a deterministic volatility-targeting rule, and the AI selects only within the eligible set. No leverage, no yield products, no staking, no lending, spot only.

Review schedule

JobCronTimezoneMakes a decision
weekly review0 12 * * SUNAmerica/New_Yorkyes
monthly rebal0 12 1 * *America/New_Yorkyes
daily vol check0 17 * * *America/New_Yorkno

Published on a fixed, regular schedule. Never event-triggered — no "market is crashing, sell now" alerts, deliberately. This table is the promise; the cadence panel at the top of the page is whether it was kept, instant by instant.

Machine-readable mandate: config/portfolios/P04_digital_assets_equities.yaml · human rulebook: docs/portfolios/P04_digital_assets_equities.md · effective from 2026-08-06 (wall clock) · record starts 2026-08-13 (pricing session) · payload 06ec491b8950…

Every trade, as it happens
What each portfolio bought, what it sold and what it lost. Free, on Telegram.
Join →
Or follow @AIPortfolios186 on X, where the same trades are posted.
Live public decision feed.Every decision, fill and refusal, as it is published — including the ones that lose money. Delivered on Telegram, free.Get the feed →or subscribe by RSS/Atom

The same decisions are posted on X as @AIPortfolios186.

Data provided for free by IEX. By accessing or using IEX Historical Data, you agree to the IEX Historical Data Terms of Use. · Powered by CoinGecko · Logos provided by Logo.dev · Company logos identify holdings only and imply no endorsement.