Imagine the market as a city full of cursed spirits: sudden price spikes, rumor chains, biased headlines, and noisy signals. Jujutsu-Quants is your dojo. Each agent is a sorcerer with a specialty — one senses anomalies, another reads the news, another questions the sources, another checks bias, and so on. The orchestrator leads the squad so your hypothesis doesn’t walk in alone.
You bring a trading hypothesis. The squad brings evidence, contradictions, and confidence. Together, you exorcise bad ideas — and level up the good ones.
- Live quotes via Alpha Vantage / FMP (with env keys), Yahoo Finance scrape fallback
- Article fetching from URLs (server-side parsing)
- Agents: anomalies, summaries, diversity, breaking alerts, bias, sentiment, Q&A
- REST API (FastAPI) + React frontend
- Install
pip install -r Jujutsu-Quants/requirements.txt
- (Optional) API keys
$env:ALPHA_VANTAGE_API_KEY = "YOUR_KEY"
$env:FMP_API_KEY = "YOUR_KEY"
- Run
uvicorn Jujutsu-Quants.app.adk.main:app --host 0.0.0.0 --port 8000 --reload
Open docs: http://localhost:8000/docs
Endpoints:
- Simple (no JSON):
GET /api/v2/report/simple?symbols=AAPL,TSLA&urls=<url1>,<url2>&question=...
- JSON body:
POST /api/v2/report
{
"symbols": ["AAPL", "TSLA"],
"market_data": [],
"news_articles": [],
"news_urls": ["https://...", "https://..."],
"question": "Any notable moves?"
}
cd Jujutsu-Quants/frontend
npm install
set "REACT_APP_API_URL=http://localhost:8000" && npm start
Frontend: http://localhost:3000 (ensure REACT_APP_API_URL
is set to http://localhost:8000)
Jujutsu-Quants/app/adk/agents/
– small agentsJujutsu-Quants/app/adk/orchestrator.py
– runs the workflowJujutsu-Quants/app/services/
– market data + article fetchJujutsu-Quants/frontend/
– React app
- Set
PROJECT_ID=letsstock-with-ai
if needed by any service/tooling. - Works offline with manual
market_data
/news_articles
, or online withsymbols
andnews_urls
.
- Backend responds but dashboard is empty: confirm frontend uses
REACT_APP_API_URL=http://localhost:8000
. - CORS issues: backend enables
allow_origins=["*"]
; restart backend if changed. - Empty submission rejected: backend returns 400 if you send no
symbols
,market_data
,news_articles
,news_urls
, orquestion
.
- LangChain: add retrievers/tools within agents without changing the public API.
- LlamaIndex: build indexes/graphs for news corpora; call from agents.
- Google ADK: enable cloud agent runtime by setting
ADK_MODE=1
and installing ADK deps; the orchestrator auto-switches.
These are optional; default code runs with plain Python for easy local development.
Provide in issues:
- Exact backend request (curl) to
/api/v2/report
or/api/v2/report/simple
- Backend logs snippet
- Frontend console error
- Expected vs actual result