Skip to main content

Legacy → Domain Import Inventory

Sprint ticket: S5 — Legacy import inventory for AlphaSwarm first-class module (ADRs 033-020 approved) Scope: READ-ONLY audit; no production code was modified. Root scanned: c:\Users\Julian Wiley\Documents\GitHub\Alpha-Swarm-ai\ Worktrees excluded: alphaswarm_worktrees/** Generated: 2026-08-10 by alphaswarm-index-curator (sprint S5)


1. Summary counts​

PackageTotal filesProduction filesTest files
alphaswarm (monolith)17413143
alphaswarm_agents761
alphaswarm_bots110
alphaswarm_models660
alphaswarm_rl550
alphaswarm_cli000
alphaswarm_controller000
alphaswarm_core000
TOTAL19314944

Key finding: alphaswarm_cli and alphaswarm_controller are already clean — zero direct legacy imports, confirming the boundary isolation for those repos.


2. Migration map — legacy symbol to canonical domain target​

The following table is derived from the shim docstring in VERIFIED file alphaswarm/alphaswarm/core/types.py:1-80.

Legacy symbol (alphaswarm.core.types)Canonical domain targetModuleNotes
SymbolInstrumentIdalphaswarm.core.domain.identifiersBridge: Symbol.to_instrument_id() / Symbol.from_instrument_id()
ExchangeVenuealphaswarm.core.domain.identifiersVenue is a string value-object, not an enum
AssetClassAssetClassalphaswarm.core.domain.enumsDomain is a superset (adds RATES/CREDIT/ALTERNATIVE/EVENT/MIXED/CASH)
SecurityTypeInstrumentClassalphaswarm.core.domain.enumsDomain adds REIT/MUTUAL_FUND/OTC_DERIVATIVE/ADR/GDR
OrderTypeOrderTypealphaswarm.core.domain.enumsDomain superset adds STOP_MARKET/MIT/LIT/MTL/TSM/TSL/FOK/FAK/RFQ
OrderSideOrderSidealphaswarm.core.domain.enumsDomain adds NONE
OrderStatusOrderStatusalphaswarm.core.domain.enumsDomain has richer state machine; CANCELLED → CANCELED rename
DirectionPositionSidealphaswarm.core.domain.enumsConflict: legacy NET ≠ domain FLAT; requires value mapping
OrderRequestDomainOrder / MarketOrder / LimitOrder / StopMarketOrderalphaswarm.core.domain.ordersBridge: OrderRequest.to_domain_order() → legacy_adapter.domain_order_from_order_request()
OrderDataDomainOrder (view)alphaswarm.core.domain.ordersBridge: OrderData.to_domain_order() / OrderData.from_domain_order()
TradeDataExecutionReportalphaswarm.trading.executionBridge: TradeData.from_execution_report()
PositionDataEquityPosition / DomainPositionalphaswarm.core.domain.positionsBridge: PositionData.from_account_position_row()
AccountDataAccountRow + balancesalphaswarm.persistence.models_accountsBridge: AccountData.from_account_row()

Types that remain authoritative in alphaswarm.core.types (no domain equivalent):

SymbolCategoryRationale
BarData, TradeBar, QuoteBar, TickData, TickMarket data recordsDomain layer covers identity/orders/accounts, not the data plane
Interval, Resolution, TickType, DataNormalizationMode, SubscriptionDataConfigData-plane routing keysNo domain replacement planned
Signal, PortfolioTargetAlpha/portfolio value objectsAlpha-framework primitives with no domain equivalent
Event, MarketEvent, SignalEvent, OrderEvent_Msg, FillEvent_Msg, EventTypeBacktest event loop messagesCore to the event-driven engine bus
OrderEvent, OrderTicketLegacy framework patternsKeep for existing PaperTradingSession
Cash, CashBookMulti-currency accountingNo domain equivalent
SecurityHoldingLean-style position recordNo domain equivalent
ACTIVE_STATUSES, iter_subscriptions, moneyHelpersUtility, no migration needed

3. Full file inventory — production files only​

3.1 Critical hotspots (block strangler migration)​

These files use multiple legacy types including OrderRequest, OrderData, TradeData, or PositionData — the types with explicit domain bridges — and are on the critical path for removing the shim.

FileImported legacy symbolsRiskPhase
alphaswarm/alphaswarm/backtest/engine.py:46BarData, EventType, FillEvent_Msg, Interval, MarketEvent, OrderEvent, OrderEvent_Msg, OrderRequest, OrderTicket, SignalEvent, Symbol, TradeDataHPhase 3 — engine refactor
alphaswarm/alphaswarm/backtest/broker_sim.py:19AccountData, Direction, OrderData, OrderRequest, OrderSide, OrderStatus, PositionData, TradeDataHPhase 3 — engine refactor
alphaswarm/alphaswarm/core/interfaces.py:15AccountData, BarData, OrderData, OrderEvent, OrderRequest, OrderTicket, PortfolioTarget, PositionData, Signal, SubscriptionDataConfig, SymbolHPhase 2 — interfaces lift
alphaswarm/alphaswarm/trading/session.py:32BarData, OrderData, OrderRequest, TradeDataHPhase 3 — session refactor
alphaswarm/alphaswarm/trading/execution/legacy_adapter.py:50,281,357,394AccountData, OrderData, OrderRequest, OrderSide, OrderStatus, OrderType, PositionData, Symbol, Exchange, DirectionHPhase 2 — already the bridge, promote to permanent
alphaswarm/alphaswarm/trading/brokerages/base.py:13AccountData, OrderData, OrderRequest, PositionDataHPhase 3 — brokerage interface
alphaswarm/alphaswarm/trading/brokerages/alpaca.py:52AccountData, Direction, OrderData, OrderRequest, OrderSide, OrderStatus, OrderType, PositionData, SymbolHPhase 3 — brokerage adapter
alphaswarm/alphaswarm/trading/brokerages/ibkr.py:31AccountData, Direction, OrderData, OrderRequest, OrderSide, OrderStatus, OrderType, PositionData, SymbolHPhase 3 — brokerage adapter
alphaswarm/alphaswarm/trading/brokerages/tradier.py:14AccountData, Direction, OrderData, OrderRequest, OrderSide, OrderStatus, OrderType, PositionData, SymbolHPhase 3 — brokerage adapter
alphaswarm/alphaswarm/trading/brokerages/rest.py:25AccountData, OrderData, OrderRequest, OrderSide, OrderStatus, OrderType, PositionData, SymbolHPhase 3 — brokerage adapter
alphaswarm/alphaswarm/persistence/ledger.py:19OrderData, Signal, TradeDataHPhase 2 — ledger writer must consume domain types
alphaswarm/alphaswarm/backtest/result_handler.py:16OrderEvent, OrderTicket, PositionDataHPhase 3 — result handler
alphaswarm/alphaswarm/strategies/framework.py:36BarData, OrderData, OrderRequest, SignalHPhase 3 — strategy framework ABC
alphaswarm/alphaswarm/strategies/execution.py:9Direction, OrderRequest, OrderSide, OrderType, PortfolioTarget, PositionDataHPhase 3 — execution models
alphaswarm/alphaswarm/strategies/vwap_execution.py:16OrderRequest, OrderSide, OrderType, PortfolioTargetHPhase 3 — execution models
alphaswarm/alphaswarm/strategies/twap_execution.py:9OrderRequest, OrderSide, OrderType, PortfolioTargetHPhase 3 — execution models
alphaswarm/alphaswarm/backtest/replay.py:27EventType, OrderEvent, OrderTicket, TradeDataHPhase 3 — replay engine
alphaswarm/alphaswarm/api/routes/orders.py:40OrderRequest, OrderSide, OrderType, SymbolHPhase 2 — order API surface
alphaswarm/alphaswarm/api/routes/brokers.py:35AccountData, OrderRequest, OrderSide, OrderType, PositionData, SymbolHPhase 2 — broker API surface

3.2 Symbol-only consumers (lower risk, high volume)​

These files import only Symbol (and sometimes Exchange, AssetClass, SecurityType). Migration path: swap Symbol → InstrumentId, call Symbol.parse(vt) → InstrumentId.parse(vt) with the domain form.

alphaswarm strategies (Symbol + Direction + Signal — all three are high-frequency)​

FileImported legacy symbolsRiskPhase
alphaswarm/alphaswarm/strategies/portfolio_construction.py:22PortfolioTarget, Signal, SymbolMPhase 4
alphaswarm/alphaswarm/strategies/black_litterman.py:17Direction, PortfolioTarget, SignalMPhase 4
alphaswarm/alphaswarm/strategies/hrp.py:23Direction, PortfolioTarget, SignalMPhase 4
alphaswarm/alphaswarm/strategies/risk_parity.py:11Direction, PortfolioTarget, SignalMPhase 4
alphaswarm/alphaswarm/strategies/risk_models.py:29Direction, PortfolioTargetMPhase 4
alphaswarm/alphaswarm/strategies/mean_variance.py:12Direction, PortfolioTarget, SignalMPhase 4
alphaswarm/alphaswarm/strategies/portfolio_opt/_base.py:21Direction, PortfolioTarget, SignalMPhase 4
alphaswarm/alphaswarm/strategies/portfolio_opt/min_variance.py:19Direction, PortfolioTarget, SignalMPhase 4
alphaswarm/alphaswarm/strategies/portfolio_opt/cla.py:17PortfolioTarget, SignalMPhase 4
alphaswarm/alphaswarm/strategies/portfolio_opt/efficient_cvar.py:18PortfolioTarget, SignalMPhase 4
alphaswarm/alphaswarm/strategies/portfolio_opt/efficient_cdar.py:11PortfolioTarget, SignalMPhase 4
alphaswarm/alphaswarm/strategies/portfolio_opt/efficient_semivariance.py:11PortfolioTarget, SignalMPhase 4
alphaswarm/alphaswarm/strategies/portfolio.py:8Direction, PortfolioTarget, SignalMPhase 4
alphaswarm/alphaswarm/strategies/drawdown_per_security.py:8PortfolioTargetLPhase 4
alphaswarm/alphaswarm/strategies/sector_exposure.py:8PortfolioTargetLPhase 4
alphaswarm/alphaswarm/strategies/trailing_stop.py:8PortfolioTargetLPhase 4
alphaswarm/alphaswarm/strategies/ema_cross_alpha.py:10Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/macd_alpha.py:10Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/momentum.py:10Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/mean_reversion.py:10Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/rsi_alpha.py:10Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/dual_thrust_alpha.py:18Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/bollinger_w_alpha.py:18Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/heikin_ashi_alpha.py:18Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/oil_money_alpha.py:22Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/london_breakout_alpha.py:19Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/awesome_oscillator_alpha.py:19Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/shooting_star_alpha.py:17Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/parabolic_sar_alpha.py:18BarData, Direction, Signal, SymbolMPhase 5
alphaswarm/alphaswarm/strategies/rsi_pattern_alpha.py:21Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/ml_alphas.py:26Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/ml_selection.py:31Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/rl_policy.py:13Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/pairs_alpha.py:18Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/base_algo_example.py:18Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/etf_baskets.py:9Exchange, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/universes.py:17Exchange, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/fundamental_universe.py:11Exchange, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/adaptive_rotation/gics_buckets.py:19SymbolLPhase 5
alphaswarm/alphaswarm/strategies/adaptive_rotation/rotation_alpha.py:13Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/agentic/agentic_alpha.py:44Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/agentic/agent_aware_alpha.py:24Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/agentic/ml_selector_alpha.py:33Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/stat_arb/multi_cluster.py:51Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/stat_arb/cross_sectional_residual.py:26Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/options/vrp_straddle.py:36Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/options/variance_swap.py:27Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/options/iron_condor.py:29Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/momentum/dual_momentum.py:24Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/momentum/sector_rotation.py:17Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/momentum/residual_momentum.py:17Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/momentum/smoothed_crossover.py:21Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/ml/svm_fx_trend.py:27Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/ml/nb_sentiment.py:22Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/ml/ann_crypto_decile.py:23Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/qtradex/alphas.py:27Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/vbtpro/agentic_alpha.py:36Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/vbtpro/ml_alpha.py:34Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/vbtpro/agent_order_model.py:27SymbolLPhase 5
alphaswarm/alphaswarm/strategies/sae/alphas.py:15BarData, Direction, OrderData, OrderRequest, Signal, SymbolHPhase 3
alphaswarm/alphaswarm/strategies/akquant/alphas.py:103,143,247,269BarData, Direction, OrderData, OrderRequest, Signal, SymbolHPhase 3
alphaswarm/alphaswarm/strategies/analyzingalpha/alphas.py:159,204Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/notebooks/alphas.py:143,204,236,299,511Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/examples/sma_cross.py:13Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/examples/sma4_cross.py:17Direction, Signal, SymbolLPhase 5
alphaswarm/alphaswarm/strategies/examples/trailing_atr.py:17Direction, Signal, SymbolLPhase 5

alphaswarm core/backtest/data/trading/api layers​

FileImported legacy symbolsRiskPhase
alphaswarm/alphaswarm/core/__init__.py:215All legacy types (mass re-export)HPhase 2 — remove or scope re-exports
alphaswarm/alphaswarm/core/slice.py:19BarData, QuoteBar, Symbol, TickDataMPhase 3
alphaswarm/alphaswarm/core/indicators.py:23BarDataLPhase 5
alphaswarm/alphaswarm/core/indicators_extra.py:40BarDataLPhase 5
alphaswarm/alphaswarm/backtest/aat_engine.py:29Direction, SymbolLPhase 4
alphaswarm/alphaswarm/backtest/bt_engine.py:39Direction, SymbolLPhase 4
alphaswarm/alphaswarm/backtest/vectorbt_engine.py:41Direction, SymbolLPhase 4
alphaswarm/alphaswarm/backtest/zvt_engine.py:30Direction, Signal, SymbolLPhase 4
alphaswarm/alphaswarm/backtest/components.py:12Direction, Signal, SymbolLPhase 4
alphaswarm/alphaswarm/backtest/history.py:11SymbolLPhase 4
alphaswarm/alphaswarm/backtest/market_impact.py:25OrderSideMPhase 3
alphaswarm/alphaswarm/backtest/runner.py:28SymbolLPhase 4
alphaswarm/alphaswarm/backtest/vbtpro/data_utils.py:16SymbolLPhase 4
alphaswarm/alphaswarm/backtest/vbtpro/order_builder.py:27SymbolLPhase 4
alphaswarm/alphaswarm/backtest/vbtpro/signal_builder.py:27Direction, SymbolLPhase 4
alphaswarm/alphaswarm/data/catalog.py:14,383Symbol, SecurityTypeMPhase 3
alphaswarm/alphaswarm/data/duckdb_engine.py:30DataNormalizationMode, SymbolLPhase 4
alphaswarm/alphaswarm/data/feature_sets.py:35SymbolLPhase 5
alphaswarm/alphaswarm/data/indicators_zoo.py:258BarData, SymbolLPhase 5
alphaswarm/alphaswarm/data/ingestion.py:30Exchange, SymbolLPhase 4
alphaswarm/alphaswarm/data/subscription.py:23DataNormalizationMode, Resolution, SubscriptionDataConfig, Symbol, TickTypeLPhase 4
alphaswarm/alphaswarm/data/sources/alpha_vantage/bulk_loader.py:32SymbolLPhase 5
alphaswarm/alphaswarm/data/sources/alpha_vantage/coordination.py:13SymbolLPhase 5
alphaswarm/alphaswarm/data/sources/alpha_vantage/history.py:12SymbolLPhase 5
alphaswarm/alphaswarm/data/sources/alpha_vantage/intraday_plan.py:16SymbolLPhase 5
alphaswarm/alphaswarm/data/sources/alpha_vantage/universe.py:13AssetClass, Exchange, SecurityTypeMPhase 4
alphaswarm/alphaswarm/trading/feeds/base.py:13BarData, Exchange, Interval, SymbolMPhase 3
alphaswarm/alphaswarm/trading/feeds/alpaca_feed.py:22BarData, Exchange, Interval, SymbolMPhase 3
alphaswarm/alphaswarm/trading/feeds/ibkr_feed.py:21BarData, Exchange, Interval, SymbolMPhase 3
alphaswarm/alphaswarm/trading/feeds/kafka_feed.py:40BarData, Direction, Exchange, Interval, QuoteBar, Signal, Symbol, TickData, TickTypeMPhase 3
alphaswarm/alphaswarm/trading/feeds/rest_poll.py:20BarData, Exchange, Interval, SymbolMPhase 3
alphaswarm/alphaswarm/trading/runner.py:23SymbolLPhase 4
alphaswarm/alphaswarm/api/routes/backtest.py:239DataNormalizationMode, SymbolLPhase 4
alphaswarm/alphaswarm/api/routes/data.py:33,1085,1244DataNormalizationMode, SymbolLPhase 4
alphaswarm/alphaswarm/api/routes/factors.py:164DataNormalizationMode, SymbolLPhase 4
alphaswarm/alphaswarm/api/routes/feature_catalog.py:179DataNormalizationMode, SymbolLPhase 4
alphaswarm/alphaswarm/api/routes/feature_sets.py:32SymbolLPhase 4
alphaswarm/alphaswarm/api/routes/market_data_live.py:25,451DataNormalizationMode, SymbolLPhase 4
alphaswarm/alphaswarm/api/routes/quant_agents.py:803SymbolLPhase 4
alphaswarm/alphaswarm/facade/foundation.py:36SymbolLPhase 5
alphaswarm/alphaswarm/services/portfolio_service.py:18SymbolLPhase 5
alphaswarm/alphaswarm/tasks/ingestion_tasks.py:127SymbolLPhase 5
alphaswarm/alphaswarm/tasks/feature_set_tasks.py:43SymbolLPhase 5
alphaswarm/alphaswarm/tasks/factor_tasks.py:40SymbolLPhase 5

3.3 Sibling-package consumers (external to alphaswarm monolith)​

alphaswarm_agents​

FileImported legacy symbolsRiskPhase
alphaswarm_agents/src/alphaswarm_agents/quant/factor_strategy_shim.py:25OrderRequest, OrderSide, OrderType, SymbolHPhase 3
alphaswarm_agents/src/alphaswarm_agents/graph/builder.py:252Direction, Signal, SignalEvent, SymbolMPhase 4
alphaswarm_agents/src/alphaswarm_agents/screening/llm_screener.py:27Direction, Signal, SymbolLPhase 5
alphaswarm_agents/src/alphaswarm_agents/tools/analytics_tools.py:52,99,146,190,273,339Symbol (inline, 6 occurrences)LPhase 5
alphaswarm_agents/src/alphaswarm_agents/tools/technical_tool.py:120,158BarData, Interval, SymbolLPhase 5
alphaswarm_agents/src/alphaswarm_agents/tools/volatility_tool.py:73SymbolLPhase 5
alphaswarm_agents/src/alphaswarm_agents/tools/simulation_tool.py:132SymbolLPhase 5

alphaswarm_bots​

FileImported legacy symbolsRiskPhase
alphaswarm_bots/adapters/bridges/execution_bridges.py:149OrderData (inline, lazy import)HPhase 3 — bridge translates NewOrder → OrderData; needs domain path

alphaswarm_models​

FileImported legacy symbolsRiskPhase
alphaswarm_models/src/alphaswarm_models/api/routes/ml.py:30SymbolLPhase 5
alphaswarm_models/src/alphaswarm_models/applications/forecaster/alpha.py:12Direction, Signal, SymbolLPhase 5
alphaswarm_models/src/alphaswarm_models/loader.py:158Symbol (inline lazy import)LPhase 5
alphaswarm_models/src/alphaswarm_models/recorder.py:206Symbol (inline lazy import)LPhase 5
alphaswarm_models/src/alphaswarm_models/tasks/ml_tasks.py:397Symbol (inline lazy import)LPhase 5
alphaswarm_models/src/alphaswarm_models/tasks/ml_test_tasks.py:37,475,552Symbol (inline, 3 occurrences)LPhase 5

alphaswarm_rl​

FileImported legacy symbolsRiskPhase
alphaswarm_rl/src/alphaswarm_rl/envs/rl_backtest_env.py:57Direction, OrderRequest, OrderSide, OrderType, SymbolHPhase 3 — wraps SimulatedBrokerage directly
alphaswarm_rl/src/alphaswarm_rl/envs/base.py:18SymbolLPhase 5
alphaswarm_rl/src/alphaswarm_rl/applications/ensemble_strategy.py:22Direction, Signal, SymbolLPhase 5
alphaswarm_rl/src/alphaswarm_rl/applications/fundamental_portfolio_drl.py:107Symbol (inline lazy import)LPhase 5
alphaswarm_rl/src/alphaswarm_rl/data_pipelines/iceberg.py:58Symbol (inline lazy import)LPhase 5

4. Hotspots that block strangler migration​

The following files are on the critical path. Migrating away from the legacy stack requires all of these to be updated first because they form the shared interface contracts consumed by everything above.

FileWhy it blocksStrangler action
alphaswarm/alphaswarm/core/interfaces.pyDeclares IBrokerage, IHistoryProvider, IStrategy, IExecutionModel, IResultHandler ABCs with legacy type signaturesPRIORITY 1: Dual-signature the ABCs to accept both OrderRequest and DomainOrder; gate by ADR 037
alphaswarm/alphaswarm/backtest/engine.pyThe canonical event-driven engine; all other engines and the paper session depend on its event typesPRIORITY 1: Move to domain orders with event-bus adapters
alphaswarm/alphaswarm/backtest/broker_sim.pyUsed by both engine.py and rl_backtest_env.py; drives all order matchingPRIORITY 1: Dual-write path while domain orders roll out
alphaswarm/alphaswarm/trading/session.pyThe live/paper runtime; shares IBrokerage with the backtest pathPRIORITY 1: Migrate when interfaces.py dual-signature is ready
alphaswarm/alphaswarm/trading/execution/legacy_adapter.pyThe translation bridge itself; must stay alive during migration windowPRIORITY 2: Promote to permanent adapter pattern; wire into gateway
alphaswarm/alphaswarm/trading/brokerages/base.pyBase class for all live brokerages; extends IBrokerage with legacy typesPRIORITY 2: Migrate after interfaces.py
alphaswarm/alphaswarm/persistence/ledger.pyEvery signal/order/fill flows through LedgerWriter; uses OrderData, Signal, TradeDataPRIORITY 2: Accept domain types in parallel
alphaswarm/alphaswarm/core/__init__.pyMass re-export of all legacy types; makes from alphaswarm.core import Symbol silently work everywherePRIORITY 3: Scope or remove legacy re-exports at end of migration window

5. Consumer counts by symbol​

This table counts unique production files (no tests, no worktrees) importing each legacy symbol.

Legacy symbolProduction-file consumersDomain target
Symbol93InstrumentId (alphaswarm.core.domain.identifiers)
Direction60PositionSide (alphaswarm.core.domain.enums)
Signal59No domain equivalent — keep in alphaswarm.core.types
PortfolioTarget18No domain equivalent — keep in alphaswarm.core.types
BarData15No domain equivalent — keep in alphaswarm.core.types
OrderRequest15DomainOrder subtypes (alphaswarm.core.domain.orders)
OrderSide11OrderSide (alphaswarm.core.domain.enums)
OrderType11OrderType (alphaswarm.core.domain.enums)
OrderData9DomainOrder (view) (alphaswarm.core.domain.orders)
Exchange9Venue (alphaswarm.core.domain.identifiers)
PositionData8DomainPosition / EquityPosition (alphaswarm.core.domain.positions)
TradeData5ExecutionReport (alphaswarm.trading.execution)
AccountData5AccountRow + balances (alphaswarm.persistence.models_accounts)
DataNormalizationMode8No domain equivalent — keep in alphaswarm.core.types
SubscriptionDataConfig2No domain equivalent — keep in alphaswarm.core.types
SecurityType2InstrumentClass (alphaswarm.core.domain.enums)
AssetClass2AssetClass (alphaswarm.core.domain.enums)
OrderStatus6OrderStatus (alphaswarm.core.domain.enums)
EventType2No domain equivalent — keep in alphaswarm.core.types
OrderEvent3No domain equivalent — keep in alphaswarm.core.types
OrderTicket2No domain equivalent — keep in alphaswarm.core.types
Interval3No domain equivalent — keep in alphaswarm.core.types
Resolution1No domain equivalent — keep in alphaswarm.core.types
TickType2No domain equivalent — keep in alphaswarm.core.types
QuoteBar2No domain equivalent — keep in alphaswarm.core.types
TickData1No domain equivalent — keep in alphaswarm.core.types
TradeBar0 (alias for BarData)No domain equivalent
Tick0 (alias for TickData)No domain equivalent

6. Suggested migration phases​

PhaseDescriptionFiles affectedEst. change scope
Phase 2Interfaces + order API routes — dual-signature ABCs so both OrderRequest and DomainOrder are accepted; migrate /api/routes/orders.py and /api/routes/brokers.py to emit/consume DomainOrderinterfaces.py, orders.py, brokers.py, legacy_adapter.py (promote)~5 files, high-complexity
Phase 3Engine + brokerage core — migrate engine.py, broker_sim.py, session.py, all 4 live brokerages, feeds, trading/execution/, persistence/ledger.py19 high-risk production files~20 files, highest complexity
Phase 4Secondary backtest engines + data layer — migrate aat_engine.py, bt_engine.py, vectorbt_engine.py, zvt_engine.py, replay.py, result_handler.py, data/catalog.py, feeds helper layers~25 M-risk files~25 files, medium complexity
Phase 5Strategy catalogue + sibling packages — all strategies that import Direction, Signal, Symbol only; sibling repos (alphaswarm_agents, alphaswarm_models, alphaswarm_rl)~70 L-risk files~70 files, mostly 1-line swaps
Phase 6Shim removal — remove alphaswarm.core.types deprecated symbols (keep BarData, Signal, PortfolioTarget, data-plane types as permanent)alphaswarm/alphaswarm/core/types.py cleanup1 file, low complexity

7. Notes on Direction special case​

Direction (LONG/SHORT/NET) maps to domain PositionSide (LONG/SHORT/FLAT). The value NET has no direct equivalent in the domain enum. Consumers using Direction.NET are:

  • alphaswarm/alphaswarm/backtest/broker_sim.py (position direction tracking)
  • alphaswarm/alphaswarm/strategies/execution.py (position-to-order delta)

These files require a value-remapping step (treat NET as absolute-size accounting, not a direction) before the swap can be done safely.

VERIFIED: alphaswarm/alphaswarm/core/types.py:174 — Direction.NET = "net" is the legacy-only variant. VERIFIED: alphaswarm/alphaswarm/core/domain/enums.py — PositionSide has LONG/SHORT/FLAT, no NET.


8. Verified evidence samples​

ClaimVERIFIED evidence
Legacy shim doc with full migration mapalphaswarm/alphaswarm/core/types.py:1-80
engine.py imports 12 legacy typesalphaswarm/alphaswarm/backtest/engine.py:46-59
interfaces.py imports 11 legacy typesalphaswarm/alphaswarm/core/interfaces.py:15-27
broker_sim.py imports 8 legacy types including AccountData, PositionDataalphaswarm/alphaswarm/backtest/broker_sim.py:19-28
legacy_adapter.py imports domain+legacy bothalphaswarm/alphaswarm/trading/execution/legacy_adapter.py:30-62
rl_backtest_env.py imports OrderRequest/OrderSide/OrderTypealphaswarm_rl/src/alphaswarm_rl/envs/rl_backtest_env.py:57-64
alphaswarm_cli and alphaswarm_controller have zero legacy importsgrep result: 0 matches in both packages
domain/__init__.py exports all domain typesalphaswarm/alphaswarm/core/domain/__init__.py (full file)
Direction.NET exists only in legacyalphaswarm/alphaswarm/core/types.py:183
Symbol.to_instrument_id() bridge existsalphaswarm/alphaswarm/core/types.py:372-383

Debt note: run the alphaswarm-index-curator after Phase 2 lands to update alphaswarm_index/ signatures and code-index references for interfaces.py and orders.py.