Capacity Planning For Symbol Universe Growth logo

Capacity Planning For Symbol Universe Growth

Community
HimanshuJ16
capacity-planning-for-symbol-universe-growth

Use before expanding a strategy from a small basket to a large universe, to forecast CPU, memory and network bandwidth from per-symbol measurements. A first-order procurement estimate, not a load test.

Overview

PublisherHimanshuJ16
RepositoryAlgo-Trading-Skills
Skill namecapacity-planning-for-symbol-universe-growth
Stars
50
Forks
7
Bundled files
5
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 5 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by HimanshuJ16 on GitHub. Read the source before you install it.

Installation

Install the Capacity Planning For Symbol Universe Growth AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/HimanshuJ16/Algo-Trading-Skills/tree/main/skills/capacity-planning-for-symbol-universe-growth
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/HimanshuJ16/Algo-Trading-Skills.git /tmp/Algo-Trading-Skills
mkdir -p .claude/skills
cp -r /tmp/Algo-Trading-Skills/skills/capacity-planning-for-symbol-universe-growth .claude/skills/capacity-planning-for-symbol-universe-growth
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Capacity Planning For Symbol Universe Growth in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Capacity Planning For Symbol Universe Growth on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Capacity Planning For Symbol Universe Growth is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

When to Use

Use this skill when preparing to scale a quantitative strategy from a small basket of symbols (e.g., 50 tech stocks) to a massive universe (e.g., Russell 3000 or global crypto pairs). The engine models the expected network bandwidth (Mbps), memory footprint (GB), and CPU core requirements based on peak market data tick rates, ensuring your infrastructure is scaled proactively to prevent latency spikes and dropped packets.

When NOT to Use

  • As a substitute for measurement. This is a first-order sizing model for a procurement decision. It does not model queueing delay distributions, NUMA effects, cache behaviour, GC pauses or kernel bypass. Before committing to a design, replay real captures at target rate.
  • When per-symbol rates are wildly skewed and you need a tight answer. The model multiplies one peak rate by the symbol count. Real message rates follow a heavy-tailed distribution — a handful of names dominate — so a uniform peak applied across a 3,000-symbol universe overestimates aggregate load, while a uniform average underestimates the hot symbols that actually break your feed handler. See Common Pitfalls.
  • For latency budgeting. Capacity and latency are different questions; use strategy-latency-budget-decomposition and tick-to-trade-latency-measurement.

Prerequisites

  • Base knowledge of average and peak tick rates (messages per second) for the target asset class, measured over the burst window you actually care about (see peak_rate_per_sec_from_burst).
  • Specifications of the hardware: NIC bandwidth, cores you can genuinely dedicate to feed processing, RAM, and measured messages/second/core for your parser.
  • Knowledge of your feed's transport: whether messages are batched into packets, and whether you take one feed line or a redundant A/B pair.

Units

Mixed by design, matching how each domain is quoted commercially:

  • Network is decimal — 1 Mbps = 10⁶ bits/sec, so a "10 GbE" NIC is nic_bandwidth_mbps=10000.
  • Memory is binary — 1 GB = 1024 MB (GiB/MiB), matching how RAM is sold and reported.

Workflow

  1. Parameter Initialization: Define HardwareSpec — NIC bandwidth, measured cpu_msgs_per_sec_per_core, RAM, and available_cpu_cores. Set available_cpu_cores to cores you can dedicate, not the machine's total; the OS and your strategy threads need their own.
  2. Universe Definition: Define UniverseSpec. Decide how you are charging wire overhead, and be consistent:
    • Unbatched: fold payload + framing into bytes_per_msg, leave msgs_per_packet=1, packet_overhead_bytes=0.
    • Batched (correct for ITCH over MoldUDP64 and similar): put only the payload in bytes_per_msg, set packet_overhead_bytes=UDP_IPV4_ETHERNET_OVERHEAD_BYTES (66) and msgs_per_packet to your observed batching factor.
  3. Account for Feed Reality: Set redundant_feeds=2 if you consume both sides of an A/B multicast pair — it genuinely doubles the bill. Set retransmission_overhead_fraction for gap-fill traffic; OPRA's own guidance is +10%.
  4. Choose a Margin Deliberately: safety_margin defaults to 1.0 (no inflation) so the model reports exactly what you specified. Raise it to cover forecast uncertainty, but do not silently double-count against max_network_utilization, which already reserves headroom on the supply side.
  5. Capacity Calculation: CapacityPlanner.evaluate(universe) returns bandwidth, RAM, core count, each bottleneck flag, and the utilisation ceiling it applied.
  6. Validation — read all the flags, not just is_viable: If single_symbol_exceeds_core is set, the design is infeasible at any core count under symbol partitioning; adding hardware will not fix it, and you must either split that symbol's processing by message type or move to a faster parser. If only network_bottleneck is set, a bigger NIC or a filtered subscription may suffice.

