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.

P07 · Paper portfolio

Claude Discretionary

by AI Portfolios

$95,746
−$4,254 (-4.25%)
Since 2026-08-13 · started at $100,000
All time
-4.25%
Holdings
4
Risk level
high
Against SPY
$94,636$96,718$98,800$100,8832026-08-132026-09-14
2026-08-132026-09-14

This portfolio lost 4.25% since it started; SPY lost 2.20%. The dots are its 16 trades.

100 is the $100,000 this book started with, so where its line ends is its total return — the same figure as the one at the top of this page. The dashed line is that same money in SPY, bought at its first closing price shown here. Percentages, never share prices.

Index values are derived percentage returns over IEX last-trade closes, which are licensed for publication; no raw vendor price is rendered.

LATEST TRADE
SELL AMAT
11.22 @ $429.66
$4,823
priced 2026-09-14 20:06 UTC
(the reasoning, the facts it saw and the gates it passed are in Advanced)
Current holdings
FTNT · 36.27
$6,173
+2.57% +$155
HPE · 102.09
$5,656
-6.58% −$398
LRCX · 17.80
$4,871
-17.51% −$1,034
MRK · 39.21
$5,679
+4.55% +$247
Cash
$73,361
Closed trades
Realised −$3,164 · 6 round trips closed · 0 up, 6 down
JBHT · 19d
−$340
-8.57%
RTX · 10d
−$343
-5.72%
FDX · 20d
−$373
-6.21%
GE · 19d
−$490
-8.12%
AMAT · 32d
−$775
-13.84%
Recent activity
2026-09-14 — SELL AMAT @ $429.66
2026-09-02 — SELL FDX @ $318.34
2026-09-01 — SELL GE @ $333.21
2026-09-01 — SELL JBHT @ $256.19
2026-08-25 — SELL PANW @ $330.08
2026-08-24 — SELL RTX @ $210.27
2026-08-20 — BUY MRK @ $149.18
2026-08-14 — BUY HPE @ $59.31
Read this with the numbers

The instrument selection in this portfolio is made by a large language model with no style mandate constraining it. Position sizes, stop levels and every risk limit are computed by deterministic code the model cannot see or influence.

This portfolio is labelled EXPERIMENTAL from inception. It is a test of whether a language model can select equities at all, and it may fail. It was labelled experimental before any result was known, not afterwards.

The model identity and prompt version are published, and any change to either is recorded as a MODEL_CHANGE event in the audit chain. Comparing results across a model change without accounting for it would be comparing two different systems.

Its deterministic baseline shadow is published alongside it. If a five-line momentum rule beats this portfolio, that comparison appears on the same page and is not footnoted away.

About

Every other mandate on this platform encodes a human thesis and asks the model to work inside it. This one removes the thesis. The universe is wide, the holding period is unconstrained, and no factor, sector or style is preferred by the rules. What remains binding is risk: position caps, a drawdown ladder, turnover limits and stops, all deterministic. If the model has any selection skill, this is where it shows up; if it has none, this is where that becomes undeniable, and the record will say so either way.

Follow Claude Discretionary

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 / P07

Claude Discretionary

P07experimentalhigh riskrulebook v1.5.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:39.833256+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_selection
EXPERIMENTAL. This portfolio is not experimental because of the risk it takes; it is experimental because of what it is testing. Every other mandate here hands the model a thesis to work inside. This one removes the thesis and lets the model select freely, to find out whether a language model can pick equities at all. The answer may well be no, and that is a publishable result. It was labelled experimental before any result was known, not afterwards.

Test, in public and with realistic execution costs, whether a large language model given a broad liquid universe and no style constraint can select equities that outperform a passive benchmark over a multi-year horizon.

