ThesesPortfolio
loading…

Equity Curve

Daily PnL

Portfolio Comparison (all R-scenarios)

Metrics Table

Trade Log

Strategy Rankings

By Entry Model (avg across R-scenarios)

By Take-Profit Multiple (avg across entry models)

Leverage Comparison (3x / 5x / 10x) — risk fixed at 1%, liquidation constraint enforces stop < 1/L

Return % by Portfolio × R across leverages (all entry models combined)

By Entry Model (return % at each leverage, selected R)

Trades Entered (liquidation-filter effect)

Method: 1% risk per trade, notional = risk / stop_distance capped at 20% of equity and leverage × equity. Liquidation (isolated margin) sits ~1/L from entry — a trade is entered only if its stop distance < 1/L, otherwise it is skipped at that leverage.

Daily Summary

Daily Breakdown — Real Testnet Entries · no filters — every strategy's actual testnet orders, per day

Daily Theses (from DMA reports) — click a coin for the entry-model × R matrix

The Theses Development Process — complete & replicable

This page documents exactly how the daily theses are produced, the screening filters and their timing, and precisely when simulated trades are entered. It is written so anyone — or any automated agent — can reproduce the process step by step.

1. Overview & schedule (Sydney time)

The pipeline runs every weekday on a fixed schedule. Each job writes dated outputs to hypertracker-data/. All times below are Sydney AEST (UTC+10).

Time (AEST)JobWhat it produces
05:30Fills cachePer-wallet fills cache (Hyperliquid) — used for smart-money attribution
06:00Perps positioningConsensus + whale + cohort positioning data
06:20LeaderboardOfficial Hyperliquid leaderboard (~41.7k wallets)
06:30Bybit PM screenerAfternoon screening pass (catches early-Sydney session spikes)
07:30Bybit daily screenerMorning screening pass (the primary filter below)
08:00Daily Market Analysis (DMA)The theses + report — see §2
08:45Theses Portfolio simPaper-trades today's theses (this site)
09:00Pipeline evalAutomated consistency/health checks
21:30Bybit AM screenerEvening screening pass

2. Step-by-step: how a thesis is developed (08:00 DMA)

  1. Data collection (05:30–07:30). The morning jobs gather: Hyperliquid consensus (157 coins), key levels v2 / market profile (359 symbols), CVD×drift aggression (15 coins), HyperTracker cohort sizing (5 cohorts), Hyperliquid snapshot (493 markets), and the Bybit AM/PM screener passes.
  2. Data integration. market_analyst_data.py merges every source into a single per-coin view. Screener-passed coins are promoted to the top of the universe. Every coin gets an algorithmic conviction score (0–100) computed from seven components:
    • consensus magnitude (30 pts) — how strong the smart-money directional tilt is
    • consensus conviction field (10)
    • consensus freshness (20) — how recently the positioning data was updated
    • positioning state bonus (15) — e.g. new money entering a side
    • agreement (15) — consensus, whale, and aggression aligning
    • aggression alignment (±12/6) — CVD×drift confirming the move
    • HyperTracker whale agreement (±6)
  3. Thesis development. For each actionable symbol a thesis is written with: direction (LONG / SHORT / RANGE), refPrice, conviction (0–100), a base range (rangeLo → rangeHi), and base / bull / bear scenarios — each with a trigger, target, and invalidation, and probabilities that sum to 1.0. Stored as market_analyst_theses_<date>.json.
  4. Report synthesis. A structured markdown report is written: executive summary + top theses, macro regime, per-symbol expected-move framework, opportunity ranking, trade plan (entries/stops/targets/R:R/sizing), risk monitor, and scorecard.
  5. Consistency check + logging. check_report_consistency.py verifies the report matches the machine theses (exit 0 or fix). Then outputs go to the Obsidian vault (git) and Notion (Log DB row + full Reports page).
  6. Portfolio simulation (08:45). The theses JSON feeds the simulator that powers this site — TOP portfolio = §1 top theses; SCREENED portfolio = all Bybit screener passes.

3. The screening filters (exact thresholds)

The Bybit screener scans all USDT-margined perpetuals on Bybit (category=linear) and keeps a symbol only if all four conditions pass:

