Configure broker credentials and strategy sizing in a Google Sheet you own. Credentials never touch our database.
Execute reads your broker credentials and strategy sizing from a Google Sheet that you own. Your API keys and tokens live in your spreadsheet, not in our database. Revoke access at any time by unsharing the sheet.
Three reasons:
Never share your Google Sheet link publicly. It contains broker API credentials. Only share with the Execute service account provided during onboarding.
Open a new Google Sheet (or use an existing one) and create a tab named AccountConfig. This exact name is required.
Add these columns in the first row:
| Column | Type | Description |
|---|---|---|
enabled | TRUE/FALSE | Whether Execute uses this account. Set to FALSE to pause without deleting the row. |
broker | Text | Broker identifier: zerodha or ibkr |
account_id | Text | Your broker account ID (e.g., DU1234567 for IBKR, AB1234 for Zerodha) |
api_key | Text | API key from your broker's developer console |
api_secret | Text | API secret (Zerodha) or not used (IBKR — authentication runs through the gateway) |
token | Text | Access token. For Zerodha, this is the session token generated daily via Kite login. For IBKR, leave blank — the gateway handles sessions. |
Interactive Brokers:
DU for paper, U for live)Zerodha:
api_key and api_secrettoken column requires a session token generated via the Kite login flow. This token refreshes daily.Zerodha tokens expire daily. Ensure your token generation process runs before market open. IBKR uses a persistent gateway that manages sessions automatically.
For each built-in strategy you want to run, add sizing columns to control how Execute calculates position size on that account.
Two columns per strategy:
| Column | Purpose | Example |
|---|---|---|
{strategy}_size | Position size — max capital amount that can be deployed in a trade. Also known as margin blocked. | sst_size: 50000 = allocate $50,000 and compute lots from margin. |
{strategy}_risk | Dollar/rupee risk per trade. The risk engine calculates lots so that a full SL hit equals this amount. | sst_risk: 500 = risk $500 per SST trade on this account. |
When both _size and _risk are set, the tighter constraint wins. If risk-based sizing produces fewer lots than capital-based sizing, you get the smaller number.
Strategy codes: sst, gss, cst, stob, ics, rsi5. Use lowercase in column names.
Strategies without sizing columns on an account are skipped. To run SST on Account A but not Account B, add sst_size only to Account A's row.
Here is a complete row for an IBKR account running SST and GSS:
enabled | broker | account_id | api_key | api_secret | token | sst_size | sst_risk | gss_size | gss_risk
TRUE | ibkr | U1234567 | abc123key | | | 1000 | 50 | 1000 | 100
This account trades that many lots on SST entries where risk for that trade does not exceed $50 (capped at $1000 of capital deployed per trade). Similarly for GSS entries, it risks $100 per trade, with total capital deployed capped at $1000.
Add one row per broker account. Execute processes all enabled rows in parallel — entries fire simultaneously across every account where the strategy has sizing configured.
Start with a single account. Once you confirm entries and exits are flowing correctly, add more rows. There is no limit on the number of accounts.
Each account operates independently:
The Killswitch tab (exact name required) configures aggregate P&L thresholds per strategy. When a strategy's combined unrealized P&L crosses your threshold, Execute exits every open trade in that strategy automatically.
See Strategy Kill Switch for configuration details, parameter reference, and examples.
Changes to your Google Sheet take up to 55 minutes to take effect. The system caches your sheet configuration to avoid excessive API calls. If you need to stop trading immediately, log into your broker directly — do not rely on sheet changes for emergency stops.
"Account not found" in Telegram alerts: The account_id in your sheet does not match what the broker API returns. Double-check the exact ID from your broker's account management page.
"Strategy skipped — no sizing config": The strategy fired, but your account row does not have the corresponding {strategy}_size column, or the value is empty. Add the column and set a value.
"Insufficient margin" retries: Execute automatically retries with one fewer lot when margin is insufficient (down to 1 lot). If you see repeated margin rejections, your _size or _risk values are too large for the available margin in that account. Reduce the sizing or add capital to the account.
Orders not firing: Check that enabled is set to TRUE (not "Yes", not "1" — the literal text TRUE). Verify the token is current (Zerodha tokens expire daily).
This is engineering infrastructure, not investment advice. All trading involves risk of loss.