Full procedure: see references/workflows.md. Standards reference: see references/standards.md. Printable pre-flight checklist: see assets/checklist.md.

Common Pitfalls

  • Designing for Average Load: Architecting for the average daily tick rate instead of the peak microburst. OPRA publishes its capacity projections in messages per 100ms and per 10ms intervals precisely because the 10ms window "reflects system utilization during bursts of traffic" — a one-second average can hide a burst an order of magnitude larger. Use peak_rate_per_sec_from_burst(messages, window_ms) to convert a burst observation into the rate to plan against.
  • Charging Per-Packet Framing to Every Message: The 66 bytes of UDP/IPv4/Ethernet framing is paid per packet, not per message. MoldUDP64 batches many ITCH messages into a single datagram (max 1472 bytes), so billing every message for full framing can overstate required bandwidth several-fold and send you shopping for a link you do not need.
  • Forgetting the B Feed: Redundant A/B multicast lines double bandwidth. OPRA states its projections are "for one stream only" and that subscribers taking both streams need double the bandwidth. A model that silently assumes one line under-provisions by 100%.
  • Assuming Cores Are Fungible: A single symbol's stream cannot be split across cores when you partition by symbol. If the hottest symbol exceeds one core's throughput, a 64-core machine does not help — this is what single_symbol_exceeds_core catches, and a raw "required cores" figure hides it entirely.
  • Uniform Per-Symbol Rates: Multiplying one peak rate by 3,000 symbols assumes every symbol is as hot as your benchmark. Message rates are heavy-tailed; model your universe in liquidity tiers and sum them rather than trusting a single uniform figure.
  • Single-Threaded Bottlenecks: Assuming that buying a 64-core machine solves the problem, without writing partitioned, lock-free code that can actually utilize those cores.

Verification

  • Reproducible worked example, pinned by the test suite: a 5,000-symbol universe at 1,000 msgs/sec/symbol and 125 bytes/msg needs 5,000 Mbps — 5 Gbps — which a 1 Gbps link cannot carry (network_bottleneck=True, is_viable=False).
  • Confirm the batching correction: the same 1M msgs/sec at 50-byte payloads costs 928 Mbps charged per message versus 426.4 Mbps when batched 20 messages per packet.
  • Confirm a 20-core requirement is flagged on a 16-core HardwareSpec — earlier versions compared against a hard-coded 64.
  • Run python -m unittest discover -s skills/capacity-planning-for-symbol-universe-growth/scripts.

Related Skills

  • binary-protocol-parsing-for-low-latency-feeds
  • broker-side-order-throttle-detection
  • tick-buffering-burst-handling
  • load-testing-before-scaling-to-new-instrument-universe

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Capacity Planning For Symbol Universe Growth AI skill do?

Use before expanding a strategy from a small basket to a large universe, to forecast CPU, memory and network bandwidth from per-symbol measurements. A first-order procurement estimate, not a load test.

Why use Capacity Planning For Symbol Universe Growth on TypingMind?

Because you install it once and use it with any model. Capacity Planning For Symbol Universe Growth is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Capacity Planning For Symbol Universe Growth in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/HimanshuJ16/Algo-Trading-Skills/tree/main/skills/capacity-planning-for-symbol-universe-growth. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Capacity Planning For Symbol Universe Growth?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Capacity Planning For Symbol Universe Growth?

As many as you like. As long as a model supports skills, you can use Capacity Planning For Symbol Universe Growth with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Capacity Planning For Symbol Universe Growth AI skill free?

Yes. It is published on GitHub by HimanshuJ16 under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