slipstream / README.md
s-ttp's picture
Upload folder using huggingface_hub
f429b7e verified
|
Raw History Blame Contribute Delete
5.05 kB
metadata
title: Slipstream
emoji: πŸ“ˆ
colorFrom: blue
colorTo: green
sdk: docker
app_port: 7860
pinned: false
short_description: Smart-money, quality, trend-adaptive paper fund + picks

Slipstream

A quality, trend-adaptive equity paper fund that drafts the smart money.

Strategy (rule v2, Oct 2026): hold the large-caps that concentrated 13F managers are collectively buying β€” every filer with 10–150 positions, $250M–$100B and β‰₯40% in its top 10 (rule-based, ~900–1,500 a quarter); signal = 2Β·new + add βˆ’ 2Β·exit conviction positions β€” restricted to the top-1,000 by market cap and to companies whose ROA is in the top 30% of their sector; top-20 dollar-weighted (1–10% per name, ≀5 per sector) with a dynamic sector cap (each sector 30% Β± its 12-1m relative strength, 15–45%) and a regime overlay that rotates into large-cap momentum when SPY is in a confirmed downtrend. An AI overlay excludes only names hit by a critical adverse event. Rebalanced monthly.

Backtest 2014-03 β†’ 2026-10 (survivorship-free, data through d βˆ’ 1, 20 bp/side, Sharpe net of T-bills): CAGR 19.9% vs SPY 13.9%, Sharpe 0.85 vs 0.73, max drawdown -37.5% vs -33.7%, alpha +3.9% (t 1.8), Ξ² 1.17. Chosen on 2016–2021 from ~210 configurations; it trailed SPY over the never-used 2014-03 β†’ 2016-02 window. Research and pre-registrations: Quant Model/data/research/slipstream/.

The page shows the live Alpaca paper portfolio, performance vs SPY, the current target book, and the informational Top AI Picks of the Month panels.

Setup (Space secrets)

Add these under Settings β†’ Variables and secrets:

Secret Purpose
ALPACA_API_KEY, ALPACA_SECRET_KEY your Alpaca paper account (required)
ALPACA_PAPER_ENDPOINT optional, defaults to https://paper-api.alpaca.markets
REBALANCE_TOKEN enables the rebalance executor (send as X-Rebalance-Token)
GEMINI_API_KEY optional β€” picks screener + event-risk overlay (preferred). Model via GEMINI_MODEL, default gemini-flash-lite-latest (~$0.10/mo at this volume)
ALPHAVANTAGE_API_KEY optional β€” needed to refresh the News panel with live data
ANTHROPIC_API_KEY / OPENAI_API_KEY optional β€” fallback screeners if no GEMINI_API_KEY
SLIPSTREAM_CASH_BUFFER optional, default 0.01 β€” fraction of equity the executor keeps in cash

The picks panels ship with a cached fallback (data/*_deep.json): a panel whose live refresh fails β€” no key, a rate-limit, a scrape change β€” serves the last good result flagged stale instead of erroring. A key only enables the ↻ Refresh button to re-screen live. Screener preference: Gemini β†’ Anthropic β†’ OpenAI.

The fund only ever trades the paper endpoint. Rebalance is dry-run by default; a real submit needs dry=0 and the matching REBALANCE_TOKEN.

Rebalance

POST /api/rebalance?dry=1 returns the trade plan (no orders). Monthly, trigger a real rebalance with POST /api/rebalance?dry=0 and header X-Rebalance-Token: <token>. A Hugging Face scheduled Job (rebalance, weekdays 15:00 UTC, ops/hf_ops.py in the Refinery Space) does this every weekday, and the Space no-ops until the first market-open day of the month.

The executor sizes the book off (1 βˆ’ CASH_BUFFER) Γ— equity, never 100%: a fully-invested target plus the min-trade deadband (small overweights are never sold) had left the account on a standing margin balance. Sells are placed first and waited for before buys go in.

Ops

  • Supervisor β€” GET /api/supervisor is a flag-only monitor (tracking vs SPY, guardrails, freshness). The HF scheduled Job supervisor runs it daily (13:00 UTC). On ALERT it opens a discussion on this Space, which HF notifies you about. It doubles as the keep-alive: free Spaces sleep after 48 h idle, and the weekday-only rebalance ping left it asleep every weekend. All schedules (refresh, rebalance, supervisor, shadow book) are HF Jobs. See the Refinery README.
  • Restarts are safe. All fund state lives in Alpaca. data/ caches (picks, risk screen) are ephemeral inside the container β€” a restart just recomputes them (one LLM call per panel, one for the screen), and the shipped caches serve meanwhile.
  • Public by design. The dashboard, holdings and dry-run plan are world-readable (it's a paper account). If you flip the Space to private under Settings, give the Jobs' requests an Authorization: Bearer header (ops/hf_ops.py currently calls the public URL).

Data refresh

The smart-money signal bundle in data/ is regenerated by engine/export_bundle.py (run where the licensed Sharadar cache lives) and committed. Refresh it weekly: 13F is quarterly and ~45-day lagged, but prices.parquet feeds the sector-strength and momentum sleeves, and the supervisor WATCHes at 10 days / ALERTs at 14. The regime test (SPY vs 200-day MA) additionally pulls SPY live from Alpaca, so the fund's biggest switch never waits on the bundle.