stack · May 03, 2026 · 3 min read

Notebook 001 — The stack, day one

Dark Stone Capital is small. As of writing, it's a desk, a broker, a few APIs, and a stack of code that gets a little less ugly every week. This is where the journal starts.

We thought the right way to open the notebook was honestly: this is what we run on, this is what we're connected to, and this is what we're building. No production glamour shots — just the actual surface area of a one-desk quant firm in 2026.

The desk

Everything runs on a Mac Studio sitting on the same desk as the keyboard. That's a deliberate choice. We looked hard at running the data plane in the cloud, and the math kept landing in the same place: for a single-operator quant shop, colocating yourself with your own infrastructure is faster, cheaper, and easier to reason about than paying a cloud provider to do the same work behind a VPC.

Concretely:

  • The CPU is more than enough for backtests over years of intraday data.
  • Unified memory means a 100M-row dataframe doesn't choke.
  • Latency to local disk is measured in microseconds, not network round-trips.
  • It's quiet enough to live next to a human.

The tradeoff is that the box is also the production server. That has implications — observability matters more, networking matters more, and "did you reboot it" becomes a real failure mode. We'll write about how we handle that as we figure it out.

The data

Two providers, with very different jobs.

Alpaca is our broker and our streaming market-data feed. They give us live quotes, historical bars, and an order API behind one set of credentials, which is the right shape for a small shop — one vendor relationship, one set of keys, one set of rate limits to reason about. The Python SDK is fine; the websocket reconnect logic needs a little babysitting, which is on the list to write up.

Financial Modeling Prep is our reference and fundamentals layer — quotes, statements, ratios, calendar data. Cheap enough to lean on, broad enough to cover most of what we ask of it.

Neither is the most expensive option in its category. Both work. Part of what this journal will document, over time, is what's actually load-bearing at our size — versus what only starts to matter at scale.

The software

The application is Python and FastAPI, running under uvicorn. The code splits roughly into:

  • Ingest — pulls from Alpaca and FMP, normalizes, writes to local storage.
  • Features — computes the feature store the models train and predict against.
  • Models — regime classification, signal generation, ensembling.
  • Risk — position sizing, exposure caps, a Kelly criterion with a volatility ceiling.
  • API — what the dashboard talks to.

It's not glamorous. It's a few thousand lines of Python that has to be right at the specific moments we care about. Most of what we'll write about lives in this layer — what we tried, what worked, what we tore out.

The dashboard

The trading dashboard is a Next.js (App Router) frontend with shadcn/ui components, talking to the FastAPI backend over the local network. It's the thing we look at during the session: regime, positions, P&L, signal health, queue depths, and the handful of system-level numbers that tell us whether anything is on fire.

This site — the journal you're reading now — is Ghost. We picked it for the same reason we picked Alpaca: it does the thing we need it to do without making us its hobby.

Where this is going

Future notebooks will dig into individual pieces of the above:

  • How we handle Alpaca's websocket reconnects.
  • The feature store, and why it's boring on purpose.
  • The regime classifier — what it does, where it fails.
  • Running production on a Mac Studio: the unglamorous parts.
  • Why we're moving off requests in long-running services.

We're writing for two audiences. Future-us, who will need to remember why we made certain choices and what the constraints actually were at the time. And anyone else trying to do something similar at our size, who would benefit from seeing the real shape of it instead of the marketing version.

Welcome to the journal.