Skip to main content

WaveDesk

Market-analysis desk for stocks, oil, gold, and other assets. Seven analysis agents (Elliott Wave, EMA, Fibonacci, VWAP, ADX, Price Action/S&R, monthly RSI) run in parallel and feed a chief-analyst synthesizer, on top of a forward volatility forecast, a Monte Carlo outcome simulation, risk-managed position sizing, portfolio context, and a walk-forward backtest.

The math is deterministic and reproducible; Claude provides the judgement calls, anchored to the numbers the engine hands it.

ContentsRequirements · Quick start · Commands · How it works · Web UI · Decision-support layer · Disclaimer


Requirements

Python 3.10 or newer
Claude Required — a Claude Code subscription or an Anthropic API key
Platform macOS · Linux · Windows

WaveDesk runs entirely on your own machine — no server, no shared account, no telemetry. Claude is not optional: every forecast is produced by the seven-agent ensemble, and WaveDesk refuses to start without it rather than fall back to a lower-quality non-AI analysis.


Quick start

1 · Install

pipx install wavedesk
Other install options
pip install wavedesk                 # into the current environment
pip install "wavedesk[plot]"         # + matplotlib, for the CLI --plot chart

pipx is recommended: it installs WaveDesk into its own isolated environment and puts the wavedesk command on your PATH, so its dependencies (pandas, numpy, FastAPI, …) can't collide with your other projects.

2 · Connect Claude

Pick one — WaveDesk detects it automatically.

Option How Billing
Claude Code subscription Install the claude CLI and log in Your existing plan — no API credits
Anthropic API key export ANTHROPIC_API_KEY=sk-ant-... Pay-as-you-go credits (console)

A .env file in the directory you launch from is also read.

If neither is present, the CLI exits with setup instructions and the web UI shows a "WaveDesk needs Claude" screen instead of the desk.

3 · Run

wavedesk

This starts the desk and opens your browser at http://127.0.0.1:8000.


Commands

Command What it does
wavedesk Start the desk and open the browser
wavedesk serve --port 9000 --no-open Web server only, on a chosen port
wavedesk analyze gold --json One-shot CLI forecast
wavedesk backtest gold --period 5y Walk-forward track record

Run any command with --help for its full options. --help works even before Claude is set up.


How it works

Price history ─► Structure ─► Levels ─► Seven agents ─► Verdict

Noise becomes structure. Raw candles collapse into the swing highs and lows that actually define the move.

Structure becomes evidence. The wave count is tested against Elliott's three hard rules. A count that breaks them is rejected, not rationalised.

Evidence becomes levels. Fibonacci projections turn the surviving structure into a concrete target and the price that would prove it wrong.

Levels become a verdict. Seven specialists each read a single indicator in their own lens; a chief analyst reconciles the disagreement into one call — direction, target, invalidation, confidence, horizon, and the reasoning.

The arithmetic is reproducible. The judgement is Claude's. Take the judgement away and WaveDesk doesn't run — see Quick start.


Configuration

Set these in your environment or a .env file next to where you run WaveDesk.

Variable Default Effect
ANTHROPIC_API_KEY Use the Anthropic API backend
WAVEDESK_LLM_BACKEND auto Force cli or api instead of auto-detecting
WAVEDESK_ANALYST_CONCURRENCY 6 How many analyst calls run in parallel

auto prefers the API when a key is set, otherwise the claude CLI subscription. The result card's Engine footnote shows which one answered.

Driving an app from the claude CLI counts against your Claude Code usage limits. Keep it to personal/light use.


Web UI

A warm "commodity desk" web interface: pick an asset, choose the lens, and read the waves. FastAPI serves both the UI and the JSON API.

wavedesk                                # → http://127.0.0.1:8000, opens your browser
wavedesk serve --port 9000 --no-open    # pick a port, don't open the browser

Open the URL, click Gold (or Oil, Bitcoin, S&P 500, …) or type any ticker, tune the history/candle/swing controls, and hit Read the waves. You get a verdict badge, target & invalidation levels, a hand-drawn chart with the ZigZag pivots overlaid, the impulse-rule check, and the model's rationale.

Command line

# Friendly names: gold, oil, btc, silver, sp500, nasdaq ... or any ticker
wavedesk analyze gold
wavedesk analyze oil  --period 2y --interval 1wk --plot
wavedesk analyze AAPL --threshold 0.04 --json

Options

Flag Default Description
--period 1y History window (6mo, 1y, 2y, 5y, ...)
--interval 1d Candle size (1d, 1wk, 1h, ...)
--threshold 0.05 ZigZag swing size as a fraction (5%)
--model claude-opus-4-8 Claude model id
--plot off Save a PNG chart with pivots overlaid
--json off Emit raw analysis + forecast JSON

Decision-support layer

A direction is not a decision. Three deterministic modules close that gap — none of them consult the LLM, so every number reproduces exactly.

Track record

The signal is only ever shown what was knowable on the day.

Walk-forward and free of look-ahead, scored on independent windows: hit rate, expectancy, performance against simply buying and holding, how often reality landed inside the predicted range, and which indicators earned their place.

It grades the reproducible core, not Claude's judgement — a floor beneath the tool, not a forecast of it. Costs and slippage are excluded.

Position sizing

The stop is the analyst's own invalidation level, so the worst case is bounded before the position is sized.

Conservative, moderate, and aggressive profiles each fix how much capital one idea may risk, how large a single position may grow, and the least reward worth accepting for that risk. Anything below the bar is flagged skip rather than sized.

Portfolio context

A good idea in isolation can still be a bad idea in your book.

Correlation against what you already hold surfaces concentration you may not have noticed — and shrinks the suggested position as that overlap rises.

See the disclaimer on what these numbers are and aren't.


☕ Support

WaveDesk is free, runs entirely on your own machine, and takes no cut of anything. If it earned you a better decision — or just saved you an afternoon — you can say thanks:

Buy me a coffee


Disclaimer

⚠️ WaveDesk is a decision-support and research tool — not investment advice, and not a licensed adviser.

Markets are not predictable. Every signal, target, and probability it produces requires independent validation and your own risk management. Providing personalized advice for compensation requires registration with the relevant regulator (e.g. SEBI RIA/RA in India, SEC or state RIA in the US); WaveDesk holds no such registration and none of its output constitutes a recommendation.

Backtest figures exclude costs and slippage, score only the deterministic layer, and are not a promise of future performance.

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wavedesk-0.1.2.tar.gz (55.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wavedesk-0.1.2-py3-none-any.whl (62.4 kB view details)

Uploaded Python 3

File details

Details for the file wavedesk-0.1.2.tar.gz.

File metadata

  • Download URL: wavedesk-0.1.2.tar.gz
  • Upload date:
  • Size: 55.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for wavedesk-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d4488f44bcd13dd193a92fc12535b5449550f4111ff3b65fc9a5da2c03ec17ff
MD5 04ae97090b9658c8310f412a0e3c1b5e
BLAKE2b-256 13c4b3461336f67bc41e6a2a21ef8f667842c5e59e10d8d3b416e3f955239ca4

See more details on using hashes here.

File details

Details for the file wavedesk-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: wavedesk-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 62.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for wavedesk-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ec038944959aee3e8ef15842b145ba2551ad481a2baf38b6114f6caeb73160e0
MD5 c709c39292334e844c11e1030503f5df
BLAKE2b-256 6bcb544bb0973e051f3e82cca005445135da0229ce9ff261561948810e96bb61

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page