Auto-Research Arena

Switch to Backtest Arena →

Track the evolution of our autonomous trading prompts. Watch the meta-researcher hypothesize, experiment, and ratchet its way to better market performance.

Scoring Methodology

Every experiment is evaluated against the market using a risk-adjusted return formula. This single number determines if a prompt becomes the new baseline or is discarded.

Unified Risk-Adjusted Z-Score Formula
[0.4 × (Portfolio% - SPY%) + 0.4 × (Portfolio% - Do-Nothing%) + 0.2 × (Portfolio% - 10Y Bond%) - (Max Drawdown% × 0.3)] / Weekly Effective Volatility%

Excess Return

The primary goal: outperform the S&P 500 benchmark (40% weight) and a "Do-Nothing" alternative (40% weight) holding inherited positions. Isolates active trading value-add without previous week drag.

Risk-Free Excess

The 10-Year Treasury Bond yield forms the 20% risk-free component of the triad composite benchmark. Provides a clean 1:1 excess return signal Portfolio% - 10Y Bond% without asymmetric double penalties.

Risk Penalty

We multiply the maximum drawdown by 0.3. This penalizes peak-to-trough drawdowns, ensuring the AI prioritizes capital preservation.

Volatility Normalizer

Divides net excess return by weekly effective volatility max(SPY Vol, Port Vol, 10%) / √52. Grounded in standard deviation (σ) units so volatile market weeks and meme spikes never distort scores.

The "Ratchet"

If the Z-score is lower than the all-time best baseline for this model track, the experiment is discarded and we revert to the baseline prompt.

History

24 Experiments
VariantTrackTypeScorePeriodStatus
v20261018-234641🛠️ Pull
Default Track (Combined)
incrementalN/AOct 19, 2026 - Oct 25, 2026Active
v20261012-004842🛠️ Pull
Default Track (Combined)From 0
radical0.9974Oct 12, 2026 - Oct 18, 2026Discarded
v20261005-001759🛠️ Pull
Default Track (Combined)
incremental0.364Oct 5, 2026 - Oct 11, 2026Discarded
v20260928-000543🛠️ Pull
Default Track (Combined)From 0
radical0.1322Sep 28, 2026 - Oct 4, 2026Discarded
v20260920-233957🛠️ Pull
Default Track (Combined)
incremental-0.3946Sep 21, 2026 - Sep 27, 2026Discarded
v20260913-234409🛠️ Pull
Default Track (Combined)
incremental-0.0724Sep 14, 2026 - Sep 20, 2026Discarded
v20260906-232058🛠️ Pull
Default Track (Combined)
incremental0.5368Sep 7, 2026 - Sep 13, 2026Discarded
v20260831-000122🛠️ Pull
Default Track (Combined)
incremental-0.2272Aug 31, 2026 - Sep 6, 2026Discarded
v20260823-221041🛠️ Pull
Default Track (Combined)
incremental-2.2234Aug 24, 2026 - Aug 30, 2026Discarded
v20260816-220952🛠️ Pull
Default Track (Combined)
incremental0.1527Aug 17, 2026 - Aug 23, 2026Discarded
v20260809-221804🛠️ Pull
Default Track (Combined)
incremental0.2297Aug 10, 2026 - Aug 16, 2026Saved
v20260802-224434🛠️ Pull
Default Track (Combined)
incremental-1.6043Aug 3, 2026 - Aug 9, 2026Discarded
v20260726-224747🛠️ Pull
Default Track (Combined)
incremental-6.2278Jul 27, 2026 - Aug 2, 2026Discarded
v20260719-223956🛠️ Pull
Default Track (Combined)
incremental2.5246Jul 20, 2026 - Jul 26, 2026Baseline
v20260712-223711🛠️ Pull
Default Track (Combined)
incremental-0.3775Jul 13, 2026 - Jul 19, 2026Saved
v20260705-221937
Default Track (Combined)
incremental0.3607Jul 6, 2026 - Jul 12, 2026Saved
v20260628-222037
Default Track (Combined)
incremental-0.6878Jun 29, 2026 - Jul 5, 2026Discarded
v20260614-222430
Default Track (Combined)
incrementalN/AJun 15, 2026 - Jun 21, 2026Crashed
v20260607-222143
Default Track (Combined)
incremental-0.4266Jun 8, 2026 - Jun 14, 2026Discarded
v20260531-222012
Default Track (Combined)
incremental-0.7378Jun 1, 2026 - Jun 7, 2026Discarded
v20260524-221848
Default Track (Combined)
incremental-2.3541May 25, 2026 - May 31, 2026Discarded
v20260519-221104
Default Track (Combined)
baseline-0.8109May 12, 2026 - May 19, 2026Saved
v20260517-221731
Default Track (Combined)
incrementalN/AMay 11, 2026 - May 17, 2026Saved
v20260511-174517
Default Track (Combined)
baselineN/AMay 4, 2026 - May 11, 2026Saved

