# quantconnect/lean.brokerages.binance architecture

> Architecture diagram of the GitHub repository quantconnect/lean.brokerages.binance, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/quantconnect/lean.brokerages.binance
- Repository: https://github.com/quantconnect/lean.brokerages.binance

## Overview

This repository is a LEAN brokerage plugin for Binance and Binance US. Its main workflow connects a LEAN deployment to an exchange-specific brokerage, routes orders and account/history requests through REST clients, and streams market and account events over WebSockets. The README also documents spot, margin, and futures trading. Source excerpts are limited, so several wiring details are omitted rather than inferred; the exchange-specific variants are represented by their explicit client and brokerage paths.

Main entry points: [`QuantConnect.BinanceBrokerage/BinanceWebSocketWrapper.cs`](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceWebSocketWrapper.cs) (WebSocket wrapper), [`QuantConnect.BinanceBrokerage/BinanceBaseRestApiClient.cs`](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceBaseRestApiClient.cs) (Base REST client), [`QuantConnect.BinanceBrokerage/BinanceFuturesRestApiClient.cs`](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceFuturesRestApiClient.cs) (Futures REST client), [`QuantConnect.BinanceBrokerage/BinanceBrokerage.cs`](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceBrokerage.cs) (Spot brokerage)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_brokerages["Brokerage adapters"]
  node_spot_brokerage["Spot brokerage"]
  node_us_brokerage["US brokerage"]
  node_futures_brokerage["Futures brokerage"]
  node_coin_futures_brokerage["Coin futures brokerage"]
  node_spot_factory["Spot factory"]
  node_us_factory["US factory"]
  node_futures_factory["Futures factory"]
  node_coin_factory["Coin futures factory"]
end

subgraph group_rest["REST clients"]
  node_base_rest["Base REST client"]
  node_spot_rest["Spot REST client"]
  node_margin_rest["Cross-margin REST"]
  node_futures_rest["Futures REST client"]
  node_coin_rest["Coin futures REST"]
end

subgraph group_stream["Streaming and events"]
  node_websocket["WebSocket wrapper"]
  node_execution["Execution messages<br/>[Execution.cs]"]
end

subgraph group_conversion["Exchange conversion"]
  node_account_converter["Account converters"]
  node_margin_converter["Margin converter"]
  node_futures_converter["Futures converter"]
end

node_lean(("LEAN deployment"))
node_binance(("Binance exchange"))

node_lean -->|"requests brokerage"| node_spot_factory
node_lean -->|"requests brokerage"| node_us_factory
node_lean -->|"requests brokerage"| node_futures_factory
node_lean -->|"requests brokerage"| node_coin_factory
node_spot_factory -->|"creates"| node_spot_brokerage
node_us_factory -->|"creates"| node_us_brokerage
node_futures_factory -->|"creates"| node_futures_brokerage
node_coin_factory -->|"creates"| node_coin_futures_brokerage
node_spot_brokerage -->|"routes requests"| node_base_rest
node_us_brokerage -->|"routes requests"| node_base_rest
node_futures_brokerage -->|"routes requests"| node_futures_rest
node_coin_futures_brokerage -->|"routes requests"| node_coin_rest
node_spot_rest -->|"extends"| node_base_rest
node_margin_rest -->|"extends"| node_base_rest
node_futures_rest -->|"extends"| node_base_rest
node_coin_rest -->|"extends"| node_futures_rest
node_base_rest -->|"sends REST requests"| node_binance
node_spot_brokerage -->|"streams events"| node_websocket
node_us_brokerage -->|"streams events"| node_websocket
node_futures_brokerage -->|"streams events"| node_websocket
node_coin_futures_brokerage -->|"streams events"| node_websocket
node_websocket -->|"connects"| node_binance
node_websocket -->|"receives updates"| node_execution
node_spot_rest -->|"converts account"| node_account_converter
node_margin_rest -->|"converts account"| node_margin_converter
node_futures_rest -->|"converts account"| node_futures_converter