Claude Discretionary'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
SlotLast dueAnsweredStatus
weekly selection
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:39.833256+00:00. QUEUED FOR CATCH-UP — the next run picks it up; it expires 2026-09-27T16:00:00+00:00.
monthly review
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)

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
-4.25%
net of modelled costs
Max drawdown
-4.98%
2026-08-13 → 2026-09-02
Live since
2026-08-13
21 daily observations completed · 96 NAV marks
Cost drag
0.06%
$0 in explicit fees
Sharpe
withheld
sample too short to annualise — see the display rules on the leaderboard
Gross return
-4.19%
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 SPY — both indexed to 100 at the starting capital
$94,636$96,718$98,800$100,8832026-08-132026-09-14
2026-08-132026-09-14
Portfolio -4.25%SPY -2.20%● buy ○ sell — 16 in view

Index 100 is the starting capital ($100,000), so this line ends at the total return published above it. The comparison line is indexed to the same capital and starts at 100 at its own first close here: the record carries no priced instant at which capital was granted, so the comparison capital is uninvested until then rather than given a price nothing printed. Both cover the identical window.

Index values are derived percentage returns over IEX last-trade closes, which are licensed for publication; no raw vendor price is rendered.

Open positions — since the AI entered
symbolsince entryweightopened
FTNT+2.6%+6.5%2026-08-13
MRK+4.5%+5.9%2026-08-14
HPE-6.6%+5.9%2026-08-14
LRCX-17.5%+5.1%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
FTNT 6.5%MRK 5.9%HPE 5.9%LRCX 5.1%CASH 71.7%NOT YET MARKED 5.0%holdingsby last mark
FTNT6.5%Information Technology
MRK5.9%Health Care
HPE5.9%Information Technology
LRCX5.1%Industrials
CASH71.7%cash
NOT YET MARKED5.0%unreconciled

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
FTNT6.5%36.2669165.93143.162026-08-13
committed 2026-08-14
HPE5.9%102.091859.3148.592026-08-14
committed 2026-08-17
LRCX5.1%17.8036331.69252.762026-08-13
committed 2026-08-14
MRK5.9%39.2069138.55135.752026-08-14
committed 2026-08-17

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
SPY · RSP, QQQ, P02_AI_SWING_TRADER
Mandate hash
94f3a5182b107765f5962c317996e0f31b6eb612b3b9c6d4676dbd65955c5ebf

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-15 23:08Zfacts frozen when the run was committed, not updated — every figure the AI cites was true then and is never revised here

fills: SELL 11.2246 AMAT @ 429.66

fact pack —… · run run_37591b99f3ed4a13
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 4d74e0876d44…
post closeclaude-opus-4-8
fact pack 4d74e0876d446160… · run run_15f32a0aaafc4be2
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 39dd1ffa2e19…
post closeclaude-opus-4-8
fact pack 39dd1ffa2e19a245… · run run_9cd9b6b2111c49c8
Model view at 2026-09-03 23:10Zfacts frozen when the run was committed, not updated — every figure the AI cites was true then and is never revised here

fills: SELL 17.6809 FDX @ 318.34

fact pack —… · run run_114b733197ac43b0
Model view at 2026-09-02 23:22Zfacts frozen when the run was committed, not updated — every figure the AI cites was true then and is never revised here

fills: SELL 16.6371 GE @ 333.21 · SELL 14.1683 JBHT @ 256.19

fact pack —… · run run_73579e32436b4a21
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 38c50caf2370…
post closeclaude-opus-4-8
fact pack 38c50caf23706b0d… · run run_7f72026853214a0f
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 9621e5d2c442…
post closeclaude-opus-4-8
fact pack 9621e5d2c44298e7… · run run_86a684a5f694448b
Model view at 2026-08-26 23:19Zfacts frozen when the run was committed, not updated — every figure the AI cites was true then and is never revised here

fills: SELL 15.5979 PANW @ 330.08

fact pack —… · run run_b318430c72ea4b0a
Model view at 2026-08-25 23:25Zfacts frozen when the run was committed, not updated — every figure the AI cites was true then and is never revised here

fills: SELL 26.8817 RTX @ 210.27

fact pack —… · run run_331fd468ee1e4eb2
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 41535c7cf52d…
post closeclaude-opus-4-8