Experiment Details

v20261018-234641
Optimization Track:Default Track (Combined)
Experiment Type:incremental
Excess Return
N/A
📊Volatility
N/A
📉Max Drawdown
N/A

Daily Autoresearch Score

LIVE TRACKING
Day 1 In Progress (First Close 4:00 PM ET)

Real-time daily evaluation of the Meta-Researcher prompt performance against active benchmark parameters.

Running Score
Pending
⚡Daily Excess Return
Pending EOD Close
⏳Risk-Free Excess (vs 10Y Bond)
Pending EOD Close
🛡️Daily Risk Penalty
0.00%

Day-by-Day Score Progression

Score Breakdown

This experiment variant is currently active. Performance metrics and the risk-adjusted scoring breakdown will be computed automatically at the close of the trading week.

Volatility Methodology

This experiment variant is currently active. Once finalized, the portfolio's annualized volatility will be calculated as the annualized standard deviation of daily returns, equally-weighted across all active experiment agents.

Backtest Executed Trades Audit

0 Total Trades

Complete point-in-time trade ledger executed by model agents during this 12-week backtest run.

📜

No Detailed Trade Ledger Recorded

This historical backtest run was recorded prior to detailed trade telemetry collection. Only aggregate equity metrics were preserved.

Weekly Toolbox Configuration

The meta-researcher dynamically selects which cognitive tools are exposed to the trading agent.

28 / 52 Tools Enabled

Cognitive Tool Evolution (Pivot Delta)

+ get_verifier_rejections(added)
+ get_yield_curve_regime(added)
+ get_global_macro_context(added)
+ get_volatility_index_details(added)
+ get_catalyst_radar(added)
+ get_calendar_scenario_analysis(added)
+ get_today_economic_releases(added)
+ get_market_moving_news(added)
+ get_thematic_flows(added)
+ get_pead_candidates(added)
+ get_earnings_revisions(added)
+ get_options_sentiment(added)
+ get_system_portfolios(added)
+ get_ticker_news(added)
+ web_search(added)
- get_volatility_metrics(removed)
- find_uncorrelated_assets(removed)
- get_market_health_barometer(removed)
- get_earnings_history(removed)
- get_prediction_market_odds(removed)
- audit_financial_valuation(removed)
get_portfolio_ledger✓

Pull portfolio ledger XML, cash, SMA & positions

get_todays_news_menu✓

Summarized menu of today's news headlines

fetch_newsletter_content✓

Fetch full-text of newsletters by source IDs

get_market_feeling✓

Retrieve qualitative daily AI market feeling

search_past_memories✓

Semantic pgvector search of lessons learned

get_stock_quote✓

Real-time stock price lookup

get_price_history✓

Historical price tracking

get_position_pnl✓

Detailed profit & loss statistics

get_volatility_metrics✗

Calculates asset price volatility

get_sector_alternatives✓

Identifies sector-based alternatives

search_related_tickers✓

Thematic keyword stock searches

run_stock_screener✓

Screens assets by ratios and volumes

find_uncorrelated_assets✗

Screens for uncorrelated portfolio assets

get_key_metrics✓

Financial ratio extraction

get_market_health_barometer✗

Cap-weighted index valuation check

get_sector_fundamentals✗

Aggregated sector P/E, forward P/E, and earnings beat rates

get_earnings_history✗

Earnings calendar events

search_prediction_markets✓

Kalshi/Polymarket event lookup

get_prediction_market_odds✗

Event resolution probability odds

audit_financial_valuation✗

Quarterly financial/DCF audit models

web_search✓ new

General web search grounding

get_global_macro_context✓ new

Global macroeconomic snapshot (indices, yields, commodities, DXY)

get_volatility_index_details✓ new

Cboe Spot VIX (^VIX) regime tracking and VIX futures ETF term structure

get_verifier_rejections✓ new

Past trade compliance rejection logs and verifier feedback

get_macro_economic_series✗

Macroeconomic time series from FRED

get_thematic_flows✓ new

Retrieve active thematic and narrative flows

add_thematic_flow✗

Register new thematic narrative flow signal

get_options_sentiment✓ new

Options market sentiment, Put/Call ratios, ATM IV, skew, and max pain

get_option_chain✗

Near-the-money options board with bid/ask, volume, OI, and Greeks

get_pead_candidates✓ new

Top-decile Post-Earnings Announcement Drift (PEAD) candidates with SUE scores

get_earnings_revisions✓ new

Analyst buy/sell consensus, price targets, and revision sentiment

get_sector_bellwethers✗

Sector bellwether reports, margin surprises, and unannounced peers

get_treasury_yield_curve✗

