Brokerages

Zerodha

Introduction

QuantConnect enables you to run your algorithms in live mode with real-time market data. We have successfully hosted more than 200,000 live algorithms and have had more than $22B in volume traded on our servers since 2015.

Zerodha was founded by Nithin Kamath in 2010 with the goal to break all barriers that traders and investors face in India in terms of cost, support, and technology. Zerodha provides access to India Equities for clients in India with no minimum balance required. Zerodha also provides a mutual fund investment platform and an interactive portfolio dashboard.

To view the implementation of the Zerodha brokerage integration, see the Lean.Brokerages.Zerodha repository.

Account Types

Zerodha supports cash and margin accounts. To set the account type in an algorithm, see the Zerodha brokerage model documentation.

Zerodha only supports trading Indian Rupees, so set the account currency of your algorithm to INR.

Create an Account

To create a Zerodha account, follow the account creation wizard on the Zerodha website.

You will need API credentials to deploy live algorithms with your brokerage account. After you open your Zerodha account, follow these steps to get your API credentials:

  1. Create a Kite Connect developer account.
  2. On the My apps page, click Create new app.
  3. On the Create a new app page, fill in the form.
  4. For the Redirect URL field, if you don't have a redirect URL, use https://zerodha.com.

  5. Click Create.
  6. Copy and save your API key and API secret.
  7. In a terminal, run the following Python script:
    # Initialize KiteConnect, open the login URL, and generate a session 
    # using the request token and API secret.
    from kiteconnect import KiteConnect
    import webbrowser
    
    api_key = input("Enter your API key: ")
    kite = KiteConnect(api_key=api_key)
    ​webbrowser.open(kite.login_url())
    request_token = input("Enter your request_token: ")
    api_secret = input("Enter your API secret: ")
    data = kite.generate_session(request_token, api_secret=api_secret)
    kite.set_access_token(data["access_token"])
    print(f"Your access_token is {data['access_token']}")

    Input the data that the script requests. When the script opens your redirect URL page, log in and then copy the request token that's in the URL parameters.

    When the script prints your access token. Copy and save it somewhere safe.

Paper Trading

Zerodha doesn't support paper trading.

Asset Classes

Our Zerodha integration supports trading Indian Equities.

Data Providers

The Zerodha data provider provides India Equities data during live trading.

Orders

We model the Zerodha API by supporting several order types, order properties, and order updates. When you deploy live algorithms, you can place manual orders through the IDE.

Order Types

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

Order TypeIndia Equity
Marketgreen check
Limitgreen check
Stop marketgreen check
Stop limitgreen check

Order Properties

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

PropertyData TypeDescriptionDefault Value
ExchangeexchangeExchangeSelect the exchange for sending the order to. The following instructions are available:
  • Exchange.NSE
  • Exchange.BSE
ProductTypeproduct_typestringstr A ProductTypeproduct_type instruction to apply to the order. The IndiaOrderProperties.IndiaProductType enumeration has the following members:
TimeInForcetime_in_forceTimeInForceA TimeInForce instruction to apply to the order. The following instructions are available:
  • DayDAY
  • GoodTilCanceledGOOD_TIL_CANCELED
  • GoodTilDategood_til_date
TimeInForce.GoodTilCanceledTimeInForce.GOOD_TIL_CANCELED

Updates

We model the Samco Zerodha by supporting order updates.

Handling Splits

If you're using raw data normalization and you have active orders with a limit, stop, or trigger price in the market for a US Equity when a stock split occurs, the following properties of your orders automatically adjust to reflect the stock split:

  • Quantity
  • Limit price
  • Stop price
  • Trigger price

Fees

To view the Zerodha trading fees, see the Charges page on the Zerodha website. To view how we model their fees, see Fees.

Margin

We model buying power and margin calls to ensure your algorithm stays within the margin requirements. The amount of margin available depends on the Equity and product type. To check the amount of margin available for each asset, see the Margin Calculator on the Zerodha website.

Slippage

Orders through Zerodha do not experience slippage in backtests. In live trading, your orders may experience slippage.

To view how we model Zerodha slippage, see Slippage.

Fills

We fill market orders immediately and completely in backtests. 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 Zerodha order fills, see Fills.

Settlements

If you trade with a margin account, trades settle immediately

To view how we model settlement for Zerodha trades, see Settlement.

Security and Stability

When you deploy live algorithms with Zerodha, we don't save your brokerage account credentials.

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 Zerodha brokerage:

Deploy Live Algorithms

You must have an available live trading node for each live trading algorithm you deploy.

Follow these steps to deploy a live algorithm:

  1. Open the project you want to deploy.
  2. Click the Lightning icon Deploy Live icon.
  3. On the Deploy Live page, click the Brokerage field and then click Zerodha from the drop-down menu.
  4. Enter your Kite Connect access token and key.
  5. To get your access token and key, see Account Types. Your account details aren't saved on QuantConnect.

  6. Click the Product Type field and then click one of the following options from the drop-down menu:
  7. Product TypeDescription
    MISIntraday products
    CNCDelivery products
    NRMLCarry forward products
  8. Click the Trading Segment field and then click one of the following options from the drop-down menu:
  9. Trading SegmentDescription
    EQUITYFor trading Equities on the National Stock Exchange of India (NSE) or the Bombay Stock Exchange (BSE)
    COMMODITYFor trading commodities on the Multi Commodity Exchange of India (MCX)
  10. Click the History Subscription field and then click Yes or No from the drop-down menu.
  11. Use this field to declare whether you have a history API subscription on your Kite Connect account.

  12. Click the Node field and then click the live trading node that you want to use from the drop-down menu.
  13. In the Data Provider section, click Show and then change the QuantConnect data provider to the Zerodha data provider.
  14. (Optional) Set up notifications.
  15. Configure the Automatically restart algorithm setting.
  16. By enabling 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.

  17. Click Deploy.

The deployment process can take up to 5 minutes. When the algorithm deploys, the live results page 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.

You can also see our Videos. You can also get in touch with us via Discord.

Did you find this page helpful?

Contribute to the documentation: