Company Private (KODO)
Role Product Design Lead
Key outcome 24/7 live capital
Crypto / DeFi / Trading Systems / Decision Architecture

A decision system for operating under noise, incomplete information, and capital risk. Runs 24/7. Zero margin for error.

Autonomous statistical arbitrage across correlated crypto pairs on Hyperliquid (DeFi perpetuals DEX). Real capital, 7x leverage, 24/7 on-chain execution. I led product and design end-to-end: signal detection, validation cascade, risk escalation, execution logic, and two operator surfaces. Collaborated with quant specialists and leveraged Claude AI for accelerated development.

24/7Autonomous execution, live capital
7xLeverage on live positions
~60sDecision cycle tick
23→1Metrics reduced to 1 question
KODO trading terminal
01 Context

Mean-reversion on correlated crypto pairs.

Spread deviates beyond a statistical threshold, system trades the convergence. 24/7 crypto markets on Hyperliquid, a decentralised perpetuals exchange. 7x leverage, 7 simultaneous pairs (ETH/BTC, SOL/ETH, LINK/ETH, and other correlated tokens), non-stationary on-chain data. Every decision has immediate financial consequences for the client.

Scope Role: Product Design Lead
Scope: Decision architecture, interfaces, risk system
Platform: Hyperliquid (DeFi perps DEX, on-chain order book)
Stack: Python, Flask, Telegram Bot API, Web3 / REST APIs
Work: System design, dashboard, Telegram bot, risk framework
Collaboration: Quant specialists (signal model), Claude AI (development acceleration)

Live capital deployment. 7x leverage, 5 pairs max, 3 open positions max. ~60-second tick cycle. 24/7.

Hyperliquid DEX

Hyperliquid: the decentralised perpetuals exchange where KODO executes.

02 The Real Problem

v1 was a terminal log with 23 metrics per pair.

Complete information, zero decision clarity. At 2am with leveraged capital moving against the operator, the question isn't analytical. It's binary: "Am I okay right now?" The problem was never information. It was architecture.

  • Signals are ambiguous by nature. Non-stationary on-chain data, regime shifts, correlation breakdowns across token pairs. In crypto, hesitation has a cost. Overreaction has a cost.
  • Latency is structural. 60-second tick, rate-limited exchange APIs, two-leg execution on a decentralised order book. A signal valid 30 seconds ago may not be valid now. Blockchain finality adds another layer.
  • Emotional bias compounds faster than losses. After a drawdown: impulse to recover. After a streak: impulse to increase size. Both destroy accounts.
03 Key Insight

Most systems fail not because of bad signals. They fail because of bad decision architecture.

The entire 23-metric pipeline needed to collapse into one question: what's the z-score? Entry at 2.4σ, exit at 0.8σ, stop at 4.5σ. At 2am, one glance. Not a lecture.

Evidence v1 had perfect information, 23 metrics per pair including z-scores, half-lives, funding rates, and on-chain liquidity depth, and the operator couldn't act. v2 has a gate that decides autonomously and only surfaces what requires intervention. The shift: from "here's all the data" to "the system is handling it, here's what needs your attention."

6-step signal pipeline. One number drives every decision: the z-score.

Four domains: Core, Data, Decision+Risk, Feedback+Interface. 12 modules.

KODO pair scanner

The Pair Scanner: correlation, z-score, half-life, and funding rate across all pairs.

03b Pair Radar

The radar scans 24/7. The operator only sees what matters.

The pair scanner evaluates every pair across four dimensions: correlation coefficient, z-score deviation, half-life, and funding rate differential. Only pairs passing all four filters surface to the operator.

How it works Scan: Every 60s, evaluate all pairs.
Filter: Suppress weak correlation (<0.7), slow half-life (>48h), adverse funding.
Surface: Only z > 2.4 sigma appears actionable.
Rank: By deviation magnitude. Most urgent at top.
KODO full radar

Full radar: 7 pairs monitored. Color-coded z-scores. One screen, not seven.

04 What I Changed

Three design interventions. From raw data to decision architecture.

1. Designed a 5-layer decision architecture

Signal emergence → validation → decision → execution → survival. Each layer has one responsibility.

KODO active state

Active state: 5 pairs, spread convergence in real-time. The system entered autonomously and manages toward exit.

2. Five-priority deterministic decision gate

The gate is deterministic. Same inputs, same output. No ambiguity. Higher priorities override everything below.

P1SurvivalKill switch. Sticky. Manual reset only.
P2Execution HealthSlippage monitoring
P3Model ValidityShadow trader divergence
P4Edge ExistsRolling edge tracker
P5Standard ChecksZ-score, risk, limits

Drawdown escalation

Normal0-6% DDFull size
Reduced6-9% DD0.5x size
Blocked9-10% DDNo new entries
Kill>10% DDClose all. Halt.

3. Two operator surfaces: Dashboard + Telegram

Terminal Views