click node_spot_brokerage "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceBrokerage.cs"
click node_us_brokerage "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceUSBrokerage.cs"
click node_futures_brokerage "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceFuturesBrokerage.cs"
click node_coin_futures_brokerage "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceCoinFuturesBrokerage.cs"
click node_spot_factory "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceBrokerageFactory.cs"
click node_us_factory "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceUSBrokerageFactory.cs"
click node_futures_factory "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceFuturesBrokerageFactory.cs"
click node_coin_factory "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceCoinFuturesBrokerageFactory.cs"
click node_base_rest "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceBaseRestApiClient.cs"
click node_spot_rest "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceSpotRestApiClient.cs"
click node_margin_rest "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceCrossMarginRestApiClient.cs"
click node_futures_rest "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceFuturesRestApiClient.cs"
click node_coin_rest "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceCoinFuturesRestApiClient.cs"
click node_websocket "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceWebSocketWrapper.cs"
click node_execution "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/Messages/Execution.cs"
click node_account_converter "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/Converters/SpotAccountConverter.cs"
click node_margin_converter "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/Converters/MarginAccountConverter.cs"
click node_futures_converter "https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/Converters/FuturesAccountConverter.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_spot_brokerage,node_us_brokerage,node_futures_brokerage,node_coin_futures_brokerage,node_spot_factory,node_us_factory,node_futures_factory,node_coin_factory toneBlue
class node_base_rest,node_spot_rest,node_margin_rest,node_futures_rest,node_coin_rest toneAmber
class node_websocket,node_execution toneMint
class node_account_converter,node_margin_converter,node_futures_converter toneRose
class node_lean,node_binance toneIndigo
```

## Components

### Brokerage adapters

- [Spot brokerage](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceBrokerage.cs): `QuantConnect.BinanceBrokerage/BinanceBrokerage.cs`
- [US brokerage](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceUSBrokerage.cs): `QuantConnect.BinanceBrokerage/BinanceUSBrokerage.cs`
- [Futures brokerage](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceFuturesBrokerage.cs): `QuantConnect.BinanceBrokerage/BinanceFuturesBrokerage.cs`
- [Coin futures brokerage](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceCoinFuturesBrokerage.cs): `QuantConnect.BinanceBrokerage/BinanceCoinFuturesBrokerage.cs`
- [Spot factory](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceBrokerageFactory.cs): `QuantConnect.BinanceBrokerage/BinanceBrokerageFactory.cs`
- [US factory](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceUSBrokerageFactory.cs): `QuantConnect.BinanceBrokerage/BinanceUSBrokerageFactory.cs`
- [Futures factory](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceFuturesBrokerageFactory.cs): `QuantConnect.BinanceBrokerage/BinanceFuturesBrokerageFactory.cs`
- [Coin futures factory](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceCoinFuturesBrokerageFactory.cs): `QuantConnect.BinanceBrokerage/BinanceCoinFuturesBrokerageFactory.cs`

### REST clients

- [Base REST client](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceBaseRestApiClient.cs): `QuantConnect.BinanceBrokerage/BinanceBaseRestApiClient.cs`
- [Spot REST client](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceSpotRestApiClient.cs): `QuantConnect.BinanceBrokerage/BinanceSpotRestApiClient.cs`
- [Cross-margin REST](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceCrossMarginRestApiClient.cs): `QuantConnect.BinanceBrokerage/BinanceCrossMarginRestApiClient.cs`
- [Futures REST client](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceFuturesRestApiClient.cs): `QuantConnect.BinanceBrokerage/BinanceFuturesRestApiClient.cs`
- [Coin futures REST](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceCoinFuturesRestApiClient.cs): `QuantConnect.BinanceBrokerage/BinanceCoinFuturesRestApiClient.cs`

### Streaming and events

- [WebSocket wrapper](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/BinanceWebSocketWrapper.cs): `QuantConnect.BinanceBrokerage/BinanceWebSocketWrapper.cs`
- [Execution messages](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/Messages/Execution.cs): `QuantConnect.BinanceBrokerage/Messages/Execution.cs`

### Exchange conversion

- [Account converters](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/Converters/SpotAccountConverter.cs): `QuantConnect.BinanceBrokerage/Converters/SpotAccountConverter.cs`
- [Margin converter](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/Converters/MarginAccountConverter.cs): `QuantConnect.BinanceBrokerage/Converters/MarginAccountConverter.cs`
- [Futures converter](https://github.com/quantconnect/lean.brokerages.binance/blob/master/QuantConnect.BinanceBrokerage/Converters/FuturesAccountConverter.cs): `QuantConnect.BinanceBrokerage/Converters/FuturesAccountConverter.cs`

### Other components

- **LEAN deployment**
- **Binance exchange**

## Connections

- LEAN deployment → Spot factory: requests brokerage
- LEAN deployment → US factory: requests brokerage
- LEAN deployment → Futures factory: requests brokerage
- LEAN deployment → Coin futures factory: requests brokerage
- Spot factory → Spot brokerage: creates
- US factory → US brokerage: creates
- Futures factory → Futures brokerage: creates
- Coin futures factory → Coin futures brokerage: creates
- Spot brokerage → Base REST client: routes requests
- US brokerage → Base REST client: routes requests
- Futures brokerage → Futures REST client: routes requests
- Coin futures brokerage → Coin futures REST: routes requests
- Spot REST client → Base REST client: extends
- Cross-margin REST → Base REST client: extends
- Futures REST client → Base REST client: extends
- Coin futures REST → Futures REST client: extends
- Base REST client → Binance exchange: sends REST requests
- Spot brokerage → WebSocket wrapper: streams events
- US brokerage → WebSocket wrapper: streams events
- Futures brokerage → WebSocket wrapper: streams events
- Coin futures brokerage → WebSocket wrapper: streams events
- WebSocket wrapper → Binance exchange: connects
- WebSocket wrapper → Execution messages: receives updates
- Spot REST client → Account converters: converts account
- Cross-margin REST → Margin converter: converts account
- Futures REST client → Futures converter: converts account
