Core Concepts
Non-Discretionary

Non-Discretionary Routing

SnipeRoute makes zero trading decisions on behalf of users.

Overview

SnipeRoute is non-discretionary infrastructure. This means it makes zero trading decisions on behalf of users. Every execution parameter must be fully specified in the Trade Intent before submission.

Non-discretionary routing ensures that all trading logic remains with the upstream platform (Snipefinity, TradingView, enterprise system, etc.), not with SnipeRoute.

What SnipeRoute Does NOT Decide

ParameterExampleWho Decides
SymbolAAPL vs MSFTUpstream platform
PriceLimit price, stop priceUpstream platform
TimingWhen to submit orderUpstream platform
Quantity10 shares vs 100 sharesUpstream platform
Order TypeMarket vs LimitUpstream platform
Time in ForceGTC vs DayUpstream platform
SlicingHow to split large ordersUpstream platform

SnipeRoute only routes the fully specified instructions. It does not optimize, adjust, or modify any parameter.

Fully Specified Trade Intents

Every Trade Intent must include all execution parameters:

{
  "intent_id": "my_trade_123",
  "symbol": "AAPL",          // Specified by upstream
  "side": "buy",             // Specified by upstream
  "quantity": 10,            // Specified by upstream
  "order_type": "limit",     // Specified by upstream
  "limit_price": 175.00,     // Specified by upstream
  "time_in_force": "gtc",    // Specified by upstream
  "broker_id": "my_alpaca"   // Specified by upstream
}
⚠️

If any required parameter is missing, SnipeRoute will reject the Trade Intent with a 400 Bad Request error. It will NOT guess, infer, or apply defaults.

Comparison: Discretionary vs Non-Discretionary

Discretionary System (NOT SnipeRoute)

A discretionary system might:

  • Choose between AAPL and MSFT based on market conditions
  • Optimize limit price based on current order book
  • Decide to split a 1000-share order into 10x 100-share orders
  • Delay execution until after earnings announcement
  • Route to different brokers based on liquidity

Non-Discretionary System (SnipeRoute)

SnipeRoute:

  • Routes exactly what you specify
  • No optimization
  • No timing decisions
  • No splitting logic
  • No broker selection (you specify broker_id)

Why Non-Discretionary?

1. Predictability

You know exactly what will be executed. No surprises.

2. Compliance

Your upstream platform retains full control over trading logic and strategy.

3. Auditability

Every Trade Intent is traceable back to the upstream decision-making system.

4. Separation of Concerns

  • Upstream Platform: Makes all trading decisions
  • SnipeRoute: Routes instructions to broker
  • Broker: Executes orders in the market

Regulatory Implications

Investment Adviser Exclusion

By making zero trading decisions, SnipeRoute avoids acting as an investment adviser. All discretion remains with the upstream platform.

Broker-Dealer Exclusion

SnipeRoute does not execute trades, hold positions, or provide liquidity. It only routes instructions to existing broker accounts.

User Control

Users maintain full control over their broker accounts. SnipeRoute acts as an authenticated relay, not a custodian.

Examples

Acceptable: Fully Specified

from sniperoute import SnipeRouteClient
from sniperoute.models import TradeIntentRequest, OrderSide, OrderType
from decimal import Decimal
 
intent = TradeIntentRequest(
    intent_id="trade_001",
    symbol="TSLA",
    side=OrderSide.BUY,
    quantity=Decimal("50"),
    order_type=OrderType.LIMIT,
    limit_price=Decimal("250.00"),
    time_in_force="day",
    broker_id="my_schwab"
)
 
# All parameters specified by upstream platform

Not Supported: Discretionary Decisions

# This does NOT exist in SnipeRoute API
intent = TradeIntentRequest(
    symbol="TSLA",
    side=OrderSide.BUY,
    # Missing quantity - SnipeRoute won't guess
    # Missing order_type - SnipeRoute won't default
    # Missing broker_id - SnipeRoute won't choose
)

Next Steps