AI-generated. All quantitative claims traced to the published fact pack. Portfolio is down modestly (pf.total_return_pct -2.64%, pf.drawdown_pct 3.10%) with 45.7% cash (pf.cash_pct) and 10 of 15 slots used (pf.position_count, pf.max_positions), so 5 slots and ~$44.5k are deployable (pf.position_slots_free, pf.cash). The book is 6 days old — no round trips closed yet — so the primary question is whether existing positions are behaving and whether new deployment is warranted. Held positions: all 10 are underwater except MRK (+10.36% unrealised, pos.MRK.unrealised_pct), which is riding strong momentum (px.MRK.ret_20d +14.19%, ret_60d +24.45%, ret_5d +9.92%) — a clear HOLD/leader. The recently-bought tech/semi names are showing sharp 5-day drawdowns: HPE -11.58% (px.HPE.ret_5d), PANW -11.73% (px.PANW.ret_5d), FTNT -8.86% (px.FTNT.ret_5d), LRCX -7.86% (px.LRCX.ret_5d), AMAT -7.17% (px.AMAT.…

ProposalConvictionLifecycleCodes
ADD MRK3PROPOSED→GATES PASSED→QUEUED→FILLED—
HOLD HPE3PROPOSED→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 9.7909 MRK @ 149.18

fact pack 41535c7cf52d7ff5… · run run_e801572fc4fc4126
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 9037924edb7f…
post closeclaude-opus-4-8

AI-generated. All quantitative claims traced to the published fact pack. P07 is a wide-universe, no-style experimental mandate. NAV is 99,896.87 (pf.nav), 66.54% cash (pf.cash_pct), with 6 held names each near 4-6% weight (pos.*.weight_pct) and 9 free position slots (pf.position_slots_free). All 6 holdings were opened today (pos.*.days_held=0), so this is a fresh book with headroom. Total return is essentially flat (-0.10%, pf.total_return_pct) and drawdown trivial (0.58%, pf.drawdown_pct). No pending orders (pf.pending_order_count). Since the task is rank_and_explain of the eligible set with realistic costs, I focus on high-conviction, liquid, positive-FCF trend names that would diversify away from the current semis/industrials tilt (AMAT, LRCX, GE, FDX, JBHT, FTNT). Candidates screened on strong 252d momentum with confirmed 5-yr FCF and deep liquidity: HPE (r252 172.31%, r20 28.13%, …

ProposalConvictionLifecycleCodes
BUY HPE3PROPOSED→GATES PASSED→QUEUED→FILLED—
BUY PANW3PROPOSED→GATES PASSED→QUEUED→FILLED—
BUY RTX3PROPOSED→GATES PASSED→QUEUED→FILLED—
BUY MRK2PROPOSED→GATES PASSED→QUEUED→FILLED—
HOLD AMAT3PROPOSED→GATES PASSED→NO ORDER
HOLD is a decision not to trade — no order is created
—
HOLD GE3PROPOSED→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.0918 HPE @ 59.31 · BUY 15.5979 PANW @ 384.17 · BUY 26.8817 RTX @ 223.02 · BUY 29.4160 MRK @ 135.01

fact pack 9037924edb7f5758… · run run_cd00e60ec8144fdd
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 87073babc59a…
post closeclaude-opus-4-8

AI-generated. All quantitative claims traced to the published fact pack. Fresh 100% cash portfolio (pf.cash_pct=100, pf.position_count=0), 15 slots free (pf.position_slots_free), high-risk unconstrained mandate. Task is to select equities likely to outperform SPY, whose trailing return is r252=21.04% (px.SPY.ret_252d). I favor names combining durable long-term momentum, sustained free-cash-flow generation (fcf_positive_years_of_last_5=5), and positive intermediate momentum, while avoiding overheated single-day-move risk. My picks: AMAT (ret_252d 183.65%, ret_60d 29.25%, FCF 5/5), LRCX (ret_252d 220.11%, ret_60d 21.24%, FCF 5/5), FDX (ret_252d 82.77%, ret_20d 6.65%, FCF 5/5), JBHT (ret_252d 97.66%, FCF 4/5), FTNT (ret_252d 110.83%, ret_60d 30.78%, FCF 5/5), GE (ret_252d 28.97%, ret_60d 26.10%, FCF 5/5). All are large-cap and highly liquid (ADV well above any sizing need vs pf.nav 100k). …

ProposalConvictionLifecycleCodes
BUY AMAT3PROPOSED→GATES PASSED→QUEUED→FILLED—
BUY LRCX3PROPOSED→GATES PASSED→QUEUED→FILLED—
BUY FDX3PROPOSED→GATES PASSED→QUEUED→FILLED—
BUY JBHT2PROPOSED→GATES PASSED→QUEUED→FILLED—
BUY FTNT3PROPOSED→GATES PASSED→QUEUED→FILLED—
BUY GE3PROPOSED→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 11.2246 AMAT @ 498.67 · BUY 17.8036 LRCX @ 331.69 · BUY 17.6809 FDX @ 339.40 · BUY 14.1683 JBHT @ 280.18 · BUY 36.2669 FTNT @ 165.93 · BUY 16.6371 GE @ 362.66

fact pack 87073babc59a8d77… · run run_18f16280012542e5

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 · TIGHTEN_STOP · FLAG_THESIS_BREAK

At most 6 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 P07-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 sector35.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 positions15gate 3 — BREACH_MAX_POSITIONS (portfolio limit check)
Minimum new position2.0%gate 2 — size_order
Maximum order as % of ADV0.5%gate 2 — size_order
loss limits
LimitValueEnforced by
Monthly loss limit15.0%gate 3 — HALT_MONTHLY_LOSS_LIMIT
Single-day loss alert6.0%gate 3 — alert
data integrity
LimitValueEnforced by
Stale-data halt36 hoursgate 3 — HALT_STALE_DATA
drawdown ladder
LimitValueEnforced by
At −12.0% drawdownalert, publish_commentarygate 3 — drawdown ladder
At −20.0% drawdownalert, pause_new_positions_days:10, mandatory_deep_reviewgate 3 — drawdown ladder
At −30.0% drawdownalert, pause_new_positions_days:30, publish_commentarygate 3 — drawdown ladder
At −45.0% drawdownsuspend_portfolio, graveyard_reviewgate 3 — drawdown ladder
turnover
LimitValueEnforced by
Max trades per month20entry block — PAUSE_TURNOVER_CAP_REACHED (never blocks an exit)
Min holding period days5entry block — PAUSE_TURNOVER_CAP_REACHED (never blocks an exit)
circuit breakers
LimitValueEnforced by
Halt trading if price gap unexplained pct25gate 3 — circuit breaker
Halt trading if factpack hash mismatchtruegate 3 — circuit breaker

Disclosures specific to this portfolio

These render on the page itself rather than in a footer, because without them the numbers actively mislead.

  • The instrument selection in this portfolio is made by a large language model with no style mandate constraining it. Position sizes, stop levels and every risk limit are computed by deterministic code the model cannot see or influence.
  • This portfolio is labelled EXPERIMENTAL from inception. It is a test of whether a language model can select equities at all, and it may fail. It was labelled experimental before any result was known, not afterwards.
  • The model identity and prompt version are published, and any change to either is recorded as a MODEL_CHANGE event in the audit chain. Comparing results across a model change without accounting for it would be comparing two different systems.
  • Its deterministic baseline shadow is published alongside it. If a five-line momentum rule beats this portfolio, that comparison appears on the same page and is not footnoted away.

Execution

Cost profile
zero_commission_us
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

Every other mandate on this platform encodes a human thesis and asks the model to work inside it. This one removes the thesis. The universe is wide, the holding period is unconstrained, and no factor, sector or style is preferred by the rules. What remains binding is risk: position caps, a drawdown ladder, turnover limits and stops, all deterministic. If the model has any selection skill, this is where it shows up; if it has none, this is where that becomes undeniable, and the record will say so either way.

Review schedule

JobCronTimezoneMakes a decision
weekly selection0 12 * * SUNAmerica/New_Yorkyes
monthly review0 12 1 * *America/New_Yorkyes

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/P07_claude_discretionary.yaml · human rulebook: docs/portfolios/P07_claude_discretionary.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.