OPS7 pairs, z-scores, decision gate
LOGP&L, win rate, trade history
CTRLSystem state, parameters, interventions
RADAR80 pairs, stationarity scores
TERMRaw system feed

Telegram Command Tiers

READ/status /pairs /pnl /health
WRITE/pause /resume /reduce
DESTRUCTIVE/kill (2-step confirm)

95% of interaction is one question answered via Telegram. The 2am interface.

KODO override

Override state: operator intervened. Risk parameters adjusted. System respects override but keeps monitoring.

KODO single pair

Single pair deep view: full spread history, convergence trajectory.

KODO trade log

Trade log: every entry, exit, P&L. Full accountability.

05 Key Decisions

What trade-offs did I make?

Every decision involved choosing between flexibility and determinism under capital risk. These were the most consequential:

DecisionChosenRejectedWhy
Gate logic Deterministic cascade Probabilistic model Under capital risk, "73% confident" is not a useful post-mortem. Hard thresholds = complete traceability.
Kill switch Sticky (manual reset + 10 recovery trades) Auto-reset Prevents re-entry after drawdown driven by emotional bias.
Primary surface Telegram Dashboard 95% of interaction is "am I okay?" A phone notification answers it in 5 seconds.
Infrastructure Local-only (no cloud) Cloud deployment Zero execution latency, complete runtime control. Third-party infra fails at worst possible moment.
05b System Architecture

Three surfaces, one decision engine, zero gaps.

KODO operates across three interfaces: the Terminal (full dashboard for deep analysis), Telegram (mobile alerts and quick commands for 2am checks), and Hyperliquid (the on-chain execution layer). A single decision engine sits between all three, ensuring every surface shows the same truth.

Operator Surfaces

KODO Terminal

Flask dashboard. 5 views: OPS (pair radar), LOG (trade history), CTRL (system state), RADAR (pair scanner), TERM (raw feed). Full override controls.

Telegram Bot

3 command tiers: Read (/status, /pairs), Write (/pause, /resume), Destructive (/kill with 2-step confirm). Push alerts for trades, risk events, errors. The 2am interface.

Hyperliquid DEX

On-chain perpetuals exchange. REST + WebSocket APIs. Order placement, position management, funding rate queries. The execution layer KODO talks to.

↓ ↓ ↓
Decision Engine (5-Priority Gate)

Pair Scanner

Scans all pairs every 60s. Filters by correlation (>0.7), half-life (<48h), funding rate. Ranks by z-score deviation.

Signal Gate

Deterministic. Entry: z > 2.4σ. Exit: z < 0.8σ. Stop-loss: z > 4.5σ. Same inputs always produce same output. Zero discretion.

Risk Manager

Position sizing based on account equity. Max 3 concurrent. Drawdown escalation: Normal (0-6%), Reduced (6-9%), Blocked (9-10%), Kill (>10%).

Executor

Two-leg order placement on Hyperliquid. Long leg + short leg. Slippage monitoring. Execution latency tracking per order.

Kill Switch

Priority 1. Sticky (manual reset only). Close all positions. Halt all new entries. 2-step confirmation via Telegram. Cannot be overridden by automation.

↓ ↓ ↓
Data Pipeline

Price Feed

Hyperliquid WebSocket. 60-second aggregated ticks. Mid-price calculation. Rate-limit managed.

Spread Calculator

Log-price ratio between pair legs. Rolling window statistics. Kalman filter for noise reduction.

Z-Score Engine

Mean and standard deviation over rolling window. Non-stationary adjustment. The single number that drives every decision.

Funding Monitor

Rate differential between pair legs. Carry cost calculation. Adverse funding triggers pair suppression.

Reconciler

Runs every 5 ticks. Compares local state vs on-chain positions. Fixes phantom positions from network timeouts. Non-negotiable in DeFi.

↓ ↓ ↓
Risk + State Management

System States

4 states: OPEN (normal ops), REDUCED (half size), BLOCKED (entries stopped), KILLED (all closed). Auto-escalation based on drawdown %.

Shadow Trader

Runs model in parallel without executing. Compares theoretical vs actual P&L. Divergence threshold: $0.30/trade. Flags model drift.

Edge Tracker

Decomposes trade-level P&L into signal edge, execution cost, slippage, and funding. Identifies which pairs actually produce alpha.

Position Limits

Max 3 concurrent positions. Max 5 pairs monitored. 7x leverage cap. Per-pair allocation proportional to edge score.

↓ ↓ ↓
Feedback Loop

Trade Attribution

Every trade logged with: entry/exit z-scores, hold duration, P&L, slippage, funding cost, execution latency. Full accountability.

Parameter Tuning

Edge tracker data feeds back to signal model. Half-life windows adjusted. Entry/exit thresholds refined. Pairs added/removed based on real performance.

Cycle Restart

Updated model. Refined parameters. Cycle restarts every 60 seconds. The system that runs today is better than the one that ran yesterday.

