Every metric is a small WebAssembly module with a manifest that declares the data it reads. It runs in a sandbox with no file, network or system access, against your portfolio only.
17metrics in the repository
0I/O imports allowed
4 MiBmemory ceiling
MITopen source license
Catalog
Reviewed metrics
Bundled with the application and reviewed by pull request. Add any of them to a portfolio under Preferences → Metrics.
Live net worth of the portfolio. It adds the market value of every open position to the uninvested cash balance, with foreign assets converted into your base currency.
This is the single number that answers 'what is my portfolio worth right now'. Use it as the headline figure and as the baseline for allocation and risk decisions.
Value change of your open positions during the current trading session, measured against the previous official close of each holding.
Shows how today's market moves hit your capital. It separates short-term noise from your long-term result and tells you if a market event touched your holdings.
All-time net result since the first transaction. It combines unrealized gains, realized profits from closed positions, dividends, and interest, minus broker fees.
The honest measure of the wealth your portfolio created. Daily and monthly swings cancel out, so you see if your strategy works over the full holding period.
Uninvested cash held in the portfolio, calculated from deposits, withdrawals, buys, sells, dividends, and fees.
Free cash is your reaction capacity. It shows the money available for a new position or a market drop, and how much of your portfolio currently earns no market return.
Total principal you moved into the portfolio, that is all deposits minus all capital withdrawals.
Separates your own savings from market growth. It is the denominator of your return, so it tells you if the portfolio grew because of performance or because of new money.
Profit or loss locked in by executed sells, calculated against the cost basis of each sold position.
Realized results cannot be taken back by a later market drop, and they usually drive your tax bill. Watch it to judge your exit decisions, not only your open positions.
All cash distributions credited to the portfolio: dividends from equities and funds, plus interest and coupon payments.
Income arrives independently of price moves and keeps compounding when reinvested. It shows the cash yield of your holdings during flat or falling markets.
Sum of all commissions and order fees charged on your transactions since inception.
Fees are a certain loss while returns are not. Tracking the total exposes expensive trading habits or an expensive broker before they erode your performance.
Average beta of your positions, weighted by market value. Beta comes from Financial Modeling Prep and measures how much a security moved with the broad market. Holdings without a beta are left out; the sub-line shows how much of the portfolio is covered.
A beta of 1.3 means the portfolio tends to move 30% more than the market, up and down. It tells you how hard a market sell-off would hit you before it happens.
Price-to-earnings ratio of your stock holdings as one figure. It is the weighted harmonic mean of each trailing P/E from Financial Modeling Prep, which equals the total price divided by the total earnings you own. Loss-making companies and funds are left out.
A high P/E means the market prices in strong growth; a low one means cheap or troubled companies. Compare it with the market (around 20 for the S&P 500) to see if you hold an expensive or a cheap portfolio.
Trailing twelve month dividend yield of your stock holdings, weighted by market value, from Financial Modeling Prep. Stocks that pay nothing count as zero. Funds are left out because their yield is not in the data. The sub-line estimates the yearly income of the covered holdings.
Yield shows how much cash your stocks return without selling anything. A falling yield on the same holdings can mean cut dividends; a very high one can mean the market doubts the payout.
Gap between the current price and the consensus analyst price target of each stock, weighted by market value. Targets come from Financial Modeling Prep. Holdings without a target, and funds, are left out.
Positive upside means analysts expect your stocks to rise; a negative figure means you hold names that trade above their targets. Use it as a sentiment check, not a forecast: targets lag prices.
Gap between the price and the discounted cash flow value of each stock, weighted by market value. DCF values come from the Financial Modeling Prep model. Each upside is capped at +300% so one extreme model result does not dominate. Funds are left out.
A DCF value estimates what future cash flows are worth today. A portfolio well below its DCF values holds cheap businesses by that model; well above means you pay for growth the cash flows do not yet show.
Average Piotroski F-score of your stocks, weighted by market value. The score counts nine pass or fail checks on profit, debt and efficiency from the latest filings, as reported by Financial Modeling Prep. Funds are left out.
Scores of 7 and above point to improving fundamentals, 3 and below to weakening ones. A falling portfolio score warns that the businesses you own are getting weaker even when prices have not moved yet.
Share of the value of your stocks whose Altman Z-score is below 1.8, the distress zone, as reported by Financial Modeling Prep. The score combines working capital, retained earnings, operating profit, market value and sales. Funds are left out. Banks and insurers often score low by design.
Companies in the distress zone have a higher risk of financial trouble in the next two years. A rising share tells you to check the balance sheets of those positions before a credit event does it for you.
A module receives only the scopes its manifest requests. The application spells them out before a metric is added, and a module installed from a URL stays marked unverified.
Scope
Grants
Shown to the user as
portfolio.summary
Aggregate figures only: totals, cash, fees, taxes, weights. No symbols.
Every position you hold, including tickers and quantities.
portfolio.transactions
The full ledger: every transaction with symbol, type, amount, fee, and tax.
Your complete transaction history.
portfolio.history
The equity curve: portfolio value, cost, and cash per day.
Your portfolio value over time.
market.fundamentals
Public company data per held symbol: beta, valuation, dividends, analyst targets, DCF, financial scores. Needs a Financial Modeling Prep key.
Public company data for every symbol you hold. It names your symbols, not your quantities.
Contribute
Write your own
A metric is a few lines of AssemblyScript. Copy the template, describe it in a manifest, open a pull request, and it ships with the next release.
import { Summary, Result, Format } from "../../_sdk/portfolio";
export { metric_abi_version, metric_alloc } from "../../_sdk/portfolio";
export function metric_run(ptr: i32, len: i32): i32 {
const s = new Summary(ptr, len);
return new Result()
.value(s.totalFees, Format.Currency)
.text("Lifetime transaction costs")
.neutral()
.finish();
}
Read the contributor guide at
extras/metrics/README.md.
Modules built outside the repository can be installed from any URL; the application checks the size and SHA-256, rejects forbidden imports, and shows the requested scopes first.