Live US Treasury benchmark yields (3M, 2Y, 5Y, 10Y, 30Y) with 1d basis point changes and slope spreads

get_yield_curve_regime✓ new

Classifies US Treasury yield curve slope into 4 macro monetary regimes (Bull/Bear Steepener/Flattener)

get_options_vol_surface✗

Options implied volatility surface, 20d realized vol, implied daily move cone, and IV premium (rich/cheap)

track_thesis_pillars✗

Track multi-day falsifiable thesis pillars, stop-loss triggers, and disconfirming evidence ledger

get_catalyst_radar✓ new

Retrieve high-velocity market concepts paired with upcoming and digesting calendar triggers

get_calendar_scenario_analysis✓ new

Upcoming calendar events and scenario analysis (today, tomorrow, next week, or forward window) with conditional trading plans, probabilities, and profit mechanisms

get_barrier_touch_probabilities✗

Empirical Triple Barrier Method touch probabilities conditional on regime (take-profit vs stop-loss vs vertical time exit)

get_ticker_news✓ new

Real-time stock news headlines, publisher sources, and summaries by ticker

get_congress_trades✗

Stock trading disclosures by US Congress members (Senate and House) with transaction types, amounts, and filing dates

get_insider_trades✗

Corporate insider trading disclosures (SEC Form 4) for C-suite executives, directors, and 10%+ owners with transaction types, amounts, and filing dates

get_whale_holdings✗

13F institutional whale holdings and Schedule 13D/13G beneficial ownership disclosures with co-ownership clusters and top fund positions

analyze_thematic_beneficiaries✗

Screens second-order winners and thematic beneficiaries via factor correlation, beta sensitivity, options positioning, and institutional co-ownership

get_today_economic_releases✓ new

Live scheduled and released economic indicators (CPI, PPI, Jobs, Retail Sales) with actual vs consensus surprises

call_warren_buffett✗

Consult the Oracle of Omaha for value investing analysis, margin of safety, moat quality, debt sanity, and the Munger Inversion test

get_intraday_movement_profile✗

Deterministic quantitative profile and hourly price-action tape matrix of a stock's regular trading session (09:30-16:00 ET)

research_historical_market_analog✗

Researches historical market precedent episodes, cross-asset reaction tapes (stocks, bonds, gold, crypto, dollar), and actionable profit playbooks

get_future_forces✗

Retrieve active multi-horizon market forces (2-24 months), catalyst milestones, and falsification criteria

research_future_force✗

Stress-test a forward catalyst or thematic thesis using OpenAI Luna with thinking against priced-in expectations and falsification criteria

get_system_portfolios✓ new

Inspect mechanical system portfolios (mean reversion, momentum trends, sector long/short, intraday SPY) for positions, signals, and benchmark returns

get_market_moving_news✓ new

Retrieve real-time intraday market-moving events, macro prints, and breaking catalysts vetted by TypeSafe Jev

Modular Reasoning & Discipline Blocks

Structured trading disciplines dynamically toggled by the meta-researcher to enforce risk control.

2 / 10 Blocks Active
LET WINNERS RUN✓

Momentum trailing profit ratchet and scale-in rules to avoid premature liquidation.

CUT LOSERS FAST✓

Rapid thesis invalidation and asymmetric stop-loss guardrails to eliminate sunk-cost bias.

CATALYST EXPIRY TIMER✗

Enforces strict position duration matching the expected news cycle to free dead capital.

5 WHYS CAUSAL DEPTH✗

Drills down to root supply/demand drivers rather than reacting to superficial headlines.

MECE RISK PARTITIONING✗

Partitions risk and macro scenarios into Mutually Exclusive, Collectively Exhaustive buckets.

OPTIONS VOLATILITY CONE✗

Bounds expected price targets within the 1-sigma options-implied volatility cone.

MACRO REGIME ROUTING✗

Routes portfolio posture based on yield curve inversions, real rates, and dollar liquidity.

DISCONFIRMING EVIDENCE GATE✗

Mandates active search for counter-theses and falsifying data before trade execution.

CATALYST RADAR DISCIPLINE✗

Aligns execution timing with calendar earnings, FDA dates, and investor days.

TICKER NEWS VERIFICATION✗

Ensures news catalysts are recent, authoritative, and material to the underlying asset.

Meta-Researcher Rationale & Conviction

Conviction:
63%

Change Summary

"Rebuilt on the all-time-best opportunity-capture engine (5 Whys, calendar/seasonal, chain-of-events, uncrowded/country ETF, winner compounding) and replaced the vague sizing language with a deterministic SMA budget formula (min(20%E, S-10%E, C)) plus a sell-to-fund sequencing rule, since 6 of 9 rejections this week were SMA-floor violations that destroyed alpha."

incremental

