TradePartner: Automated Options Trading Platform
Self-driving trading platform built on a simple promise: help active traders make more money while spending less time at the screen. Rule-based options and stock strategies run against a live Tradier or Schwab account, with SmartOrders™, SmartFills™, and SmartShare™ handling entries, exits, fill optimization, and strategy sharing. Used by 1,000+ trader accounts across Tradier and Schwab.
Client: The Spyrol Group LLC (US)Ryan Jones, CEO13+ year client
1,000+
Active Trader Accounts
60,000+
SmartOrders Executed
8 Years
In Production
The Challenge
Active options traders missed entries and exits because they couldn't watch the screen every minute their strategies needed them to
Multi-leg spreads behaved as four scattered orders in the broker, with no single P/L and no clean way to roll or close as a unit
Traders were locked into one broker's tools and workflows, with no way to bring the same automation to whichever broker they used
Systematic strategies were duct-taped together with spreadsheets, price alerts, and manual order entry
Our Approach
Ryan Jones came to us after five agencies had taken months and his money without delivering a working proof of concept. The trading logic was complex, the broker integrations were fragile, and the timing requirements were unforgiving. We shipped the POC in weeks, followed by the first production version, and have been running the platform with him ever since. Today we own the full stack end to end: broker integrations, automated execution engine, real-time data layer, and trading UI. The latest phase rebuilt the trader-facing dashboard from scratch on a modern Angular 21 stack, developed on a parallel branch and rolled out without disrupting the live platform that thousands of subscribers use daily.
Key Features
SmartOrders™ watch the markets for conditions you define (price levels, indicators, time-of-day, option Greeks) and place the order the moment those conditions are met
SmartFills™ work the bid/ask spread automatically on every order, getting better fill prices than a static limit order would
SmartShare™ lets traders follow each other's strategies. Shared trades land in the recipient's account ready for confirmation, automatic execution, or editing
Spread Matrix gives traders a visual grid for constructing complex option spreads. Define a spread pattern once, see it priced live across every eligible strike, and place trades directly from the grid. Patterns auto-export and reuse across watchlists
Spread Manager to track, roll, and close multi-leg option spreads as a single position with one unified P/L
Works with either Tradier or Schwab as the connected broker, with the same interface and automation regardless of which one a trader uses
Real-time price streaming and live order status with sub-second latency
Performance Tracker journals every executed trade across both connected brokers, breaks down multi-leg P/L per leg, and renders performance over time as both a sortable grid and a chart, so traders see which strategies actually make money without exporting to a spreadsheet
Admin portal for user management, system monitoring, and execution analytics

Scope & Scale
1,096
Broker Accounts Connected
2
Brokers Integrated
380,000+
Broker Orders Executed
Modernization
| Aspect | Before | After |
|---|---|---|
| Framework | Angular 12 with NgModules | Angular 21 Standalone + Signals |
| State | BehaviorSubject with manual subscribe | @ngrx/signals stores |
| Styling | Component CSS, dated theme | Tailwind CSS 4 with design tokens, dark-first |
| Real-time | Polling and scattered alerts | SignalR hubs for notifications and price stream |
| Build | Legacy Angular CLI (slow) | Modern Angular 21 esbuild with sub-second HMR |
Framework
Before: Angular 12 with NgModules
After: Angular 21 Standalone + Signals
State
Before: BehaviorSubject with manual subscribe
After: @ngrx/signals stores
Styling
Before: Component CSS, dated theme
After: Tailwind CSS 4 with design tokens, dark-first
Real-time
Before: Polling and scattered alerts
After: SignalR hubs for notifications and price stream
Build
Before: Legacy Angular CLI (slow)
After: Modern Angular 21 esbuild with sub-second HMR
Tech Stack
How It Fits Together
Scroll horizontally to see the full diagram.
Technical Challenges We Solved
Broker abstraction across Tradier and Schwab
Unified execution layer so traders use the same SmartOrders, SmartFills, and spread workflows regardless of broker, while handling each API's authentication, order-status model, and failure modes separately.
Sub-second real-time execution path
.NET, SignalR, Redis, and SQL Server keep market events, order status, and dashboard state moving without falling back to slow polling during active trading sessions.
Multi-leg spread management
Modeled complex option spreads as a single trading object instead of scattered broker orders, giving traders unified P/L, roll, close, and lifecycle controls across legs.
Automated order safety
SmartOrders evaluate rule conditions, broker state, symbol status, and fill behavior before execution. A trading automation bug does not just create a bad UI state, it can place a real order, so the safety checks run before the system commits.
Zero-disruption modernization
Rebuilt the trader dashboard from Angular 12 and jQuery to Angular 21 on a parallel branch, keeping the live system stable for 1,000+ trader accounts while the new UI was developed and rolled out.
The Result
1,000+ active accounts. 60,000+ SmartOrders executed. 380,000+ broker orders placed. 8 years live, every trading day.
Traders no longer babysit the screen. SmartOrders run themselves at sub-second latency, handling entries, exits, and rolls without manual intervention.
The new Angular 21 dashboard rebuilt the trader experience from scratch, replacing a dated Angular 12 and jQuery interface with a modern, dark-first UI built to scale with the product, not hold it back.
What Keeps It Running
TradePartner is not just a platform we built and handed off. It has been running in live market conditions since 2018, with real traders, real broker accounts, and real money moving through the system every trading day.
That changes the engineering standard. SmartOrders cannot fail like a normal web form. The platform has to monitor live broker state, order status, market data, user rules, and execution timing before it places or updates an order. When Tradier or Schwab changes behavior, slows down, rejects an order, or returns an unexpected response, the system has to fail clearly, preserve the trader's state, and keep operators informed instead of hiding the problem behind a generic error.
We maintain TradePartner with that operating posture. Critical execution paths are monitored. Broker integrations are isolated behind adapters so one API's behavior does not leak across the rest of the product. Order history and execution state are stored in SQL Server, real-time trading state moves through Redis and SignalR, and admin tools give the team visibility into user activity and system behavior.
The recent Angular 21 rebuild followed the same discipline. The new dashboard was developed on a parallel branch while the live Angular 12 and jQuery system continued serving active traders. Releases were staged, reversible, and built around protecting the production trading workflow first.
Have a production system that needs to be built, rescued, or modernized?
Trading platforms, real-time integrations, broker APIs, and systems where downtime means real money. Tell us what's on the line.
Get a Free Quote