OpenTraderWorld
MCP server built into a self-hosted trading workspace: journal, backtests, portfolios, news.
Documentation
OpenTraderWorld
Your trading workspace, on your own machine.
A free, self-hosted platform that bundles the tools traders and investors actually use: trading journal, market data and backtesting, portfolios, news, planning. Your data stays on your machine. And if you want it, your own AI agent runs the whole thing alongside you.
Website · Documentation · Install in 2 minutes · Module tour · Suggest a feature
▶ Try the live demo
No account, no install, already full of realistic data. It is a shared sandbox, wiped every 15 minutes.
Nobody needs a new Bloomberg Terminal
Every few weeks another product promises to be "the Bloomberg Terminal for the rest of us". It is the wrong target, because Bloomberg does not sell software.
- A Bloomberg Terminal costs roughly $30,000 per user per year, on two-year contracts. LSEG Workspace, ex-Refinitiv Eikon, sits around $22,000 for the full tier.
- What that money buys is immediacy and access: news in under a second, dealer runs, liquidity, and a closed chat network holding the people on the other side of your trade.
- The screens, the charts, the functions are the wrapper. Nobody signs a $30k contract for the UI.
OpenTraderWorld is not trying to be the next Bloomberg Terminal. It is the workspace around your own decisions: your journal, your portfolios, your backtests, your research, your automations, enhanced by your favorite AI model. Free, on your machine, with the data providers you already pay for (or the free ones).
Why OpenTraderWorld?
- 🆓 Free. No subscription, no paywall, no "pro tier". Free for everyone, whether you trade for a living or on the side. The idea behind it: get profitable before spending a dime.
- 🔒 Private and self-hosted. It runs on your computer or your server with Docker. No account, no cloud, no telemetry. Right after install it only answers on localhost, until you decide otherwise.
- 🧩 Modular. 25+ modules. Install what you use, detach the rest.
- 🔁 Updated constantly. New modules and improvements land regularly. The app tells you when a version is out, updating is a couple of commands it shows you, and your data always survives the upgrade.
- 🗳️ Built with its users. Feature ideas come from the people using it. Suggest yours, vote on other people's, watch the roadmap move. See Contributing ideas.
- 🌍 7 languages. English, French, German, Spanish, Italian, Portuguese, Chinese.
- 🤖 AI built in, on your terms. There is a built-in assistant that chats with your own data. You bring the provider (Anthropic, or any OpenAI-compatible endpoint), and it gets memory, skills and tool access scoped by token. There is also a built-in MCP server, so external agents can read or update your modules through that same token-scoped gateway. Both are off until you turn them on. Your keys are encrypted at rest and never reach the browser.
- ⚙️ Automate as much or as little as you like. The automator turns your routines into scheduled workflows: imports, reports, market scans, alerts, daily reviews. Any of them can hand a step to your own AI model, or be driven by it from end to end. You stay in charge the whole way: nothing runs, sends or writes anything you did not switch on yourself.
- 🔑 Secrets stay sealed. An encrypted Vault holds the credentials the app needs on your behalf. Encrypted at rest, write-only once saved, and plugged into any module by reference so you never paste them twice.
Quick start
You need Docker (macOS, Linux or Windows).
curl -fsSL https://raw.githubusercontent.com/G-OTW/OpenTraderWorld/master/install.sh | bash
The installer asks a few questions, generates strong secrets, pulls the prebuilt images and starts the stack, creates your admin account and prints its password once. Then open http://localhost:5454 and sign in. If you want the long version (manual setup, headless servers, LAN/HTTPS/public exposure, backups), it is all in the documentation.
If the page won't load over plain HTTP. Browsers with HTTPS-only mode (Chrome/Edge HTTPS-First, Firefox HTTPS-Only, Safari) rewrite
http://intohttps://and then cache that redirect, so a LAN install answers nothing at all. Open the address in a private window to confirm that is what is happening, then allow HTTP for that host. Or switch to the LAN + HTTPS mode in Settings → Network and get a real certificate.
Try it without installing
There is a public sandbox at demo.opentraderworld.com, also linked from the website. No account, no install, and it comes seeded with realistic data so you land in an instance that looks used rather than empty.
One thing to keep in mind: it is shared. Everything you type is visible to other visitors, the whole database is wiped and re-seeded every 15 minutes, and settings, connectors and secrets are read-only. It runs on a small free-tier server with free AI models, so it is slower than a local install. For anything real, install it. Two minutes.
What's inside
Every module ships with the app. Install what you use, detach the rest.
Trading
| Module | What it does |
|---|---|
| Trading Journal | Trade log with templates, fee schedules, multi-currency FX and performance stats. |
| Trading Routines | Recurring session checklists: pre-market prep, in-session discipline, post-market review. |
| Mindset | Daily mood and discipline check-ins, with trends over time. |
Market data and analysis
| Module | What it does |
|---|---|
| Historical Data | Download OHLCV history from several providers into local datasets, or import your own file. |
| Historical Data Visualization | Candle, OHLC, line and Renko charts with indicators, live or on demand, on any instrument a connector serves. |
| Backtest | Signal, grid and DCA strategies with sizing, costs, an optimizer and paper trading forward. |
| Quant Tools | Risk and return analytics: VaR, correlation, efficient frontier, position sizing, Kelly. |
Portfolios and money
| Module | What it does |
|---|---|
| Watchlists | Symbol watchlists with live prices, day changes, sparklines and notes. |
| Portfolio Tracker | Live portfolio value with a buy/sell ledger and holdings priced daily. |
| MyWealth | Net worth across everything you own: accounts, property, crypto, valuables. |
| Managers' Portfolios | Superinvestor 13F holdings, browsable and snapshotable. |
| Tax Calculator | Trading and investing tax estimates from country templates. |
| Subscriptions | Your recurring subscriptions and what they cost you. |
News and research
| Module | What it does |
|---|---|
| News | RSS and JSON-API news aggregator with polling dashboards. |
| Mailbox | Newsletters, market news and broker mail read from your own IMAP mailbox, tracker-free. |
| Economic Calendar | Upcoming macro events. |
| FinanceDatabase | Search 300,000+ instruments locally, and file your favorites in folders. |
| Resources | Bookmark library for books, links and references. |
| Community Docs | Guides written by the community, synced and readable offline. |
Notes and organization
| Module | What it does |
|---|---|
| Editor | Rich document editor with folders and table/kanban/gallery databases. |
| ToDo | Task list with due dates and categories. |
| Goals | Goals with metric tracking and deadlines. |
| Calendar | Personal event calendar, with reminders, todos and goals overlaid on it. |
| RemindMe | Reminders with in-app notifications and email/Telegram/Slack/Discord channels. |
| Time Tracker | Project timers with budgets and hourly-rate value. |
| Prompt Store | Searchable library of reusable AI prompts, tagged, rated and versioned. |
| Webhooks | Private inbound URLs that turn external alerts into notifications. |
| Automator | Scheduled workflows: call your own API or any URL, ask an AI step, transform, notify. |
AI
| Module | What it does |
|---|---|
| Agent | Built-in AI chat assistant. Bring your own provider, switch model or prompt mid-conversation, and let it act on your data through MCP, with memory, skills and external MCP servers. Reachable from a floating chat on every page. |
The full tour, with details, is in the module docs.
Backtesting: signals, grid, DCA
One engine, three ways to describe a strategy. No code.
- Signals. Entry and exit rules from indicators, price and values, long or short, with stops, pyramiding, and sizing by percent of equity, risk per trade, Kelly or equity tiers. Build your own indicators, and the chart draws the same ones.
- Grid. A ladder of levels between two bounds, long, short or neutral. Each cell buys low and sells one level up.
- DCA. A weighted basket bought over time, never rebalanced: recurring contributions, buy tranches on a dip, sell rules on a gain objective. Measured like a savings plan, with IRR and a deposit-adjusted drawdown.
Run any of them on one instrument or a whole portfolio, with exposure limits and a per-asset breakdown.
Optimizer
Take a run and vary its parameters: indicator lengths, thresholds, stops, sizing, costs, portfolio limits, grid settings, DCA amounts, excluded weekdays. Each gets a from / to / step.
- It prices the job first, from what past runs measured on your own machine. Stop at any point and keep what is computed.
- Rank on Sharpe, Sortino, return, profit factor, win rate, expectancy, drawdown, trades or out-of-sample return. Any column re-sorts after.
- The spread matters more than the winner: worst, average, best, and how many variants came out positive. One good number surrounded by terrible neighbours is noise.
- A multiple-testing haircut puts the best Sharpe against the bar the best of N worthless strategies would clear anyway. Below it, the winner is explained by the number of tries.
- Click any variant to read its full backtest. Nothing is stored until you keep it.
Add an in-sample / out-of-sample split and the two stat blocks sit side by side. A wide gap between them is overfitting.
Paper trading: the backtest, left running forward
Press one button on a run you like and it keeps going on new candles. There is no second engine and no serialized simulator to drift: each tick reloads the window, runs the ordinary backtest, and diffs the trades against what is already stored. A session opened from a result reproduces that result exactly.
- Its own schedule: every N minutes, daily, weekly, monthly or once, in your timezone.
- Live alerts on entries and exits, or a period summary instead. Alert on every tick, only when something changed, or never.
- Digest it: hourly, daily or weekly, so a two-minute rule does not mean a two-minute ping.
- Your wording, not ours. Entry, exit and summary messages are templates you write, with a preview against a sample trade before you save.
- Anything the app could not deliver waits in the session inbox. You read it at the next login.
Filter alerts down to the tickers you care about, and pick which channels a session pushes to.
Data connectors
One connector list for the whole app. A connector is a provider account, its credentials (typed in or plugged from the encrypted Vault, write-only once saved), an optional request limit, and the modules allowed to use it. Modules have no provider settings of their own.
| Provider | Credentials | Asset types | Symbol search | Live stream |
|---|---|---|---|---|
| Binance | none | crypto | yes | yes |
| Kraken | none | crypto | yes | yes |
| Coinbase | none | crypto | yes | yes |
| Binance USDⓈ-M Futures | none | crypto | yes | yes |
| Bitget | none | crypto | yes | yes |
| OKX | none | crypto | yes | yes |
| Yahoo Finance | none | equity, ETF, index, crypto | yes | no |
| Alpha Vantage | API key | equity, ETF, crypto, FX | yes | no |
| EODHD | API key | equity, ETF, FX, crypto | yes | no |
| Alpaca | key + secret | equity, crypto, options | yes | yes (based on your broker subscription) |
| Massive (Polygon.io) | API key | equity, ETF, options, futures, crypto, FX, index | yes | yes (based on your broker subscription) |
| OANDA | API token + account id | FX, CFDs | yes | no |
| TradeStation | OAuth: client id, secret, refresh token | equity, ETF, options, futures, index | by symbol | no |
| FOREX.com (StoneX) | login + AppKey | FX, CFDs | yes | no |
| Capital.com | API key + identifier + password | FX, indices, shares, crypto (all CFDs) | yes | yes |
| Interactive Brokers | none (your own gateway) | equity, ETF, crypto, FX, index, futures, options | yes | yes (based on your broker subscription) |
Every provider connects directly, with an API key or none at all. Interactive Brokers is the exception: you run IB Gateway or TWS yourself and the connector stores a host and a port. OANDA, TradeStation, FOREX.com and Capital.com are broker feeds: they read the prices of the account you already have there, so they ask for that account's credentials. Details in the connectors guide.
Live feeds
| Provider | Price updates from | Live |
|---|---|---|
| Binance | trades | every timeframe |
| Kraken | trades | every timeframe |
| Coinbase | trades | every timeframe |
| Binance USDⓈ-M Futures | klines | every timeframe |
| Bitget | candles | every timeframe |
| OKX | candles | every timeframe |
| Capital.com | bid and ask candles, charted at their mid | every timeframe |
| Alpaca | trades | every timeframe |
| Massive | trades (quotes on FX, index values on indices) | every timeframe, futures excluded |
| Interactive Brokers | trades (midpoint on cash FX and crypto, which have no tape at IB) | every timeframe |
Missing a provider? Ask for it and it gets added.
Notifications
These are the notification methods available today. More are planned: if your preferred one is missing, ask for it.
| Channel | What you provide |
|---|---|
| your own SMTP server | |
| Telegram | a bot token and a chat id |
| Slack | an incoming webhook URL |
| Discord | an incoming webhook URL |
Secrets are sealed on save and never shown again. What can notify you: paper trading sessions, watchlist alerts, reminders, finished or parked data downloads, new mail, journal jobs, inbound webhooks, and any automator workflow. Everything is off until you switch it on, and in-app notifications work without configuring a single channel.
⭐ Enjoying it? Help it grow
OpenTraderWorld is free and built in the open. If it is useful to you, the easiest way to give back costs nothing:
- Star the repo. It is a quick signal, and it helps other people find the project.
- Share it. A word to a fellow trader, a link in your community, a mention anywhere. It helps more than you would think.
No pressure. Even just trying it out and telling a friend means a lot. 🙏 Got ideas, or found a bug? See Suggest, vote, contribute below.
💡 Suggest, vote, contribute
This project grows on user feedback:
- Suggest a feature or a module. Head to opentraderworld.com/suggestions and describe what you are missing and how you would use it.
- Vote. 👍 the suggestions you want most on the website. Popular requests get prioritized.
- Report bugs. Open an issue with the symptom and a few log lines.
- Write for the community. Guides written in the app's Editor can be submitted for publication in the shared Community Docs library, where every install can read them.
Project links
| Where | What you'll find |
|---|---|
| opentraderworld.com | Project home: module overview, community guides, roadmap voting, demo. |
| opentraderworld.com/tools | The 25+ modules by domain, in plain language. |
| opentraderworld.com/docs | Community Docs: trading guides written by users, synced into every install. |
| opentraderworld.com/suggestions | Suggestions and polls: propose features, vote on the roadmap. |
| demo.opentraderworld.com | Live shared demo, reseeded every 15 minutes. |
| Documentation | Install, configuration and module reference. |
| GitHub | Source, releases, issues. |
Under the hood
| Layer | Tech |
|---|---|
| Backend / core | Rust (Axum): API, scheduler, background jobs |
| Frontend | SvelteKit single-page app |
| Data | PostgreSQL, the only place your data lives |
| Reverse proxy / TLS | Caddy, automatic HTTPS certificates |
| Deployment | Docker Compose, non-intrusive and quickly rebuilt |
OpenTraderWorld/
├── install.sh # one-command installer (fetches deploy/, runs setup)
├── deploy/ # docker-compose stack, setup.sh, Caddy config
├── core/ # Rust workspace (API, store, scheduler, feeds…)
├── frontend/ # SvelteKit app (modules UI)
└── docs/ # documentation site (VitePress)
Status
Actively developed. It is usable today and moving fast. Check Settings → Update app in the app to know when a new version is out.
Disclaimer
This software is for educational and informational purposes only. It is not financial, investment, or trading advice. USE IT AT YOUR OWN RISK. The author and any affiliates accept no responsibility for your trading or investment results, or for any loss or damage arising from use of this software. Never risk money you cannot afford to lose. There will be bugs: the software is provided "as is", without warranty of any kind. You alone are responsible for how you use it and for the decisions you make with it.
License
FSL-1.1-MIT (Functional Source License). Free for everyone, including commercial use, self-hosting at work, modification, redistribution and forks. The one thing it does not grant is a Competing Use: selling the software, or offering it to others as a paid product or a hosted service. Each release turns into plain MIT two years after it is published.