Scan . Filter . Signal . Validate . Execute . Monitor . Learn . Repeat every 60 seconds
05c Operator Journey Map

Every scenario the system was designed for.

The map below traces six critical operator scenarios across three layers: what the operator experiences, what the system does autonomously, and where the operator surface (Terminal or Telegram) sits in the flow. Each scenario was designed for the worst version of itself.

S1 New signal detected Happy path
Trigger
Pair z-score crosses entry threshold (2.4σ). Pair passes all filters: correlation >0.7, half-life <48h, funding aligned.
System
Scanner detects Gate validates Risk checks pass Executor places 2-leg order Position confirmed on-chain
Operator
Telegram alert: "ENTRY: SEI/SUI z=2.67 | Size: $150 | 7x". Operator sees, acknowledges. No action needed.
Surface
Terminal OPS view updates live. Position appears in trade grid. Spread chart begins tracking convergence.
S2 Spread converges (profitable exit) Target outcome
Trigger
Z-score crosses exit threshold (0.8σ). Spread has reverted to mean.
System
Exit signal Close both legs Log P&L Edge tracker decomposes Pair returns to scanner
Operator
Telegram: "EXIT: SEI/SUI +$3.49 | Hold: 4h12m | Edge: 2.3bps". Operator sees profit confirmation.
Surface
LOG view updates. Win rate recalculated. Edge attribution per pair adjusted. Capital freed for next opportunity.
S3 Drawdown escalation Risk event
Trigger
Account drawdown crosses 6%. Multiple positions moving against the thesis simultaneously.
System
DD 6% detected State: REDUCED (0.5x) DD 9%: BLOCKED DD 10%: KILL ALL
Operator
Telegram alerts escalate: "DD 6.3% - REDUCED" then "DD 9.1% - BLOCKED" then "DD 10% - KILLED". Each alert is progressively more urgent. Operator can intervene at any stage or let the system protect itself.
Surface
CTRL view shows state change. DD badge turns red. Status bar shows DEFENSIVE. System is self-protecting.
S4 Emergency kill (operator-initiated) Critical
Trigger
Operator decides to halt everything. Market event, personal decision, or external factor.
System
/kill command Confirm: "Type KILL to confirm" Close all positions State: KILLED (sticky)
Operator
2-step confirmation. Prevents accidental kill (pocket-dial incident led to this design). KILLED state is sticky: only manual /resume restores normal operation.
Surface
All views show KILLED state. Red banner across Terminal. No automation runs. System is completely inert until operator manually restores.
S5 Phantom position (network timeout) Edge case
Trigger
Network timeout during two-leg execution. One leg filled, other leg failed. Local state diverges from on-chain reality.
System
Reconciler detects mismatch Compare local vs on-chain Sync state Resume normal ops
Operator
Telegram: "RECON: Phantom detected SEI/SUI. Local: OPEN, Chain: FLAT. Synced." Operator is informed but no action needed.
Surface
Reconciler runs every 5 ticks. Non-negotiable in DeFi where network failures are structural, not exceptional.
S6 The 2am check (the real product test) Core UX
Trigger
Operator wakes up at 2am. Checks phone. Needs to know: "Am I okay right now?"
System
System has been running autonomously for hours. All decisions made without intervention. State is one of: OPEN, REDUCED, BLOCKED, or KILLED.
Operator
Open Telegram Read last alert See: "HEALTHY" or act Go back to sleep

Design goal: this entire interaction takes <5 seconds. One glance. One answer. If the system is healthy, the operator's job is to go back to sleep.

Surface
Telegram shows the last system message. If no alerts since the operator last checked, the silence IS the answer. The absence of noise is the signal.
06 Results

From 23 metrics to one question. From terminal to autonomous.

24/7Autonomous, live capital
7Simultaneous pairs monitored
5sDecision time via Telegram
4System states: OPEN, REDUCED, BLOCKED, KILLED
Validation Real capital outcomes on-chain. Shadow trader validates model accuracy against DeFi execution (divergence threshold $0.30/trade). Edge tracker decomposes trade-level P&L including gas costs and funding rate impact. Execution intel tracks slippage drift on the Hyperliquid order book. Every trade event logged and attributed.
07 Takeaway

Design for the worst moment, not the average one. The interface checked at 2am is the real product.

The pattern Better signals don't fix bad decision systems. This is especially true in crypto, where 24/7 markets and DeFi composability create infinite data streams. Most data-heavy interfaces fail because they provide information instead of decisions. The primary surface is always the one used at lowest attention, not the one with the most features.
What failed The v1 dashboard was beautiful, with detailed charts and full statistics. Completely useless at 2am. Redesign inverted hierarchy: system state first (GO/PAUSED/KILLED), not data. Also: the operator accidentally triggered /kill during a profitable run, so we added 2-step confirmation after. Also underestimated reconciliation. Phantom positions from network timeouts during execution. Now runs every 5 ticks. On-chain reconciliation is non-negotiable in DeFi.
Next case study RetailNorm →
×