Authorizing asks your wallet to sign a consent message — no transaction, no gas. Stopping leaves any existing exchange SL/TP orders in place. Affects only your account.
Trading settings
your planStrategy parameters
—Fine-tune the selected strategy within your plan's limits. Each value is clamped to its allowed range; leave a field empty to use the strategy default. Parameters are stored per strategy and apply on your next order.
Trailing stop
Symbols & priority
—Enable the markets you want traded and set their priority (1 = served first when the position cap is reached). Your plan caps how many you can run at once.
Equity —
Traded markets (active)
Stats (7 days)
News
Stats
—PnL calendar
🔥 Hot & ❄️ Cold
—Breakdown
Daily performance
—Performance by month
—Every entry the news filter changed — sized down, let through, or refused
Latest closed trades
—Every article fetched by the pipeline — filter by pair, read the summary when available, and see the LLM rating once the model has classified the article.
Bot activity
API … LLM …Latest generated signals
—👋 Welcome to HyperBot
HyperBot is an automated trading bot connected to Hyperliquid. This dashboard tracks its activity, performance and open positions in real time.
Data refreshes automatically over WebSocket — no need to reload. Prices update every second, position values at each tick.
🟢 Bot statuses
Shown at the top of Home and via the dot next to the logo.
💰 Reading the numbers
- Available balance — uncommitted funds available to open new positions
- Total equity — balance + market value of open positions
- Unrealized PnL — floating gain/loss on positions still open
- Realized PnL (session) — cumulative gain/loss since the bot started
- Green means a gain, red a loss
📡 Prices & market data
- Top ticker — prices for all pairs declared in
config.yaml - "Live prices" card — only the pairs currently selected via Telegram for trading
- 24h change — anchored on Hyperliquid's
prevDayPx, so it matches the exchange
🛡️ Quality score
A 0–100 health rating per asset, separate from the news direction. Crypto reads free on-chain fundamentals; TradFi commodities/indices read CFTC COT positioning & trend. The enriched composite now also modulates trading — it amplifies entries aligned with strong fundamentals and trims those that oppose them.
Data-less assets (e.g. SpaceX) get a global LLM
estimate, flagged ≈ (no pillar bars), which still feeds trading by design.
📊 Directional & macro scores
The bot continuously reads live news and an economic-events feed and turns them into numbers that nudge position sizing and can veto a trade. There are two of them — a per-asset directional score (the single number shown per asset) and a global macro risk-off penalty (surfaced as a separate flag when active, since it is not a direction).
📈 Directional score
The directional score (dir) is the per-asset news sentiment,
from -1 (very bearish on this asset) to +1 (very bullish). Only
real news about that asset moves it — the global macro mood is kept out on purpose
(it lives in the Macro score), so a directional reading always points to a real side.
↑ Example marker at dir = +0.62 →
BULLISH
How it is computed
- Every headline younger than 24h is scanned for bullish / bearish keywords (rally, ETF approval, inflows… vs hack, lawsuit, sell-off…).
- Recency weighting (6h half-life): <6h ≈ full weight, <12h ≈ 0.6, <24h ≈ 0.2, older = ignored.
- High-impact headlines count double (×2).
- The asset's own news counts at full weight; generic market-wide news only at 35%, so each asset is driven by its own story.
- Blended 65% average / 35% strongest single headline (so one big story isn't
diluted by noise), then squeezed through
tanhinto-1 … +1.
Labels
Three fresh headlines: "Bitcoin ETF sees record inflows", "BTC rallies past resistance", "Institutional adoption climbs".
→ dir = +0.62 BULLISH. A LONG trades
with the news (full size); a SHORT would be fighting it (see Effect on trades).
🌍 Macro score
The macro score is a global, non-directional risk-off penalty from
0 (calm) down to -1 (major event). It is the same for every
asset in a given tick and never picks a side — it only makes the bot more cautious
by trimming size. It is also what raises the
⚠️ Macro event card in the Notif tab.
It is driven by the scheduled economic calendar (the same releases shown on
Investing.com's calendar), not by news headlines — so it reacts to real, timed events
(FOMC, CPI, NFP…) and ignores analyst-rating / forecast articles. Only releases for the
market-moving currencies (USD, EUR, GBP, JPY, CHF, CNY, plus cross-region
events) are considered.
Detection window
An economic event counts while it is inside the caution window: from 2h before until 1h after the scheduled time. The strongest active event wins.
Event tiers
Tiers map straight to the calendar's impact rating (the ★ stars on Investing.com). Low-impact events are ignored entirely — no penalty, no Notif card.
A "FOMC Statement" release is scheduled 90 minutes from now → inside the window, High impact = Tier 1.
→ macro = -1.0 for all pairs this tick. No side is favoured, but both
LONG and SHORT get −50% size, and the Notif tab shows the event with its currency
and scheduled time.
🧮 The score you see
The number shown per asset is simply the directional score (dir) — a
single, signed reading (−1 … +1) that answers one question: which way is the
news pointing? It is exactly the value the trade logic acts on for the veto and the size
cut, so what you read is what drives the direction.
The macro risk-off is deliberately not folded into that number. It is not a direction (it is always ≤ 0 and only means "be cautious"), so blending it in would drag the score negative without anything being bearish. Instead it appears as a separate ⚠ Global risk-off flag next to the score, shown only while a risk-off is live.
Bullish index news, no macro event: dir = +0.408.
→ the card shows +0.41
SLIGHTLY_BULLISH, with no risk-off flag.
(Internally the bot still logs a blended
fund_score = dir×0.65 + macro×0.35 for history, but the UI shows the clearer
directional number.)
🎯 Effect on trades
Here is exactly what these scores do when a strategy fires an entry signal:
dir ≤ −0.6, or a SHORT when
dir ≥ +0.6. It surfaces in Notif as "Order not executed — Fundamental
opposition". Threshold: fund_opposition_threshold (default 0.6; set ≥ 1.0
to disable).
0.3 (a LONG into bearish news / a SHORT into bullish),
or when the macro penalty is strong (macro ≤ −0.5). No stacking — it is a
single −50%.
min_confidence — i.e. a big news can trigger an entry. Enabled via
fund_bonus_enabled.
Three quick scenarios
BTC dir = +0.62, no macro. A LONG signal → full size. A SHORT signal →
blocked (opposition veto).
SILVER, no asset news (dir = 0) but FOMC in 90 min (macro = −1.0).
Either side may still open, but at −50% size; Notif shows the Tier-1 event.
XYZ100 dir = +0.41, no macro. A LONG is not vetoed and keeps
full size (opposition only kicks in past ±0.6).
📰 News feed
The News drawer shows headlines with a real RSS image (or a generated tile fallback). Impact is shown as a coloured outline on the card, and an LLM filters each item for relevance and sentiment before it is displayed.
- Toggle High impact only to keep the market-movers
- All vs Fundamental tabs split generic news from asset-specific stories
🌲 Strategies
Each pair runs one strategy, selectable per pair from the Control tab:
Every entry must clear a confidence threshold. Each strategy grades the current
setup on a 0–1 scale and opens a trade only when that grade reaches its own
min_confidence_* value (unset → the global min_confidence). A
higher threshold means fewer but stronger trades; a lower one means more but looser
trades. You set it in Strategy settings.
👉 Click a strategy to open it (only one opens at a time). The worked
examples below all assume the threshold is set to 0.70.
EMABreakout trend breakout min_confidence_ema ▶
Buys when a fast EMA crosses above a slow EMA inside an up-trend (mirror for shorts). It adds points for each thing that confirms the move, then divides by 6 to get the grade.
Open a LONG with threshold 0.70 — you need enough of these:
- EMA fast crosses above the slow EMA → +1.5 (required: no cross, no trade)
- Price is above the trend EMA → +2.0
- RSI in the bullish zone (52–70) → +1.5
- A strong green candle (high volume) → +0.5
Cross + price above trend + RSI = 5.0 ÷ 6 = 0.83 ≥ 0.70 → ENTER.
Cross + price above trend only = 3.5 ÷ 6 = 0.58 → wait
(even with volume, 4.0 ÷ 6 = 0.67, still under 0.70). So at 0.70 the RSI
confirmation is effectively required. On top of the grade, ADX must show a real
trend and Supertrend/KST (if enabled) must agree with the direction.
| Direction | Entry conditions (all required) | Confidence score (÷6 ≥ threshold) |
|---|---|---|
| LONG | EMA fast crosses above slow (hard gate + grace window) ·
ADX regime OK (slope-zoned around adx_min_trend) ·
Supertrend and KST bullish (when enabled) |
cross 1.5 + close > EMA-trend 2.0 +
RSI 52…rsi_overbought 1.5 +
volume > SMA×volume_multiplier (green) 0.5 |
| SHORT | Mirror: EMA fast crosses below slow · ADX OK · Supertrend and KST bearish | cross 1.5 + close < EMA-trend 2.0 +
rsi_oversold…48 RSI 1.5 + volume (red) 0.5 |
| Exit / stop | Trigger |
|---|---|
| EXIT_LONG | Opposite EMA cross down, or RSI(closed) ≥ rsi_exit_overbought (80). Can immediately reverse to SHORT if that side is itself valid. |
| EXIT_SHORT | Opposite EMA cross up, or RSI(closed) ≤ rsi_exit_oversold (20). Can reverse to LONG. |
| SL / TP | SL = ATR × atr_multiplier_sl · TP = ATR × atr_multiplier_tp, plus the adaptive trailing stop (moves only in profit, never locks a loss). |
RSIMeanReversion range fade min_confidence_rsi ▶
Buys a dip when RSI is oversold but price is still above its long-term average (SMA200) — and only while the market is ranging, not trending. The grade blends how oversold the RSI is with how far price sits above the SMA200.
Open a LONG with threshold 0.70 — the grade adds up two parts:
- How oversold RSI is (below 30) → up to +0.5 (the lower the RSI, the more)
- How far price sits above the SMA200 → up to +0.5 (the further, the more)
A deep dip (RSI ≈ 12) with price ≈ 0.8% above the SMA200 ≈
0.70 → ENTER. A shallow dip (RSI just under 30) tops out
around 0.58 → wait, even far above the SMA200. So at 0.70
the RSI must be genuinely oversold. ADX must also stay below
adx_max_mean_reversion (25) — no fading a real trend.
| Direction | Entry conditions (all required) | Confidence score |
|---|---|---|
| LONG | RSI < rsi_oversold (30) · price above SMA200 ·
ADX ≤ adx_max_mean_reversion (25) |
0.5 × (30 − RSI)/30 + min(0.5, distance to SMA200 %) ≥ threshold |
| SHORT | RSI > rsi_overbought (70) · price below SMA200 ·
ADX ≤ adx_max_mean_reversion |
0.5 × (RSI − 70)/30 + min(0.5, distance to SMA200 %) ≥ threshold |
| Exit / stop | Trigger |
|---|---|
| EXIT_LONG | RSI ≥ 50 (mean recovered). Never blocked by ADX — always allowed to exit. |
| EXIT_SHORT | RSI ≤ 50. |
| SL / TP | SL = ATR × atr_multiplier_sl · TP = ATR × atr_multiplier_tp + adaptive trailing. |
ChandelierZLSMA trend + trailing stop min_confidence_ce ▶
Follows the Chandelier Exit trend-flip (its stop line also becomes your trailing stop), but only takes the flip when price has clearly separated from the ZLSMA trend line — a flip glued to the line means a weak, choppy trend.
Open a trade with threshold 0.70:
- Grade starts at 0.60 on any valid flip
- + 0.20 × (distance from price to ZLSMA, measured in ATR), capped at 1.00
0.60 + 0.20 × 0.5 = 0.70 → ENTER when price is at least half an ATR away from the ZLSMA. A flip right on the line stays at 0.60 → wait. LONG also needs price above the ZLSMA, SHORT below it.
| Direction | Entry conditions (all required) | Confidence score |
|---|---|---|
| LONG | Chandelier direction flips −1 → +1 (buy flip) ·
price above ZLSMA (when ce_require_zlsma) |
0.6 + 0.2 × |price − ZLSMA| / ATR, capped 0.6–1.0 ≥ threshold |
| SHORT | Chandelier flips +1 → −1 (sell flip) · price below ZLSMA ·
ce_allow_short on |
Same distance-to-ZLSMA score ≥ threshold |
| Exit / stop | Trigger |
|---|---|
| EXIT_LONG | Opposite Chandelier flip (sell flip). Can reverse to SHORT if ZLSMA confirms. |
| EXIT_SHORT | Opposite flip (buy flip). Can reverse to LONG. |
| SL / TP | SL = Chandelier stop (else price ∓ ATR × ce_sl_atr_mult) · optional TP = ATR × ce_tp_atr_mult (0 = off, let it run until the flip). |
BBReversion Bollinger mean-revert min_confidence_bb ▶
Fades a close that pokes outside a Bollinger band back toward the middle band, when a fast RSI confirms panic, the ADX shows range-strength, the bands are wide enough, and the move aligns with the higher trend EMA. The grade grows with how deep the close pierced the band.
Open a LONG with threshold 0.70:
- Grade starts at 0.65 once price closes below the lower band
- + 0.15 × (how far below the band, measured in ATR), capped at 0.95
0.65 + 0.15 × 0.33 ≈ 0.70 → ENTER when the
close pierces the band by about a third of an ATR. A close just grazing the
band stays at 0.65 → wait. It also needs RSI ≤
mr_rsi_buy (15), ADX inside its range, wide-enough bands, and price
above the trend EMA.
| Direction | Entry conditions (all required) | Confidence score |
|---|---|---|
| LONG | Close below lower band (mr_bb_period/mr_bb_std) ·
RSI ≤ mr_rsi_buy (15) ·
ADX in [mr_adx_min, mr_adx_max) ·
band width ≥ mr_min_bb_width_pct ·
close > trend EMA (when mr_trend_filter, unless strong aligned news overrides) |
0.65 + 0.15 × (band − close)/ATR, capped 0.95 ≥ threshold |
| SHORT | Close above upper band · RSI ≥ mr_rsi_sell (85) ·
same ADX + width gates · close < trend EMA (when filtered) |
0.65 + 0.15 × (close − band)/ATR, capped 0.95 ≥ threshold |
| Exit / stop | Trigger |
|---|---|
| TP (mean) | Close reaches the mid-band captured at entry — the mean it reverts to (mr_tp_mid_band). |
| Time stop | Position held ≥ mr_max_hold_candles — a reversion that never happened is a failed thesis. |
| Opposite band | Optional (mr_exit_opposite_band_enabled): close crosses the far band for the full reversion. |
| SL | SL = ATR × mr_sl_atr_mult; can ratchet toward the mid-band once back at breakeven (mr_sl_to_mid_enabled). |
🎯 Risk & exits
- Adaptive trailing stop — the trailing distance adjusts per pair to recent volatility (ATR-based), so calm pairs trail tighter and volatile ones get more room.
- The trailing stop never locks in a loss: it only moves once the position is in profit, and the exit logic re-arms correctly on positions adopted at startup.
- Manual positions — positions you open by hand are tagged and excluded from the bot's statistics, so performance reflects the bot's own trades only.
⚡ Live control
When web control is enabled, the Control tab lets you pause, resume or stop the bot, tune global defaults, and set per-pair overrides (enable/disable, strategy, leverage, position size) that take effect on the next order. Trailing/break-even and the funding-carry module now live in Strategy settings.
If control is restricted to Telegram, the tab is read-only and changes are made from the Telegram bot instead.
📬 Contact & links
For any question or information request, contact us by email only at [email protected].