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:
- Create a Kite Connect developer account.
- On the My apps page, click .
- On the Create a new app page, fill in the form.
- Click .
- Copy and save your API key and API secret.
- 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.
For the Redirect URL field, if you don't have a redirect URL, use https://zerodha.com.
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 Type | India Equity |
---|---|
Market | |
Limit | |
Stop market | |
Stop limit |
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:
Property | Data Type | Description | Default Value |
---|---|---|---|
Exchange exchange | Exchange | Select the exchange for sending the order to. The following instructions are available:
| |
ProductType product_type | string str |
A ProductType product_type instruction to apply to the order. The IndiaOrderProperties.IndiaProductType enumeration has the following members:
| |
TimeInForce time_in_force | TimeInForce | A TimeInForce instruction to apply to the order. The following instructions are available:
| TimeInForce.GoodTilCanceled TimeInForce.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
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.
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:
- Open the project you want to deploy.
- Click the Deploy Live icon.
- On the Deploy Live page, click the Brokerage field and then click from the drop-down menu.
- Enter your Kite Connect access token and key.
- Click the Product Type field and then click one of the following options from the drop-down menu:
- Click the Trading Segment field and then click one of the following options from the drop-down menu:
- Click the History Subscription field and then click or from the drop-down menu.
- Click the Node field and then click the live trading node that you want to use from the drop-down menu.
- In the Data Provider section, click and then change the QuantConnect data provider to the Zerodha data provider.
- (Optional) Set up notifications.
- Configure the Automatically restart algorithm setting.
- Click .
To get your access token and key, see Account Types. Your account details aren't saved on QuantConnect.
Product Type | Description |
---|---|
Intraday products | |
Delivery products | |
Carry forward products |
Trading Segment | Description |
---|---|
For trading Equities on the National Stock Exchange of India (NSE) or the Bombay Stock Exchange (BSE) | |
For trading commodities on the Multi Commodity Exchange of India (MCX) |
Use this field to declare whether you have a history API subscription on your Kite Connect account.
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.
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.