Features

Optimize from Holdings

Start from the portfolio you already own instead of building it by hand. Upload your Zerodha or Groww holdings and your current positions become the starting point of the run, then the results show exactly how each method would have you rebalance. It works for Indian stocks and for mutual funds.

How it works

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

  1. The file is read as two separate portfolios: your stocks and your mutual funds. The page uses the one that matches the asset class you chose, and tells you how many holdings the file has for the other one. Stocks and funds never share a run.
  2. Each holding's current value is converted into a starting weight, normalised to sum to 100%. Bonds, ETFs and non-equity funds are removed first.
  3. Stocks are matched to listed equities by symbol or ISIN. Funds are matched to their scheme by ISIN (Zerodha) or by exact scheme name (Groww, whose fund report has no ISIN). Anything unmatched is dropped with its weight shown. A fund that matches two schemes is not guessed between, and a fund that changed its name can stay unmatched.
  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 current weights record where the portfolio starts. They do not change the optimization: each method produces the same target it would produce for the same stocks without them.

Your file is read, not kept

The spreadsheet is sent over HTTPS, read in memory on our server, and discarded as soon as the answer is returned. It is not stored, and neither its contents nor its file name are written to logs. What a run saves is only what you submit: the tickers or scheme codes and their starting weights.

Supported files

BrokerWhere to downloadWhat is read
ZerodhaConsole, Portfolio, Holdings, Download (.xlsx)The Equity sheet for stocks and the Mutual Funds sheet for funds. The Combined sheet repeats the other two and is ignored.
GrowwReports, Holdings, for stocks or for mutual funds (.xlsx)The stocks statement (Stock Name, ISIN, Quantity, Closing value) and the mutual funds report (Scheme Name, Units, Current Value). They are two files; upload the one that matches the asset class.

Upload the file as the broker gives it. A file edited into another layout, or from another broker, is refused with a message rather than read by guesswork.

The Groww layouts follow the published format of those two reports and have not yet been confirmed against a real Groww export.

What gets included

Only individual listed equities and equity mutual funds are optimized. The following are excluded:

ExcludedWhy
Bonds / debtListed bonds, NCDs, SDLs, T-bills and Sovereign Gold Bonds. There is no price series to optimize them against as equities.
ETFsExchange-traded funds held in the stock account. They are excluded so a stock run stays a pure single-stock optimization.
Non-equity mutual fundsDebt, hybrid, fund-of-funds and solution-oriented schemes, and close-ended or interval schemes, which do not redeem at NAV on every business day. A mutual fund run optimizes open-ended equity funds only, so these are removed and named.
Unmatched holdingsA stock that does not resolve to a listed NSE/BSE equity, or a fund that does not match a scheme, is dropped with its share of the portfolio shown so nothing disappears silently.

Rebalancing view

When a run starts from uploaded holdings, each method's result includes a Rebalancing to target panel. For every stock or fund 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, as are mutual fund runs. On the free plan the Upload holdings option shows a Pro badge and prompts an upgrade.

The same import is available to AI assistants through the FolioLab MCP server: share the file with the assistant and ask it to optimize your holdings. It reads the file with the same rules and submits the stocks and the funds as separate runs.

The free plan optimizes up to 10 stocks per run and Pro up to 100. Enterprise has no per-plan ticker limit.

These limits are enforced on the server, so they apply to the API and the MCP server as well as the web app. The web app surfaces them early as an upgrade prompt; a request above your limit is refused at submission and costs you no run quota.

One further ceiling applies to every plan, Enterprise included: a single request may carry at most 150 stocks, or 100 mutual funds. That bound is not commercial. It is the widest universe at which solve times were measured across the methods. One method has a lower practical limit: EWMA Mean-Variance cannot solve above about 100 stocks, because its risk model rests on about 32 effective observations. The run names that cause, and the other methods proceed.

See also

Not investment advice. Past performance is not indicative of future results.