Correlates $THREE token price action with three.ws’s X (Twitter) posts, and renders an interactive TradingView-style chart with every post plotted as an avatar bubble on the candles — inspired by rohunvora/tweet-price-charts.
generate.mjs # the analyzer + chart generator (Node, zero deps)
data/ # scraped tweets (trythreews + nichxbt), input
assets/ # real X avatars, embedded into the chart as base64
out/
chart.html # ← open this. self-contained interactive chart
chart.json # correlation stats (original posts only)
chart.csv # per-post detail: 1h/4h/24h returns
*-with-replies.* # same, but including replies/retweets
out/chart.html)Self-contained — just open it in a browser (loads TradingView lightweight-charts from CDN; all data + avatars are baked in).
For each post at time T, the entry price is the $THREE hourly candle close at-or-just-before
T. Then +Nh = (close N hours after T − entry) / entry × 100. Price history is hourly
(and 15-minute for the chart) OHLCV from GeckoTerminal for the $THREE/SOL pump.swap pool.
Using median returns (a memecoin’s mean is dominated by fat-tail outliers):
| Window | Post median | Random-hour baseline | Edge | Win rate |
|---|---|---|---|---|
| +1h | −1.25% | −0.59% | −0.66pp | 46% |
| +4h | −1.30% | −1.61% | +0.32pp | 45% |
| +24h | +8.18% | +1.87% | +6.31pp | 59% |
Caveats: overlapping 24h windows inflate significance; reverse causality (we post more around events) can’t be ruled out; single token in an uptrend regime. Suggestive, not causal.
node generate.mjs --accounts trythreews,nichxbt --chart \
data/trythreews_tweets_2026-06-15.json \
"data/nichxbt_tweets_2026-06-15.json" \
"data/nichxbt_tweets_2026-06-15 (1).json" \
"data/nichxbt_tweets_2026-06-15 (2).json" \
"data/i_tweets_2026-06-15.json" \
"data/i_tweets_2026-06-15 (1).json" \
--out out/chart
Flags: --accounts a,b restrict to owned handles · --own original posts only (drop replies/RTs)
· --chart also emit the HTML · --out <base> output path prefix.
Price data: GeckoTerminal (free, no key). No mocks, no synthetic data.