launchwatch-detector
Detects manufactured pumps on pump.fun — tokens pushed up by bots in a nearly perfect straight line and then
emptied in a single block — from ordinary 1-minute candles. This is the detector behind
launchwatch.dev (live dashboard, research note at /research.html, JSON feed at
/data/orchestrated.json).
Pure Python, no third-party dependencies, causal (no look-ahead), MIT licensed.
Why
A recurring class of pump.fun tokens shows a fingerprint no organic market produces: nearly every 1-minute return is positive, returns have almost no variance, the buy/sell count ratio is unnaturally stable, and log-price fits a straight line with R² ≥ 0.98. In our observation (Sept 2026, ~900 tokens) close to 90% of them ended in a coordinated dump — dozens of wallets selling in the same block, price −99% inside one second. No sell rule reacting to price can escape it, so the only useful warning is before buying.
Install / run
pip install -e . # or just copy the launchwatch_detector/ directory
python -m launchwatch_detector examples/CRC_manufactured.csv examples/JJQ_organic_second_wave.csv
Output (abridged):
{"manufactured": true, "detected_utc": "2026-09-04 21:30 UTC", "peak_gain_pct": 4.5,
"collapse": {"utc": "2026-09-04 21:42 UTC", "drop_pct": -99.99, "sol_volume": 2781.3, "sells": 49},
"minutes_to_collapse": 12.0, "file": "examples/CRC_manufactured.csv"}
{"manufactured": false, "file": "examples/JJQ_organic_second_wave.csv"}
API
from launchwatch_detector import early_signal, find_collapse, analyse
sig = early_signal(bars, window=8, min_r2=0.98) # -> (minute_ms, close) or None, causal
col = find_collapse(bars, from_ms=sig[0]) # -> {"minute_ms", "drop_pct", "sol_volume", "sells"} or None
analyse(bars) # both, plus peak gain and minutes-to-collapse
bars is a list of dicts with minute_ms, open, high, low, close, sol_volume, buys, sells (see examples/*.csv;
buys/sells are trade counts in the minute). Any source of 1-minute candles with trade counts works — the reference
deployment builds them from a pump.fun trade stream.
Definitions (same as the live site)
- manufactured: within the last
window(8) bars — share of positive 1-min returns ≥ 0.9, coefficient of variation of returns < 0.5, standard deviation of buy/sell ratio < 0.15, R² of log-price vs time ≥ 0.98, total move > +2%. - collapse: a 1-minute bar whose low is below 40% of the previous close (single-block dump), searched up to 6 h after detection.
Limitations
- Needs ≥ 8 minutes of the pattern; buyers in the first minutes are not warned in time.
- ~10–15% of detections fade instead of collapsing. Every detection is manufactured; not every one is dumped.
- Tuned on pump.fun bonding-curve tokens; thresholds may need adjustment for other venues.
Examples
examples/ contains three real 1-minute series derived from public on-chain data:
CRC_manufactured.csv and ARROW_manufactured.csv (both collapsed by 44 wallets in one block) and
JJQ_organic_second_wave.csv (an organic token, for contrast).
Source
Canonical repository: https://github.com/launchwatch/launchwatch-detector · mirror: https://gitlab.com/launchwatch/launchwatch-detector. Releases on PyPI as launchwatch-detector.
License
MIT — see LICENSE.
日本語
pump.fun で繰り返し現れる「演出型パンプ」(ボットが価格をほぼ完全な直線で吊り上げ、同一ブロックでプールを空にする型)を、 普通の 1 分足から検出する純 Python ライブラリです。launchwatch.dev の検出器そのもので、依存なし・ 因果的(後出しなし)・MIT ライセンス。使い方は上の英語の節と同じです。判定の定義(8 本の窓、R² ≥ 0.98、消滅=安値が直前終値の 40% 未満)は サイトと同一です。検出には 8 分以上のパターンが必要で、検出のうち 1〜2 割は消滅せずに減衰します。
Metadata
Release files for launchwatch-detector 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| launchwatch_detector-0.1.0.tar.gz | 7.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| launchwatch_detector-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.6 kB
Release files / launchwatch_detector-0.1.0.tar.gz
| Download URL | launchwatch_detector-0.1.0.tar.gz |
|---|---|
| Size | 7.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
37c101ed09f67fcadf801322e95e13b45e6fbd168cb505939ea74cd088bbd643
|
|
BLAKE2b-256 checksum How to use checksums |
378d84fc908a3642c46d36bc2b50040a36da8760d76ab9d3606242b3119a957c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / launchwatch_detector-0.1.0-py3-none-any.whl
| Download URL | launchwatch_detector-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
73a6e4a922dfb1fec3b6de001099fb2ac392e4471a258eecf67b5baf8d797426
|
|
BLAKE2b-256 checksum How to use checksums |
0db149a83da9546984186bb4271f2791f4c6924484e4aea597bff18dc01c3bd0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|