#FilterThresholdData
124h volume$10,000,000 USDturnover over last 24h
2ATR(14) on 15m2.0% of priceATR(14) computed on 15-minute klines, as % of current price
3Daily volatility3.0%TradingView-style true-range / low over last 24h
424h volume change> 0%volume of last 12h vs prior 12h (48 15m-bars each side)

Results are sorted by 24h volume (highest first) and written to screener_results.txt. The screener runs three times a day: 07:30 (daily/AM), 06:30 (PM), 21:30 (AM). The DMA job uses the passes as the SCREENED portfolio universe, and the top-conviction subset becomes the TOP portfolio.

Note: the 2% ATR threshold is calibrated for 15-minute klines. Applying it to daily klines would inflate pass counts 3–8× — always use the same 15m window as the live screener.

4. When are trades entered?

Theses are produced at ~08:00 Sydney; the sim does NOT auto-enter at that moment. The simulator treats each thesis as a standing order for its day and fills it according to the entry model being tested:

Entry modelWhat it doesWhen it fills
limit-low / limit-low±1% / ±2%Limit buy at the base-range low edge (pullback entry)The first 15m candle whose low touches the limit (± tolerance); fill at the actual touched price
limit-mid (± tol)Limit at the base-range midpointFirst 15m candle that crosses the midpoint
limit-high / ±1% / ±2%Limit at the base-range high edge (breakout entry)First 15m candle whose high touches the limit (± tolerance)
marketBuy at the day's openThe first 15m candle of the thesis day (00:00 UTC / 10:00 Sydney)

Every fill uses the actual intraday traded price (never a fabricated level) and is time-stamped to the 15m candle in which it happened. Trades that never touch their level that day are not filled — the thesis is not force-entered. Exits are equally precise: the position closes at the R-multiple take-profit level (whichever of stop / target / 3-day time-stop / next-day rollover triggers first), so results are a faithful replication of real order mechanics — no lookahead, no take-profit inflation.

In practice most limit fills cluster at the start of the thesis day (00:00 UTC) simply because that is when price first reaches the level; the rest fill intraday whenever the level is actually touched. The day the thesis is published (08:00 Sydney) is the entry day — the order is considered live from that day forward, not from the prior close.

5. Positions, risk & exits (portfolio rules)

  • Risk: 1% of current equity per trade; conviction multiplier ≥55 → 1.0×, 40–54 → 0.5×, LONG-CROWDED funding ≥0.03% → 0.5×.
  • Position: notional = risk ÷ stop-distance, capped at 20% of equity, max leverage cap.
  • Stop: thesis invalidation level. Take-profit: R-multiple (1R/1.5R/2R/3R) versus thesis target — whichever is closer in the trade direction.
  • Exits: target, stop, 3-day time stop, or rollover (new thesis for a held coin closes the old at current level).
  • Fees & funding: Bybit taker 0.055% / maker 0.02%; Hyperliquid taker 0.045% / maker 0.01%. Funding accrued per exchange interval (Bybit 8h, HL 1h).

About

Theses Portfolio paper-trades the Daily Market Analysis (DMA) theses as two $1,000 portfolios (TOP and SCREENED) across a 10-entry-model x 4-R-scenario grid on Hyperliquid + Bybit perpetual futures.

Trade Log Columns

ColumnDescription
DateTrade close date
PFPortfolio (TOP / SCREENED)
EntryEntry model (limit-low/mid/high, market, ±% tolerance)
DirTrade direction
CoinSymbol
EntryActual fill price
StopStop-loss price (from thesis invalidation level)
TargetR-multiple take-profit price
ExitActual exit price
ReasonExit reason — target / stop / time / rollover
NetPnL after fees and funding
RR-multiple achieved (net / actual risk)
SizePosition notional

Scorecard (Daily Market Analysis Log)

The Daily Market Analysis Log database tracks two scorecard metrics, each split by exchange:

  • Directional Hit-Rate — was the betting direction correct? LONG = price >= refPrice, SHORT = price <= refPrice
  • Thesis Frame Hit-Rate — did the full scenario framework hold? LONG = price >= base rangeLo, SHORT = price <= base rangeHi

Each split into: Overall (all coins), HL (Hyperliquid snapshot prices), Bybit (Bybit levels prices). Bybit-only screener coins are now included.

Data source: portfolio.json · Updated daily ~09:00 Sydney. Every closed trade now carries its stop-loss and take-profit target — both the Trades tab and Rankings drill-down charts show entry, stop, target, and exit lines.