---
title: "Requesting Data"
description: "Request Crypto data in your algorithm to receive a feed of asset prices in the OnData method."
canonical: https://www.quantconnect.com/docs/v2/writing-algorithms/securities/asset-classes/crypto/requesting-data
markdown: https://www.quantconnect.com/docs/v2/writing-algorithms/securities/asset-classes/crypto/requesting-data.md
language: python
source: https://github.com/QuantConnect/Documentation/tree/master/03%20Writing%20Algorithms/03%20Securities/99%20Asset%20Classes/03%20Crypto/01%20Requesting%20Data
modified: 2026-10-30
index: https://www.quantconnect.com/llms.txt
---

# Requesting Data

[Documentation](https://www.quantconnect.com/docs/v2.md) > [Writing Algorithms](https://www.quantconnect.com/docs/v2/writing-algorithms.md) > Securities > [Asset Classes](https://www.quantconnect.com/docs/v2/writing-algorithms/securities/asset-classes.md) > [Crypto](https://www.quantconnect.com/docs/v2/writing-algorithms/securities/asset-classes/crypto.md) > Requesting Data

> Code examples are shown in Python. Append `?lang=csharp` to this URL for the C# version of this page.

## Introduction

Request Crypto data in your algorithm to receive a feed of asset prices in the `on_data` method. For more information about the specific datasets we use for backtests, see the [QuantConnect datasets](https://www.quantconnect.com/docs/v2/writing-algorithms/datasets/quantconnect.md). To trade Crypto live, you can use the [QuantConnect data provider](https://www.quantconnect.com/docs/v2/cloud-platform/datasets/quantconnect/crypto.md).

## Create Subscriptions

To create a Crypto subscription, in the `initialize` method, call the `add_crypto` method. The `add_crypto` method returns a `Crypto` object, which contains a `symbol` property. Save a reference to the `symbol` so you can use it in `on_data` to access the security data in the `Slice`.

```python
self._symbol = self.add_crypto("BTCUSD").symbol
```

The `add_crypto` method creates a subscription for a single Crypto asset and adds it to your **user-defined** universe. To create a dynamic universe of Crypto assets, add a [Crypto universe](https://www.quantconnect.com/docs/v2/writing-algorithms/universes/crypto.md).

To view the supported assets, see the [QuantConnect datasets](https://www.quantconnect.com/docs/v2/writing-algorithms/datasets/quantconnect.md).

## Fungible Assets

Fungible assets are assets that are interchangeable with each other. For example, every Bitcoin is effectively identical to every other Bitcoin. In contrast, non-fungible tokens (NFTs) are non-fungible because each one is unique. An example of an NFT is the [Bored Ape Yacht Club](https://en.wikipedia.org/wiki/Bored_Ape) collection. LEAN doesn't currently support trading NFTs.

## Resolutions

The following table shows the available resolutions and data formats for Crypto subscriptions:

| Resolution | TradeBar | QuoteBar | Trade Tick | Quote Tick |
| --- | --- | --- | --- | --- |
| `TICK` | Not supported | Not supported | Supported✓ | Supported✓ |
| `SECOND` | Supported✓ | Supported✓ | Not supported | Not supported |
| `MINUTE` | Supported✓ | Supported✓ | Not supported | Not supported |
| `HOUR` | Supported✓ | Supported✓ | Not supported | Not supported |
| `DAILY` | Supported✓ | Supported✓ | Not supported | Not supported |

The default resolution for Crypto subscriptions is `Resolution.MINUTE`. To change the resolution, pass a `resolution` argument to the `add_crypto` method.

```python
self._symbol = self.add_crypto("BTCUSD", Resolution.DAILY).symbol
```

To create custom resolution periods, see [Consolidating Data](https://www.quantconnect.com/docs/v2/writing-algorithms/consolidating-data/getting-started.md).

## Supported Markets

The following `Market` enumeration members are available for Crypto:

*Members of `QuantConnect.Market` (JSON): https://www.quantconnect.com/services/inspector?type=T:QuantConnect.Market&language=python*

Fields: `BINANCE`, `Binance`, `BINANCE_US`, `BinanceUS`, `BITFINEX`, `Bitfinex`, `BYBIT`, `Bybit`, `COINBASE`, `Coinbase`, `KRAKEN`, `Kraken`

To set the market for a security, pass a `market` argument to the `add_crypto` method.

```python
self._symbol = self.add_crypto("BTCUSD", market=Market.COINBASE).symbol
```

The [brokerage models](https://www.quantconnect.com/docs/v2/writing-algorithms/reality-modeling/brokerages/key-concepts.md) have a default market for each asset class. If you set a brokerage model, you may not need to specify the market to use.

## Fill Forward

Fill forward means if there is no data point for the current [slice](https://www.quantconnect.com/docs/v2/writing-algorithms/key-concepts/time-modeling/timeslices.md), LEAN uses the previous data point. Fill forward is the default data setting. If you disable fill forward, you may get [stale fills](https://www.quantconnect.com/docs/v2/writing-algorithms/reality-modeling/trade-fills/key-concepts.md#06-Stale-Fills) or you may see trade volume as zero.

To disable fill forward for a security, set the `fill_forward` argument to false when you create the security subscription.

```python
self._symbol = self.add_crypto("BTCUSD", fill_forward=False).symbol
```

## Margin and Leverage

LEAN models buying power and margin calls to ensure your algorithm stays within the margin requirements. The amount of leverage available to you depends on the brokerage you use. To change the amount of leverage you can use for a security, pass a `leverage` argument to the `add_crypto` method.

```python
self._symbol = self.add_crypto("BTCUSD", leverage=3).symbol
```

For more information about the leverage each brokerage provides, see [Brokerages](https://www.quantconnect.com/docs/v2/cloud-platform/live-trading/brokerages.md).

## Data Normalization

The data normalization mode doesn't affect the data that LEAN passes to `on_data` or the data from [history request](https://www.quantconnect.com/docs/v2/writing-algorithms/historical-data/history-requests.md). If you change the data normalization mode, it won't change the outcome.

## Properties

The `add_crypto` method returns a `Crypto` object, which have the following properties:

*Members of `QuantConnect.Securities.Crypto.Crypto` (JSON): https://www.quantconnect.com/services/inspector?type=T:QuantConnect.Securities.Crypto.Crypto&language=python*

## Examples

The following examples demonstrate some common practices for requesting Crypto data.

### Example 1: Initialize Binance Algorithms

The following algorithm requests data for the BTC/USDT and ETH/USDT Crypto pairs on Binance. The Binance [brokerage model](https://www.quantconnect.com/docs/v2/writing-algorithms/reality-modeling/brokerages/key-concepts.md) provides realistic fee and fill modeling for the backtest. Since the quote currency of both pairs is USDT, [set the account currency](https://www.quantconnect.com/docs/v2/writing-algorithms/initialization.md#03-Set-Account-Currency) to USDT instead of USD. Otherwise, some order will fail since the brokerage doesn't automatically convert USD to USDT for you.

```python
class CryptoExampleAlgorithm(QCAlgorithm):
    def initialize(self) -> None:
        self.set_start_date(2024, 9, 1)
        self.set_end_date(2024, 12, 31)
        # Set the brokerage and account type for accurate fee and margin behavior.
        self.set_brokerage_model(BrokerageName.BINANCE, AccountType.CASH)

        # In some Crypto brokerages, USD is not a valid currency to trade.
        # Therefore, set the account currency to USDT and add the starting cash.
        self.set_account_currency("USDT", 100000)

        # Subscribe to the Crypto pairs.
        # You don't need to specify the market because the Binance brokerage model already does that.
        self.add_crypto("BTCUSDT", market=Market.BINANCE)
        self.add_crypto("ETHUSDT", market=Market.BINANCE)
```
