RealizeAlpha v0.44.0 introduces end-to-end support for Combo Orders, enabling traders to execute, monitor, and manage complex multi-leg packages combining equity and option legs (such as Covered Calls, Collars, and Married Puts) as a single atomic transaction through Robinhood’s /combo/orders/ API.
A combo order is a multi-leg package where equity shares and one or more option contracts are submitted and filled atomically. This eliminates execution leg risk (the danger that one leg fills while the other fails or moves against the trader).
open / close).lib/model/combo_order.dart)ComboOrder: Represents the complete combo order package, containing metadata (id, refId, state, price, quantity, direction, openingStrategy, createdAt, updatedAt) and its child legs.ComboLeg: Defines an individual leg within the combo:
legType: ComboLegType.equity or ComboLegType.option.symbol, side (buy / sell), positionEffect (open / close).ratioQuantity: Integer ratio of shares or contracts per package unit.strikePrice, expirationDate, optionType (call / put).ComboLegExecution: Captures fill executions for a specific leg (id, price, quantity, settlementDate, timestamp).packageTypeDisplay: Human-readable package strategy name (synthesizing from leg definitions if openingStrategy is unspecified).summaryTitle: Primary symbol combined with the strategy name (e.g., AAPL Covered Call).isFilled, isOpen, canCancel: Lifecycle inspection flags.netAmount, netDisplayPrice: Net credit/debit calculation.toCsvRow(): CSV serialization for tax and trade journaling exports.lib/model/combo_order_store.dart)ComboOrderStore provides reactive state management via ChangeNotifier:
items: List of current combo orders.setItems(List<ComboOrder>): Batch load and refresh.addOrUpdate(ComboOrder): Upsert orders into the store.remove(String id): Order deletion handling.bySymbol(String symbol): Filter combo orders for an underlying asset.openOrders & completedOrders: Filtered views based on order lifecycle states (queued, confirmed, filled, cancelled, rejected).main.dart with MultiProvider.lib/services/)IBrokerageService: Extended with:
getComboOrders(BrokerageUser, {bool nonzero, String? state})streamComboOrders(BrokerageUser)placeComboOrder(BrokerageUser, Map<String, dynamic>)cancelComboOrder(BrokerageUser, String cancelUrl)RobinhoodService:
https://api.robinhood.com/combo/orders/.FirestoreService.upsertComboOrders.DemoService & PaperService:
AAPL Covered Call, TSLA Collar, NVDA Married Put).lib/widgets/)ComboOrdersWidget (lib/widgets/combo_orders_widget.dart):
All, Filled, Queued, Confirmed, Cancelled, Rejected.ComboOrderWidget (lib/widgets/combo_order_widget.dart):
canCancel) orders.HistoryWidget (lib/widgets/history_widget.dart): Added dedicated Combos tab alongside Stocks, Options, Dividends, and Interests.InstrumentWidget (lib/widgets/instrument_widget.dart): Added dedicated combo orders section in stock detail activity slivers.The combo order suite includes comprehensive automated tests:
test/combo_order_test.dart: Serialization, deserialization, helper getters, collar/covered-call synthesis, CSV export.test/combo_order_store_test.dart: Reactive notifications, upserts, deletions, symbol and status filtering.test/combo_order_widget_test.dart: UI rendering of lists, filter chips, detail pages, leg breakdowns, and cancellation dialog interactions.