Meta-Researcher Analytical Reasoning

This week we returned +1.06% vs SPY -1.82% and do-nothing +0.32% with only -0.36% drawdown, so direction and risk control were both good — the gap to the 2.5246 baseline is magnitude of excess return, not drawdown. Two facts drive the change. First, the audit shows 6 of 9 rejections were REJECTED_MARGIN (projected SMA below the 10% floor) on ideas the agents rated highly (QQQ oversold, UNH earnings beat, XLV defensive). Those are not bad trades; they are good trades lost to arithmetic. Recovering even one of them converts a zero into alpha on the dominant 0.4x(port-SPY) term. I replaced 'the tool will ensure you meet the floor' (a false assurance that caused the failures) with an explicit budget formula and a sell-then-buy sequencing option so the agent sizes down into a valid order instead of being rejected, and added get_verifier_rejections so patterns are not repeated. Second, the book ran heavy SPY/QQQ index ballast (SPY at 61% of equity at one point), which contributes exactly zero to the 0.4x(port-SPY) and 0.4x(port-DoNothing) terms; I added an explicit differentiation rule capping passive index core near 35-40% and pushing capital into differentiated, dated catalysts, plus a ranking step so the best 1-2 ideas get concentrated rather than spread thin. I deliberately avoided the restraint-heavy constructs (anti-chase hard bans, drawdown budgets, capital-preservation barbells, do-nothing alpha tests) that produced 0.13, -0.07, -0.39 and 0.36 in prior weeks — track memory is unambiguous that subtracting trading latitude loses to baseline. The anti-chase language is retained only as a targeted priced-in test with an explicit 'catalyst still ahead' carve-out. Risks considered: (a) capping index core raises portfolio beta in a down tape, so I paired it with winner compounding plus a hard pre-committed invalidation exit to keep the 0.3x drawdown penalty small; (b) concentrating in 1-2 names raises idiosyncratic variance, so single-name cap stays at 25%; (c) if SMA is genuinely tight, the budget rule will legitimately produce fewer trades — that is intended, because a rejected oversized order is a guaranteed zero while a compliant smaller order is a live bet.
💾Durable Memory Saved for this Track

"The largest recoverable alpha on this track is not idea generation but order arithmetic: SMA-floor rejections silently zero out trades the agents already correctly identified, so a deterministic notional budget (min(20%E, SMA-10%E, cash)) with sell-to-fund sequencing should convert rejections into executed positions; separately, heavy index ballast contributes nothing to the port-minus-SPY and port-minus-do-nothing terms, so capital should be pushed into differentiated dated catalysts rather than defaulting to SPY core."

Prompt Changes

Comparing vv20260719-223956 (old) → vv20261018-234641 (new) — mutable strategies section only

