FISHRENCHER

How it works

A fish tank, watched by a model that runs in your browser, turned into a paper-trading feed. No servers do the seeing — only the deciding.

VideoIn-browserdetectionTrackerGrid +crossingsSignalenginePapertradeclient-side (browser)server-side
  1. 01

    A camera watches a fish tank

    An admin uploads a video of a fish tank, or points at a live stream URL. The video plays in your browser — nothing is uploaded to an inference server.

  2. 02

    Your browser finds the fish

    A small object-detection model (YOLOv8n, ~12MB, cached after first visit) runs inside a Web Worker via WebGPU or WebAssembly. Every detection above a confidence threshold is treated as a fish — there's no dedicated 'fish' class, so the label is ignored entirely.

  3. 03

    Detections become tracks

    A centroid + IoU tracker links detections across frames into persistent identities — Fish-01, Fish-02, and so on. A track survives up to 15 missed frames before it's retired.

  4. 04

    The tank is a grid

    The video is divided into a numbered grid, sized to its aspect ratio. As a fish's centroid moves between tiles, and as it crosses the centerline left-to-right or right-to-left, those movements become events.

  5. 05

    Events become signals

    Events are batched, signed with a session token, and sent to the server every few seconds. When a fish crosses the same direction enough times within a configurable window, that momentum triggers a signal — L2R is treated as BUY, R2L as SELL.

  6. 06

    Signals open simulated trades

    Each signal resolves a token from the tile it occurred in, and opens a paper position with a stop-loss and take-profit. Positions are marked against a simulated price feed and closed automatically when they hit either bound. No real funds move — this is Phase 1.