Orakuru bonding-curve analytics
Proof notes for an on-chain data analyst application. This page only restates what is in the public repo and what test_pipeline.py prints on its synthetic fixture. It is not a live Orakuru dashboard.
Honesty caveat. Every figure below comes from the synthetic book loaded by test_pipeline.py — two curves, nine swaps, in-memory DuckDB. These are not live chain stats, not on-chain production metrics, and not a measured Orakuru extract.
Repo: itw-code/orakuru-bonding-curve-analytics (public, branch main, commit 4dcd3f1).
Synthetic fixture dashboard
Static visualization of the rows test_pipeline.py printed on its synthetic book. Not a live Orakuru, Dune, or protocol command center. Spec placeholders from dashboards/executive_dashboard_spec.md (42 curves, 18.4 BNB fees, etc.) stay omitted.
Curves in fixture
2
synthetic book size
Swaps in fixture
9
loaded into DuckDB
Distinct traders
7
raw = dim_wallets
Assertions
5 / 5
invariants passed
Curve fill (printed)
Only 0xnova fill is printed by the suite. The test-file comment “~45% fill” for the second curve is not shown as a result.
Token velocity index (V)
Bar scale ends at 0.5 — the start of HEALTHY_CIRCULATION. Both printed rows sit in MODERATE_VELOCITY (0.1–0.5).
Turnover rate %
Printed turnover_rate_pct from assertion 4. Bar scale ends at 100.
Wallet flags printed by the suite
Only the addresses the assertions print — not a full wallet census.
Sniper cohort
0xsniper_1 · 0xsniper_2
is_sniper = 1, cohort SNIPER
Wallet segment
0xwhale_1 → WHALE
from dim_wallets on this fixture
What the analysis is
A dbt-style pipeline (staging views, intermediate state, Kimball marts) plus three Dune SQL files. It models three things for a bonding-curve launchpad:
-
Curve state and graduation
Virtual reserves, spot price, and fill percent capped at 100 when collected base reaches the graduation threshold. Status becomes
GRADUATEDat that cap. See int_bonding_curve_state.sql and 01_bonding_curve_realtime_monitor.sql. -
Sniper clustering
A wallet is tagged
SNIPERwhen its first trade is within 2 blocks of curve creation. See int_wallet_clustering.sql and 02_wallet_clustering_and_snipers.sql. -
Token velocity
Daily
V = base volume / implied market cap, plus turnover (tokens traded / supply). Tiers in int_token_velocity.sql:HYPER_VELOCITYat V ≥ 2,HEALTHY_CIRCULATIONat V ≥ 0.5,MODERATE_VELOCITYat V ≥ 0.1, otherwiseSTAGNANT_LIQUIDITY. Query: 03_token_velocity_and_health.sql.
What was actually checked
No Dune extract, notebook, or saved query result is committed. The only executed result in the repo is test_pipeline.py. It loads a small synthetic book (two curves, nine swaps) into in-memory DuckDB and asserts five invariants. Running that file printed the rows below, and all five assertions passed.
| Check | Printed result | How to read it |
|---|---|---|
| Graduation | 0xnova fill 100.0, status GRADUATED |
On this fixture the curve is treated as fully filled and graduated. This is not a count of real Orakuru launches. |
| Snipers | 0xsniper_1 and 0xsniper_2: is_sniper = 1, cohort SNIPER |
Both addresses buy in the first two blocks after creation, so the rule flags them. Later wallets in the same fixture are not in this printout. |
| Wallet segment | 0xwhale_1 → WHALE |
Segment label from dim_wallets for that fixture address. Not a measured share of real supply. |
| Velocity | 0xphantom: V 0.3385, turnover 46.0, MODERATE_VELOCITY0xnova: V 0.39, turnover 79.0, MODERATE_VELOCITY |
Both sit between 0.1 and 0.5, so the model’s moderate tier, not the “healthy” band (0.5–2) described in the README. |
| Mart grain | 7 distinct traders in the raw swaps, 7 rows in dim_wallets |
The wallet dimension does not fan out on this fixture. |
Reproduce: python test_pipeline.py (needs DuckDB). The script’s own header says the trades are synthetic.
What is not on this page
-
Dashboard placeholders
dashboards/executive_dashboard_spec.md sketches a header with example figures (42 active curves, 18.4 BNB fees, 14.2% graduation, 1,840 BNB volume, 1,420 traders, 38 minutes to graduate). Those are layout placeholders, not a measured extract, so they are omitted.
-
Evidence sketch
dashboards/evidence_preview.md is an Evidence.dev page sketch. It has queries, not saved results.
-
Unprinted fill
A comment in the test file calls the second curve “~45% fill”. The suite does not print that fill, so it is not shown as a result.