- === REASONING RIGOR: THE "5 WHYS" TECHNIQUE ===
- To ensure high-fidelity decisions, you MUST apply the **"5 Whys"** technique to your internal reasoning:
- 1. **Why** is this news market-moving?
- 2. **Why** will this specific asset benefit?
- 3. **Why** is this not already priced in?
- 4. **Why** is your proposed action the most efficient way to profit?
- 5. **Why** could this trade fail (Root Cause of Risk)?
- Evidence of this recursive thinking must be visible in your `reasoning` or `profit_potential_reasoning` fields.
+ === REASONING RIGOR: THE "5 WHYS" ===
+ Apply the **5 Whys** internally and show the chain in your `reasoning`:
+ 1. **Why** is this news market-moving (root driver, not headline)? 2. **Why** does THIS ticker capture it better than the obvious name? 3. **Why** is it not already priced in? 4. **Why** is this the most efficient expression (not a crowded proxy)? 5. **Why** could it fail (root cause of risk)?
- === CALENDAR & SEASONAL STRATEGIES ===
- 1. **Turn of the Month (ToM):** Equity markets tend to rally significantly in the window from the last trading day of a month through the first three days of the next. Focus on large-cap ETFs (SPY, QQQ).
- 2. **Payday Anomaly:** Markets often see inflows around the 15th and 30th/31st of the month as automated 401k or salary-driven investments trigger.
- 3. **Pre-ECB/Fed Drift:** There is often a positive drift in equities (especially European markets for ECB) in the 24-48 hours leading up to a central bank meeting.
- 4. **Tax Day Trade:** In early April (leading to April 15th), markets may face pressure as investors sell to pay taxes, often followed by a relief rally.
- 5. **Pre-Election Drift:** Historically, markets show specific momentum patterns in the months leading up to major elections.
- 6. **Pre-Holiday Effect:** Commodities and equities often show positive drift in the 1-2 trading days preceding a major market holiday.
- 7. **Cultural Calendars (Gold):** Recognize demand spikes for Gold (GLD) during specific cultural festivals (e.g., Diwali, Lunar New Year).
+ === CALENDAR & SEASONAL STRATEGIES (pre-position, don't chase) ===
+ 1. **Turn of the Month:** strength from the last trading day through the first three days of the new month (SPY, QQQ, high-beta sleeves).
+ 2. **Payday Anomaly:** inflows around the 15th and month-end.
+ 3. **Pre-ECB/Fed Drift:** positive drift 24-48h BEFORE a central bank decision.
+ 4. **Pre-Holiday Effect** and **Tax-Day relief (mid-April)**.
+ 5. **Cultural Calendars:** Gold (GLD/GDX) demand spikes around Diwali/Lunar New Year.
+ 6. **Pre-Election Drift:** momentum patterns into major votes.
+ If a trade sits in one of these windows, name the window explicitly.
- === SOPHISTICATED TRADING LOGIC ===
- 1. **Is it possible to make a profitable trade based on this?**
- - Explicitly justify the profit potential. Why will the market move *after* you trade?
- 2. **Is it possible to make a STRATEGY based on this?**
- - Think beyond single trades. Can you form a multi-step or multi-asset strategy? Document this in `strategy_reasoning`.
- 3. **Calendar Alignment:**
- - Does this trade align with any of the **CALENDAR & SEASONAL STRATEGIES** listed above?
- - Check the **CURRENT DATE CONTEXT**. Are we in a ToM window? Close to a central bank meeting?
- - If a trade aligns with a seasonal anomaly, explicitly mention it in your reasoning.
- 4. **Is this news already priced in?**
- - Use `get_price_history` to check if the stock has already moved significantly in response to the news.
- - CHECK your 'Recently Executed Trades'—if you already bought this stock today based on similar news, the logic is likely already "priced in" to your portfolio.
- - **AVOID OVERTRADING:** If a trade was executed recently (within 48 hours) for the same underlying sentiment or reasoning, do NOT recommend it again. Redundant trades will be REJECTED.
- 5. **What is being incentivized right now?**
- - Consider government budgets, objectives, and policies. How do current incentives align with this trade?
- 6. **Trend Alignment:**
- - Review the 'Top Trending Market Concepts'. Does this trade align with a major market theme (e.g., "AI Demand Surge")?
- 7. **ADVANCE PLANNING: Should I sell X stock to make room for Y stock?**
- - If your portfolio is full or you have a better opportunity, plan decisions in advance. Document this in `advance_planning_notes`.
- 8. **CHAIN OF EVENTS / HOW TO PROFIT:**
- - Think beyond the immediate news. Trace the **Chain of Events**. If X happens, what happens next?
- - For example: Military tension in Iran -> Potential War -> Increased Oil Prices -> Increased Fertilizer Costs -> Profit via Energy or Fertilizer companies.
- - For example: Agricultural bill for AI -> Agritech sector boom -> Profit via niche Agritech software/hardware providers.
- 9. **UNCROWDED TRADES / UNDER-THE-RADAR:**
- - Actively search for these secondary effects or uncrowded opportunities that are less obvious to the broader market. Document this strategic logic and use `catalyst_type = "UNCROWDED_TRADE"`.
- 10. **COUNTRY TO ETF MAPPING:**
- - If specific countries are mentioned (e.g., Japan, South Korea, Mexico, Brazil), search for and use their primary ETFs (e.g., EWJ for Japan, EWY for South Korea, EWW for Mexico, EWZ for Brazil). If you find a macro trend for a country, use the ETF as the `ticker`.
- 11. **If I already own this stock, has this trade been profitable?**
- - Use `get_position_pnl` to check your current performance. Favor "buying more of winners" and "selling losers slowly".
- 12. **What is the expected timeline for this catalyst to materialize?**
- - Match your 'catalyst_duration' to the expected news cycle.
- 13. **What are the primary risks or counter-arguments to this trade?**
- - Consider what could go wrong.
- 14. **How does this stock correlate with my existing portfolio?**
- - Avoid over-concentration in a single sector or theme.
- 15. **MANDATORY QUANTITY CALCULATION (HARD ENFORCEMENT):**
- - **For BUY:** You MUST execute `calculate_buy_quantity(ticker, percentage)` to determine the exact shares. The tool will ensure you meet the **10% Equity Floor**.
- - **For SELL:** You MUST execute `calculate_sell_quantity(ticker, percentage)` to determine the exact shares. The tool will prevent you from leaving a **"dust" position** (<10% Equity) by mandating a full sell if necessary.
- - **REJECTION RULE:** Any `BUY` or `SELL` decision where the respective calculation tool was not ACTUALLY EXECUTED via function calling will be REJECTED. Do not just guess the share count.
- 16. **REASONING RIGOR: THE "5 WHYS":**
- - Before providing your final decision, mentally (or in your reasoning) ask "Why" 5 times to validate the causal link between the news and your trade.
- - **Root Cause Identification:** What is the *actual* bottleneck or driver?
- - **Profit Mechanism:** Explicitly state the "Chain of Events" that leads to profit.
+ === OPPORTUNITY ENGINE (this is where your score comes from) ===
+ Your return is measured AGAINST SPY and AGAINST doing nothing, so passive index ballast earns you nothing on the dominant term. Generate 5+ candidate ideas each session, then RANK them and act only on the top 1-2:
+ - **Catalyst still AHEAD** (dated event, not a digested headline) — highest weight.
+ - **Uncrowded / second-order** beneficiaries of a confirmed theme (use the Chain of Events: tension -> input cost -> producer margin -> the producer, not the crowd's proxy).
+ - **Country-to-ETF mapping** when a macro/ policy story is country-specific (EWJ, EWY, EWW, EWZ, INDA, etc.).
+ - **Sector rotation aligned with the current yield-curve regime's factor tailwinds.**
+ - **Event-driven special situations** with a definable date (screener/PEAD/revision-driven).
+ **Differentiation rule:** if the book is mostly broad-index exposure, you are running to stand still. Cap passive index core at roughly 35-40% of equity and hold the remaining capital in differentiated, thesis-driven exposures. Fund new ideas from cash and from positions whose thesis has decayed — never liquidate an intact winner to fund a marginal idea.
+
+ === COMPLIANCE MATH (do this BEFORE every BUY) ===
+ The #1 execution failure is SMA-floor rejection, which converts a good idea into a zero. Run this sequence:
+ 1. `get_portfolio_ledger` -> cash C, total equity E, current SMA/buying power S.
+ 2. **Budget rule:** max single-buy notional = min(0.20 x E, S - 0.10 x E, C).
+ 3. If that budget is below 0.10 x E, the order is INVALID at any size — SKIP the idea (or first SELL a decayed/thesis-broken position to raise SMA, then re-buy the new idea).
+ 4. Call `calculate_buy_quantity(ticker, pct)` with pct = budget / E (rounded DOWN). Never request a percentage above the budget. Never guess share counts.
+ 5. For exits call `calculate_sell_quantity(ticker, pct)`; if the residual would still sit below 10% of equity, sell the full position (no dust).
+ 6. Call `get_verifier_rejections` and confirm you are not repeating a recently rejected pattern (priced-in gate, missing valuation audit, ambiguous quantity).
+
+ === ENTRY QUALITY: PRE-CATALYST, NOT POST-HEADLINE ===
+ Check `get_price_history` before entry. If the asset has already moved >=2 standard deviations above its 20-day mean or >=8% in five sessions AND the catalyst has passed, skip it. If the catalyst is confirmed AHEAD, a run-up is acceptable — trade the continuation. Prefer a first pullback or a pre-event consolidation.
+
+ === COMPOUND THE WINNERS ===
+ Default action on an intact winner is HOLD, not harvest. For a holding up >5% with a live thesis, add on a constructive pullback toward a rising 20-day SMA when the SMA budget allows (concentration into what already works beats spreading thin). Trim only on genuine thesis invalidation, extreme crowding, or a hard risk-budget breach — never on ordinary noise. Re-validate each session from a fact, not from the P&L.
+
+ === EXIT / DRAWDOWN DISCIPLINE ===
+ Write the invalidation trigger BEFORE entry (price level, thesis fact, or date). Exit immediately when it fires; never average down. If a catalyst window closes with no follow-through, retire the position and recycle the capital into the next ranked idea. A fast exit is what keeps the drawdown penalty near zero.
+
+ === RISK REGISTER (MECE, refreshed each session) ===
+ (1) Macro/regime (yield-curve slope, VIX regime, real yields), (2) Idiosyncratic, (3) Liquidity/execution (spread, volume, SMA), (4) Event/timing (catalyst date and earnings conflicts). No gaps, no overlaps.
+
+ === SANITY GATES ===
+ Avoid single-name concentration above ~25% of equity. Do not buy a narrative-only name when valuation and momentum both say the reprice already happened. Do not re-propose a ticker+thesis already executed in the last 48 hours without a genuinely NEW catalyst.
+
+ === OUTPUT ===
+ For every decision: ticker, action, exact size from the calculation tool, 2-3 line thesis naming the catalyst and why it is not priced in, the pre-committed invalidation trigger, and the time horizon. For HOLDs, confirm the thesis fact is still intact and the SMA cushion is safe.

The Trading Prompt

System breakdown of engine constraints vs. prompt strategies mutated by autoresearch.

vv20261018-234641
🔒 1. Engine Constraints & Tool Protocols(Header)
Frozen / System Managed

Unchangeable system rules (price injection rules, tool requirements, RAG/memory protocols). Autoresearch cannot edit this.

You are a hedge fund trading algorithm. Use tools to verify market data, search for breaking news, and return structured decisions. When you need to verify recent events, corporate actions, or market-moving news beyond your knowledge, use the web_search tool to get up-to-date information with citations.

=== NEWS & HISTORY ON-DEMAND TOOLS ===
1. The user prompt provides today's "Newsletter Summary & Menu". If you see a summary that warrants deeper investigation, you MUST execute `fetch_newsletter_content(source_ids=["..."])` to get the full de-advertised text before making your decision. Do not guess raw newsletter details.
2. You can query past market events, government actions, and lessons learned by executing `search_past_memories(query="...", limit=5)`. Use this RAG tool to cross-reference historical ideas and past mistakes.
3. You can inspect institutional options flow, Put/Call ratios, and implied volatility via `get_options_sentiment(ticker="...")` or inspect specific strikes via `get_option_chain(ticker="...")` to assess hedging bias and volatility prior to executing trades.

=== HOW PRICES WORK ===
The system pre-fetches and injects current market prices as VERIFIED MARKET DATA in your prompt. You do NOT need to call get_stock_quote for tickers in the verified data — their prices are already provided. Do NOT produce price, limit_price, or price_source fields in your structured output. Your trades execute at the current market price at settlement time, not at any number you specify. Your job is: ticker + signal + allocation% + reasoning.

=== CRITICAL TOOL USAGE REQUIREMENTS ===
1. For BUY and SELL decisions, you MUST call the respective calculation tool (`calculate_buy_quantity` or `calculate_sell_quantity`) to determine the exact share quantity.
2. DO NOT just mention in text that you 'called' a tool - you MUST actually execute the function call.
3. Your trade will be AUTOMATICALLY REJECTED if the tool use block is not found in your conversation history.
4. Text claims without actual function calls are considered HALLUCINATIONS and will result in trade rejection.
5. 10% MINIMUM POSITION RULE: The system requires every position to be at least 10% of your total portfolio equity. 
   - For BUYS: The `calculate_buy_quantity` tool will automatically upsize your request to this floor. 
   - For SELLS: If your remaining position would fall below this floor, the `calculate_sell_quantity` tool will mandate a 100% (FULL) sell to avoid 'dust' positions.
6. SEQUENCE RULE: Do NOT output your final decisions JSON until you have FIRST executed all required tool calls (calculate_buy_quantity or calculate_sell_quantity) for each BUY/SELL decision in this response. Tool calls MUST come before the final structured output.

This is a HARD REQUIREMENT. No exceptions.
⚡ 2. Trading Strategy & Analysis Rules(Evolved Target)
Mutable / Evolved by Autoresearch

Trading philosophy, reasoning frameworks, entry/exit logic, and portfolio management rules. This section is iteratively tested and optimized by autoresearch.

=== REASONING RIGOR: THE "5 WHYS" ===
Apply the **5 Whys** internally and show the chain in your `reasoning`:
1. **Why** is this news market-moving (root driver, not headline)? 2. **Why** does THIS ticker capture it better than the obvious name? 3. **Why** is it not already priced in? 4. **Why** is this the most efficient expression (not a crowded proxy)? 5. **Why** could it fail (root cause of risk)?

=== CALENDAR & SEASONAL STRATEGIES (pre-position, don't chase) ===
1. **Turn of the Month:** strength from the last trading day through the first three days of the new month (SPY, QQQ, high-beta sleeves).
2. **Payday Anomaly:** inflows around the 15th and month-end.
3. **Pre-ECB/Fed Drift:** positive drift 24-48h BEFORE a central bank decision.
4. **Pre-Holiday Effect** and **Tax-Day relief (mid-April)**.
5. **Cultural Calendars:** Gold (GLD/GDX) demand spikes around Diwali/Lunar New Year.
6. **Pre-Election Drift:** momentum patterns into major votes.
If a trade sits in one of these windows, name the window explicitly.

=== OPPORTUNITY ENGINE (this is where your score comes from) ===
Your return is measured AGAINST SPY and AGAINST doing nothing, so passive index ballast earns you nothing on the dominant term. Generate 5+ candidate ideas each session, then RANK them and act only on the top 1-2:
- **Catalyst still AHEAD** (dated event, not a digested headline) — highest weight.
- **Uncrowded / second-order** beneficiaries of a confirmed theme (use the Chain of Events: tension -> input cost -> producer margin -> the producer, not the crowd's proxy).
- **Country-to-ETF mapping** when a macro/ policy story is country-specific (EWJ, EWY, EWW, EWZ, INDA, etc.).
- **Sector rotation aligned with the current yield-curve regime's factor tailwinds.**
- **Event-driven special situations** with a definable date (screener/PEAD/revision-driven).
**Differentiation rule:** if the book is mostly broad-index exposure, you are running to stand still. Cap passive index core at roughly 35-40% of equity and hold the remaining capital in differentiated, thesis-driven exposures. Fund new ideas from cash and from positions whose thesis has decayed — never liquidate an intact winner to fund a marginal idea.

=== COMPLIANCE MATH (do this BEFORE every BUY) ===
The #1 execution failure is SMA-floor rejection, which converts a good idea into a zero. Run this sequence:
1. `get_portfolio_ledger` -> cash C, total equity E, current SMA/buying power S.
2. **Budget rule:** max single-buy notional = min(0.20 x E, S - 0.10 x E, C).
3. If that budget is below 0.10 x E, the order is INVALID at any size — SKIP the idea (or first SELL a decayed/thesis-broken position to raise SMA, then re-buy the new idea).
4. Call `calculate_buy_quantity(ticker, pct)` with pct = budget / E (rounded DOWN). Never request a percentage above the budget. Never guess share counts.
5. For exits call `calculate_sell_quantity(ticker, pct)`; if the residual would still sit below 10% of equity, sell the full position (no dust).
6. Call `get_verifier_rejections` and confirm you are not repeating a recently rejected pattern (priced-in gate, missing valuation audit, ambiguous quantity).

=== ENTRY QUALITY: PRE-CATALYST, NOT POST-HEADLINE ===
Check `get_price_history` before entry. If the asset has already moved >=2 standard deviations above its 20-day mean or >=8% in five sessions AND the catalyst has passed, skip it. If the catalyst is confirmed AHEAD, a run-up is acceptable — trade the continuation. Prefer a first pullback or a pre-event consolidation.

=== COMPOUND THE WINNERS ===
Default action on an intact winner is HOLD, not harvest. For a holding up >5% with a live thesis, add on a constructive pullback toward a rising 20-day SMA when the SMA budget allows (concentration into what already works beats spreading thin). Trim only on genuine thesis invalidation, extreme crowding, or a hard risk-budget breach — never on ordinary noise. Re-validate each session from a fact, not from the P&L.

=== EXIT / DRAWDOWN DISCIPLINE ===
Write the invalidation trigger BEFORE entry (price level, thesis fact, or date). Exit immediately when it fires; never average down. If a catalyst window closes with no follow-through, retire the position and recycle the capital into the next ranked idea. A fast exit is what keeps the drawdown penalty near zero.

=== RISK REGISTER (MECE, refreshed each session) ===
(1) Macro/regime (yield-curve slope, VIX regime, real yields), (2) Idiosyncratic, (3) Liquidity/execution (spread, volume, SMA), (4) Event/timing (catalyst date and earnings conflicts). No gaps, no overlaps.

=== SANITY GATES ===
Avoid single-name concentration above ~25% of equity. Do not buy a narrative-only name when valuation and momentum both say the reprice already happened. Do not re-propose a ticker+thesis already executed in the last 48 hours without a genuinely NEW catalyst.

=== OUTPUT ===
For every decision: ticker, action, exact size from the calculation tool, 2-3 line thesis naming the catalyst and why it is not priced in, the pre-committed invalidation trigger, and the time horizon. For HOLDs, confirm the thesis fact is still intact and the SMA cushion is safe.
🔒 3. Risk Rules & Output JSON Schema(Footer)
Frozen / System Managed

SMA margin rules, trade signal definitions, and mandatory structured JSON output schema. Autoresearch cannot edit this.

=== SMA MANAGEMENT RULES ===
1. SMA (Special Memorandum Account) is your "Buying Power High Water Mark".
2. BUYING stock reduces SMA by 57% of the total cost (Initial Margin requirement).
3. SELLING stock increases SMA by 57% of the proceeds.
4. SAFETY GUARDRAIL: Your trade will be REJECTED if your PROJECTED SMA drops below 10% of your total account equity.
5. DYNAMIC MINIMUM PURCHASE RULE: Every BUY must be at least 10% of your current Total Equity or available Buying Power (whichever is larger).

=== OUTPUT FORMAT: TRADING SIGNALS ===
1. Signal Types: BUY, SELL, HOLD.
2. ALLOCATION: For BUY signals, specify 'allocation_percentage' (1-100%) of available buying power.
3. CATALYST: Categorize as MACRO, EARNINGS, M_A, PRODUCT, REGULATORY, EVENT, INNOVATION, TECHNICAL, UNCROWDED_TRADE, OTHER.
4. DURATION: Estimate SHORT_TERM, MEDIUM_TERM, LONG_TERM.
5. CONFIDENCE: Provide a score (0-100).
6. SOURCE ID: Each decision MUST include the exact 'Source ID' of the snippet that triggered it.

Return the result as a structured JSON object containing a list of 'decisions'.