---
title: "Kraken"
description: "Our Kraken integration lets you deploy live trading algorithms on our co-located servers that trade the capital you have in your Kraken account."
canonical: https://www.quantconnect.com/docs/v2/cloud-platform/live-trading/brokerages/kraken
markdown: https://www.quantconnect.com/docs/v2/cloud-platform/live-trading/brokerages/kraken.md
language: python
source: https://github.com/QuantConnect/Documentation/tree/master/01%20Cloud%20Platform/10%20Live%20Trading/02%20Brokerages/13%20Kraken
modified: 2026-11-01
index: https://www.quantconnect.com/llms.txt
---

# Kraken

[Documentation](https://www.quantconnect.com/docs/v2.md) > [Cloud Platform](https://www.quantconnect.com/docs/v2/cloud-platform.md) > [Live Trading](https://www.quantconnect.com/docs/v2/cloud-platform/live-trading.md) > [Brokerages](https://www.quantconnect.com/docs/v2/cloud-platform/live-trading/brokerages.md) > Kraken

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

## Introduction

QuantConnect enables you to run your algorithms in live mode with real-time market data.

[Kraken](https://kraken.pxf.io/m53RPO) was founded by Jesse Powell in 2011 with the goal to "accelerate the adoption of cryptocurrency so that you and the rest of the world can achieve financial freedom and inclusion". Kraken provides access to trading Crypto through spot and Futures markets for clients with a minimum deposit of around $0-$150 USD for [currency](https://support.kraken.com/hc/en-us/articles/360000381846) and [Crypto deposits](https://support.kraken.com/hc/en-us/articles/360000292886-Cryptocurrency-deposit-fees-and-minimums). Kraken also provides staking services, educational content, and a developer grant program.

To view the implementation of the Kraken brokerage integration, see the [Lean.Brokerages.Kraken repository](https://github.com/QuantConnect/Lean.Brokerages.Kraken).

## Account Types

Kraken supports cash and margin accounts. To set the account type in an algorithm, see the [Kraken brokerage model documentation](https://www.quantconnect.com/docs/v2/writing-algorithms/reality-modeling/brokerages/supported-models/kraken.md).

### Create an Account

Follow the [account creation wizard](https://www.kraken.com/sign-up) on the Kraken website to create a Kraken account.

You will need API credentials to deploy live algorithms with your brokerage account. After you open your account, [create API credentials](https://support.kraken.com/hc/en-us/articles/360000919966-How-to-generate-an-API-key-pair-) and store them somewhere safe.

### Paper Trading

The Kraken brokerage doesn't support paper trading, but you can follow these steps to simulate it with QuantConnect:

1. In the `initialize` method of your algorithm, [set the Kraken brokerage model and your account type](https://www.quantconnect.com/docs/v2/writing-algorithms/reality-modeling/brokerages/supported-models/kraken.md).
2. [Deploy your algorithm with the QuantConnect Paper Trading brokerage](https://www.quantconnect.com/docs/v2/cloud-platform/live-trading/brokerages/quantconnect-paper-trading.md#15-Deploy-Live-Algorithms).

### Rewards Program

QuantConnect doesn't account for assets you enable in Kraken's [rewards program](https://support.kraken.com/hc/en-us/articles/overview-of-rewards-on-kraken).

## Asset Classes

Our Kraken integration supports trading [Crypto](https://www.quantconnect.com/docs/v2/writing-algorithms/securities/asset-classes/crypto.md).

## Data Providers

The [QuantConnect data provider](https://www.quantconnect.com/docs/v2/cloud-platform/datasets/quantconnect/crypto.md) provides Crypto data during live trading.

## Orders

We model the Kraken API by supporting several order types, supporting order properties, and not supporting order updates. When you deploy live algorithms, you can [place manual orders](https://www.quantconnect.com/docs/v2/cloud-platform/live-trading/algorithm-control.md#03-Place-Manual-Trades) through the IDE.

### Order Types

The following table describes the available order types for each asset class that our Kraken integration supports:

| Order Type | Crypto |
| --- | --- |
| [Market](https://www.quantconnect.com/docs/v2/writing-algorithms/trading-and-orders/order-types/market-orders.md) | ![green check](https://cdn.quantconnect.com/i/tu/check.png) |
| [Limit](https://www.quantconnect.com/docs/v2/writing-algorithms/trading-and-orders/order-types/limit-orders.md) | ![green check](https://cdn.quantconnect.com/i/tu/check.png) |
| [Limit if touched](https://www.quantconnect.com/docs/v2/writing-algorithms/trading-and-orders/order-types/limit-if-touched-orders.md) | ![green check](https://cdn.quantconnect.com/i/tu/check.png) |
| [Stop market](https://www.quantconnect.com/docs/v2/writing-algorithms/trading-and-orders/order-types/stop-market-orders.md) | ![green check](https://cdn.quantconnect.com/i/tu/check.png) |
| [Stop limit](https://www.quantconnect.com/docs/v2/writing-algorithms/trading-and-orders/order-types/stop-limit-orders.md) | ![green check](https://cdn.quantconnect.com/i/tu/check.png) |

### Order Properties

We model custom order properties from the Kraken API. The following table describes the members of the `KrakenOrderProperties` object that you can set to customize order execution:

| Property | Data Type | Description | Default Value |
| --- | --- | --- | --- |
| `time_in_force` | `TimeInForce` | A [TimeInForce](https://www.quantconnect.com/docs/v2/writing-algorithms/trading-and-orders/order-properties.md#03-Time-In-Force) instruction to apply to the order. The following instructions are supported: `DAY` `GOOD_TIL_CANCELED` `good_til_date` | `TimeInForce.GOOD_TIL_CANCELED` |
| `post_only` | `bool` | A flag to signal that the order must only add liquidity to the order book and not take liquidity from the order book. If part of the order results in taking liquidity rather than providing liquidity, the order is rejected without any part of it being filled. |  |
| `fee_in_base` | `bool` | A flag to signal that the order fees should be paid in the base currency, which is the default behavior when selling. This flag must be the opposite of the `fee_in_quote` flag. |  |
| `fee_in_quote` | `bool` | A flag to signal that the order fees should be paid in the quote currency, which is the default behavior when buying. This flag must be the opposite of the `fee_in_base` flag. |  |
| `no_market_price_protection` | `bool` | A flag to signal that no [Market Price Protection](https://support.kraken.com/hc/en-us/articles/201648183-Market-Price-Protection) should be used. |  |
| `conditional_order` | `Order` | An `Order` that's submitted when the primary order is executed. The `conditional_order` quantity must match the primary order quantity and the `conditional_order` direction must be the opposite of the primary order direction. This order property is only available for live algorithms. |  |

### Updates

We model the Kraken API by not supporting order updates, but you can cancel an existing order and then create a new order with the desired arguments. For more information about this workaround, see the [Workaround for Brokerages That Don’t Support Updates](https://www.quantconnect.com/docs/v2/writing-algorithms/trading-and-orders/order-management/order-tickets.md#workaround-for-brokerages-that-dont-support-updates).

## Fees

To view the Kraken trading fees, see the [Fee Schedule](https://www.kraken.com/features/fee-schedule) page on the Kraken website. To view how we model their fees, see [Fees](https://www.quantconnect.com/docs/v2/writing-algorithms/reality-modeling/brokerages/supported-models/kraken.md#06-Fees).

## Margin

We model [buying power](https://www.quantconnect.com/docs/v2/writing-algorithms/reality-modeling/brokerages/supported-models/kraken.md#07-Buying-Power) and [margin calls](https://www.quantconnect.com/docs/v2/writing-algorithms/reality-modeling/margin-calls.md) to ensure your algorithm stays within the margin requirements.

## Slippage

Orders through Kraken do not experience slippage in backtests and [QuantConnect Paper Trading](https://www.quantconnect.com/docs/v2/cloud-platform/live-trading/brokerages/quantconnect-paper-trading.md). In live trading, your orders may experience slippage.

To view how we model Kraken slippage, see [Slippage](https://www.quantconnect.com/docs/v2/writing-algorithms/reality-modeling/brokerages/supported-models/kraken.md#05-Slippage).

## Fills

QuantConnect fills market orders immediately and completely in backtests and [QuantConnect Paper Trading](https://www.quantconnect.com/docs/v2/cloud-platform/live-trading/brokerages/quantconnect-paper-trading.md). In live trading, if the quantity of your market orders exceeds the quantity available at the top of the order book, your orders are filled according to what is available in the order book.

To view how we model Kraken order fills, see [Fills](https://www.quantconnect.com/docs/v2/writing-algorithms/reality-modeling/brokerages/supported-models/kraken.md#04-Fills).

## Settlements

Trades settle immediately after the transaction

To view how we model settlement for Kraken trades, see [Settlement](https://www.quantconnect.com/docs/v2/writing-algorithms/reality-modeling/brokerages/supported-models/kraken.md#08-Settlement).

## Security and Stability

Note the following security and stability aspects of our Kraken integration.

### Account Credentials

When you deploy live algorithms with Kraken, we don't save your credentials.

### API Outages

We call the Kraken API to place live trades. Sometimes the API may be down. Check the [Kraken status page](https://status.kraken.com/) to see if the API is currently working.

## Deposits and Withdrawals

You can deposit and withdraw cash from your brokerage account while you run an algorithm that's connected to the account. We sync the algorithm's cash holdings with the cash holdings in your brokerage account every day at 7:45 AM Eastern Time (ET).

## Demo Algorithm

The following algorithm demonstrates the functionality of the Kraken brokerage:

```python
# Demonstrate Kraken brokerage functionality with an EMA crossover strategy.
class KrakenDemoAlgorithm(QCAlgorithm):
    def initialize(self) -> None:
        self.set_start_date(2024, 9, 1)
        self.set_end_date(2024, 12, 31)
        self.set_cash(100000)
        self.set_brokerage_model(BrokerageName.KRAKEN, AccountType.CASH)
        self._symbol = self.add_crypto("BTCUSD", Resolution.DAILY, Market.KRAKEN).symbol
        self._fast = self.ema(self._symbol, 10, Resolution.DAILY)
        self._slow = self.ema(self._symbol, 50, Resolution.DAILY)

    def on_data(self, slice: Slice) -> None:
        if not self._slow.is_ready:
            return
        if self._fast.current.value > self._slow.current.value and not self.portfolio.invested:
            self.set_holdings(self._symbol, 1)
        elif self._fast.current.value < self._slow.current.value and self.portfolio.invested:
            self.liquidate()
```

## Virtual Pairs

All fiat and Crypto currencies are individual assets. When you buy a pair like BTCUSD, you trade USD for BTC. In this case, LEAN removes some USD from your portfolio [cashbook](https://www.quantconnect.com/docs/v2/writing-algorithms/portfolio/cashbook.md) and adds some BTC. The virtual pair BTCUSD represents your position in that trade, but the virtual pair doesn't actually exist. It simply represents an open trade. When you deploy a live algorithm, LEAN populates your cashbook with the quantity of each currency, but it can't get your position of each virtual pair.

## Deploy Live Algorithms

You must have an available [live trading node](https://www.quantconnect.com/docs/v2/cloud-platform/organizations/resources.md#04-Live-Trading-Nodes) for each live trading algorithm you deploy.

Follow these steps to deploy a live algorithm:

1. [Open the project](https://www.quantconnect.com/docs/v2/cloud-platform/projects/getting-started.md#02-View-All-Projects) you want to deploy.
2. Click the ![Lightning icon](https://cdn.quantconnect.com/i/tu/deploy-live-icon.png) **Deploy Live** icon.
3. On the Deploy Live page, click the **Brokerage** field and then click **Kraken Exchange** from the drop-down menu.
4. Enter your Kraken API secret and key.
   Gather your API credentials from the [API Management Settings](https://www.kraken.com/u/security/api) page on the Kraken website. Your account details are not saved on QuantConnect.
5. Click the **Verification Tier** field and then click your verification tier from the drop-down menu.
   For more information about verification tiers, see [Verification levels explained](https://support.kraken.com/hc/en-us/articles/360001395743-Verification-levels-explained) on the Kraken website.
6. In the **Region** section, click the [region](https://www.quantconnect.com/docs/v2/cloud-platform/live-trading/getting-started.md#07-Redundancy) where you want to run the algorithm.
7. Click the **Node** field and then click the live trading node that you want to use from the drop-down menu.
8. (Optional) In the **Data Provider** section, click **Show** and change the data provider or add additional providers.
9. (Optional) [Set up notifications](https://www.quantconnect.com/docs/v2/cloud-platform/live-trading/notifications.md).
10. Configure the **Automatically restart algorithm** setting.
   By enabling [automatic restarts](https://www.quantconnect.com/docs/v2/cloud-platform/live-trading/deployment.md#07-Automatic-Restarts), the algorithm will use best efforts to restart the algorithm if it fails due to a runtime error. This can help improve the algorithm's resilience to temporary outages such as a brokerage API disconnection.
11. Click **Deploy**.

The deployment process can take up to 5 minutes. When the algorithm deploys, the [live results page](https://www.quantconnect.com/docs/v2/cloud-platform/live-trading/results.md) displays. If you know your brokerage positions before you deployed, you can verify they have been loaded properly by checking your equity value in the runtime statistics, your cashbook holdings, and your position holdings.

Restarts, including automatic restarts and redeployments, don't save the state of your algorithm. To learn what a restart recovers and how to persist the rest, see [State Persistence](https://www.quantconnect.com/docs/v2/cloud-platform/live-trading/deployment.md#10-State-Persistence).

## Deployment Details

When you deploy a live algorithm with Kraken, the brokerage shares some details of the deployment, like the account it trades. Use them to tell concurrent deployments apart or to check that the algorithm connected to the account you expect. The details never include credentials.

The following table describes the deployment details that Kraken shares:

| Key | Description |
| --- | --- |
| `kraken-verification-tier` | The verification tier of the account, which sets the API rate limits. It's `Starter`, `Intermediate`, or `Pro`. |
| `kraken-orderbook-depth` | The number of price levels in the order book feed that LEAN subscribes to for each pair. The default is `10`. |

The `deployment_details` property of your algorithm is a read-only dictionary of the details. LEAN populates it before it calls the `initialize` method, so you can read it anywhere in your algorithm.

```python
deployment_details = [f'{kvp.key}:{kvp.value}' for kvp in self.deployment_details]
self.log(f'deployment_details: {deployment_details}')
```

The [/live/read](https://www.quantconnect.com/docs/v2/cloud-platform/api-reference/live-management/read-live-algorithm/live-algorithm-statistics.md) API endpoint also returns the details in its `deploymentDetails` field, so you can read them outside of the algorithm.
