AI Engineer NYC 2026
Join AI Engineer and Major League Hacking (MLH) on Sunday, October 11, for a full day of building, experimenting, and meeting fellow AI engineers.
MalalphAI
Turning talk into direction: Nimble + Gemini turn live FX forum chatter into odds on where the dollar is heading.
About the project
MalalphAI
Turning talk into direction.
Live demo: https://zhanghaoquan.github.io/malalphai/
MalalphAI (Mala Alpha AI) turns FX forum chatter into odds on where the US dollar is heading. Nimble brings in live forum threads, Gemini reads every comment, and a small Bayesian “pot” works out the probability that USD goes up, down or sideways against EUR, JPY, GBP and CAD over 5, 22 and 66 days.
Like a mala hot pot, you season it yourself. Every author is a chef with a track record. Trust the chefs who’ve been right, turn down the ones who haven’t, and even trust someone’s bullish calls more than their bearish ones.
Why
Great ideas come from great data. Every day, thousands of traders post their views on forums like ForexFactory. That’s a huge, free, real-time sentiment signal, but it’s buried under jokes, politics and reposts, and nobody keeps score of who was right. MalalphAI collects it, cleans it, scores it, and remembers.
What it does
- Shop (Nimble): you add forums to your pantry. Nimble fetches the threads past bot protection and returns clean markdown with every author, timestamp and permalink.
- Taste (Gemini): Gemini reads each comment and returns structured JSON: who said it, when, which pairs it covers, and the probability of down / sideways / up for each horizon. Jokes and politics are skipped, each with a reason.
- Cook (Bayes): starting from a 16 / 68 / 16 prior (a normal curve split at ±1σ), each opinion shifts the odds. The shift is weighted by the chef’s hit rate × your trust × how fresh the comment is.
- Serve: the buffet page shows the pot for 4 pairs × 3 horizons, every opinion behind it, and a full trace and lineage for each one, all the way back to the source comment.
Real run (11 Oct 2026)
| Step | Result |
|---|---|
Nimble Search (include_domains: forexfactory.com) |
4 searches found the long-running USD/JPY, USD/CAD, EUR/USD and GBP/USD trading threads |
Nimble Extract (vx10 stealth browser, 3s wait) |
37 pages from Cloudflare-protected ForexFactory (news, story threads, forums) plus r/Forex’s official RSS feeds (vx6). 519K chars of markdown, every page HTTP 200, median 5.7s per page, run in parallel |
| Comments parsed from Nimble’s markdown | 235, each with author, time and permalink ID |
Gemini (responseSchema, Flash, falling back to Flash-Lite on 429/503) |
36 currency calls kept, every skip explained. 148K tokens in, 16K out, median 3.7s per thread |
| Dedupe | Comment IDs merge repeats: 38 readings became 28 dishes |
| Pot | 4 pairs × 3 horizons, with every number traceable to its source comment |
Example: eqshack on ForexFactory wrote “Sell usd … Oil down - inflation down - no rate hike - dollar down - stocks up.” Gemini read it as USD-bearish on all four pairs: “Expects lower oil and inflation to prevent rate hikes and push the dollar down.”
How the kitchen works
flowchart LR
subgraph Shop["1 · Shop — Nimble"]
P[Pantry of forums] --> S[Nimble Search<br/>find FX forum threads]
S --> E[Nimble Extract<br/>vx10 stealth + wait, vx6 for RSS → markdown]
P --> E
E -.-> C[Nimble Crawl<br/>whole forums · next]
end
subgraph Taste["2 · Taste — Gemini API"]
T[Trim to comments] --> G[Gemini structured output<br/>author · time · pairs · P down/side/up × 5d/22d/66d]
G --> D[Dedupe<br/>comment ID · embeddings next]
end
subgraph Cook["3 · Cook & serve"]
B[Bayesian pot<br/>prior 16/68/16] --> J[pot.json] --> W[Buffet page]
end
E --> T
D --> B
W -.-> K[Scorekeeper · next<br/>hit rate vs real ±1σ move] -.-> B
Update rule: log P(k) = log prior(k) + Σ wᵢ · log(qᵢ(k) / prior(k)), where wᵢ = chef weight × trust(up|down) × 0.5^(age / half-life). The half-lives are 2, 7 and 20 days for the 5d, 22d and 66d horizons. A chef’s weight starts from a Beta(2,2) prior on their hit rate.
Forum posts echo each other, so each pot’s weights are scaled so they never add up to more than 3 independent voices, and no single post counts as more than one. That keeps a pile-on from looking like certainty.
Pair convention: USDJPY = yen per dollar (≈158). “Up” always means the USD strengthens.
Built with
AI tools
Prize Categories Entered
- Submitted

Best Use of Gemini API
Gemini isn't a chatbot bolted onto this project; it does the judging. It reads messy, sarcastic, multilingual-style forum chatter and decides, comment by comment, whether there's a currency call, which pairs it covers, how confident to be, and why. Without that judgment the pipeline would just be a scraper; with it, the output is a forecast.
- Event prizeSubmitted
Best Use of Nimble
Most teams will use Nimble to scrape a product page or a search result. MalalphAI uses it to capture something no API sells: what traders are saying right now, who said it, and when. It then turns that into a forecast in which every number traces back to the Nimble request that fetched it. The prize asks for "live web context turned into something useful", and that's this project's whole design.