惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
H
Help Net Security
腾讯CDC
T
Tailwind CSS Blog
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
MongoDB | Blog
MongoDB | Blog
宝玉的分享
宝玉的分享
有赞技术团队
有赞技术团队
美团技术团队
雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
博客园_首页
Recent Announcements
Recent Announcements
云风的 BLOG
云风的 BLOG
B
Blog RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
博客园 - Franky
Jina AI
Jina AI

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Which LLM is the best stock picker? I built a benchmark t...
Achal Jhawar · 2026-05-21 · via DEV Community

Achal Jhawar

Every other week there's a new GPT-vs-Claude-vs-Gemini benchmark on coding or math or reasoning. None of them tell you whether the model can actually make a decision under uncertainty, where the answer isn't in the training data and the result shows up two weeks later in a P&L.

So I built a different kind of eval. Seven frontier LLMs, $100,000 of paper capital each, identical tools, identical prompts, identical data. Every Monday they pick stocks. The market grades them.

The project is 1rok. Live leaderboard: investingbench.vercel.app. The clock started January 20, 2026.

The contestants

  • GPT-5.5 (OpenAI)
  • Gemini 3.1 Pro Preview (Google)
  • Grok 4.3 (xAI)
  • DeepSeek V4 Pro
  • GLM-5.1 (Zhipu)
  • Kimi K2.6 (Moonshot)
  • MiniMax M2.7

Each model gets its own isolated Alpaca paper account. Same tool registry, same prompts, same screener output. The LLM is the only variable.

Why this isn't a hedge fund pitch

I want to be upfront. I don't think a weekly LLM-driven portfolio is going to beat the S&P. If it could, hedge funds would already be doing it. Some are; results so far are mixed.

The point of 1rok isn't alpha. It's that "which model should I use" is the most-asked question in AI engineering, and most of the answers are vibes. Coding evals are saturated. Math benchmarks get gamed. I wanted a downstream task where the model has to plan, call tools, synthesize conflicting signals, and commit to a decision, with an objective scoreboard at the end.

Stock picking happens to fit. The fact that everyone has an opinion about it is a bonus.

The pipeline

Every Monday at 9:45 ET, a cron fires and kicks off one run per model in parallel. Each run is 10 agents in 4 stages:

mermaid diagram

Walking through it:

  1. Macro reads the regime: interest rates, sector flows, yield curve, geopolitical news. Then it declares whether we're in risk-on growth or late-cycle caution. That constrains every downstream decision.
  2. Screener runs 4-10 different stock screens (quality, value, growth, defensive) and surfaces 25-30 names. Stocks that pass multiple lenses get priority.
  3. Six analysts work the candidate list in parallel. Each scores every stock 0-100 from a narrow angle.
  4. Orchestrator composites the six scores into one number, applies the macro regime as an adjustment, and assigns A/B/C ratings.
  5. Constructor turns ratings into trade orders. It delegates all portfolio math to dedicated calculation tools, because agents that try to do their own sizing math get it wrong about a third of the time.
  6. Alpaca executes. Sells first to free cash, then buys.

The composite formula lives in one place and looks like this:

composite =
    fundamental   * 0.20  // business quality
  + valuation     * 0.20  // price discipline
  + (100 - risk)  * 0.20  // capital preservation (inverted)
  + technical     * 0.15
  + catalyst      * 0.15
  + sentiment     * 0.10

Enter fullscreen mode Exit fullscreen mode

Risk is inverted on purpose. A high-conviction buy with high tail risk should be smaller, not bigger. The constructor caps any single position at 40%, holds at most 8 names, and won't let cash run above 15%.

Under the hood

How agents actually get data. Each pipeline run spins up its own tool registry. There are ~32 tools across 8 groups: market overview, stock data, screening, technicals, options, earnings, portfolio, web search. An agent calls listTools to see its slice (the Macro agent gets different tools than the Risk agent), then callTool(name, args) returns typed JSON from a handler that knows how to talk to Alpaca, Yahoo Finance, FRED, or Tavily. Retries, rate limits, and circuit breaking live in the handler layer, so agents never have to deal with a 429 or a flaky socket mid-thought.

Two commands, never one. run produces a portfolio-construction JSON artifact. execute reads the artifact and places orders. They're always separate.

bun run 1rok -- run --model gpt-5.5
bun run 1rok -- execute ./results/openai/gpt-5.5/portfolio-2026-04-16.json

Enter fullscreen mode Exit fullscreen mode

run never touches a broker. --live is the only path to real order placement; without it, everything goes to paper-api.alpaca.markets. This means I can re-run any model on last week's data without accidentally trading, and I can audit exactly what the model decided before a single order leaves the box.

What I want to find out

Open questions I'm watching:

  • Does any model consistently beat any other, or is it noise within a year?
  • Do the cheaper models (Kimi, DeepSeek, GLM) underperform, or just trade more cautiously?
  • Do "reasoning" models actually reason better about a multi-step financial decision, or do they just spend more tokens arriving at the same answer?
  • Does any model panic in a drawdown?
  • Does any of them randomly load up on a single stock when they shouldn't?

I don't have answers yet. The whole experiment is about not having answers yet.

How to engage

Star the repo if you want milestones. I'll write up findings as the leaderboard separates.