Features

Optimize from Holdings

Start from the portfolio you already own instead of building it by hand. Upload your Zerodha holdings statement and the optimizer treats your current positions as the starting point, then shows exactly how each method would have you rebalance.

How it works

On the optimize page, with an Indian equity exchange selected, the Portfolio source card offers two modes: Enter portfolio (type-ahead search, the default) and Upload holdings. Choose Upload holdings and select your Zerodha .xlsx statement.

  1. The Equity sheet is read and bonds, ETFs and mutual funds are filtered out.
  2. Each holding's current value (quantity × previous close) is converted into a starting weight, normalised to sum to 100%.
  3. Symbols are matched to listed equities; anything unmatched is dropped with a visible count.
  4. You get an editable review list — remove any name you don't want and the weights re-normalise automatically.
  5. Run any methods you like; the results page adds a rebalancing view.

Your file never leaves your device

The spreadsheet is parsed entirely in your browser. Only the resulting list of tickers and starting weights is sent to the server — the file itself is never uploaded, stored, or logged. Holdings are ephemeral by construction.

What gets included

Only individual listed equities are optimized. The following are excluded so the run is a clean single-stock optimization:

ExcludedWhy
Bonds / debtRows whose Sector is DEBT (listed bonds, SDLs, T-bills, NCDs). They are not optimized as equities.
ETFsRows whose Sector is ETF. Fund-of-fund style wrappers are excluded so the run stays a pure single-stock optimization.
Mutual fundsThe Mutual Funds sheet is ignored entirely — only the Equity sheet is read.
Unrecognised symbolsAny symbol that doesn't resolve to a listed NSE/BSE equity is dropped, with a count shown so nothing disappears silently.

Rebalancing view

When a run starts from uploaded holdings, each method's result includes a Rebalancing to targetpanel. For every ticker it shows your current weight, the method's target weight, and the change in percentage points — sorted by the size of the move, with increases and decreases colour-coded.

Positions you hold but the method drops show a move to 0%; names the method would add that you don't currently hold start from 0%. The view is intentionally expressed in weights only — it describes the target allocation, not buy/sell instructions.

Ignore tickers with less history

Every ticker needs at least ~150 trading days of price history to be optimized reliably. By default, if any selected name has too little history the whole run is rejected so you can fix the selection. The Ignore tickers with less history checkbox (in the Portfolio source card, for all equity runs) changes this: short-history names are dropped from the run instead, and the optimization proceeds on the rest.

Dropped names are always surfaced on the results page, and when this option was on the run is flagged with an amber indicator so it's clear some requested tickers were excluded. This is useful for uploaded holdings, where a few recently-listed names shouldn't block optimizing the rest of the portfolio.

Plan access

Optimizing from uploaded holdings is a Pro and Enterprise feature. On the free plan the Upload holdings option shows a Pro badge and prompts an upgrade.

The free plan also optimizes up to 10 stocks per run; Pro and Enterprise go up to 100. These limits are enforced on the server, so they apply to API calls as well as the web app — the UI just surfaces them early as an upgrade prompt.

See also