Expense ratios in this app are stored and displayed in percent units:
0.45 means 0.45% per year. One convention applies everywhere. Securities & prices,
the Screener table and the Classic-score fee term all read it the same way.
Peer score and Optimize use adjusted-close returns without a separate ER term.
Why this needs saying at all
Data sources disagree about units. Yahoo sends two expense-ratio fields: a
net ratio already in percent, and an annual-report ratio as a fraction
(0.0045). The profile fetch converts each by the field it came from and
prefers the net ratio, the fee Yahoo and the brokers headline. Databases
that have been fed by older imports can genuinely contain mixed units,
with some rows in percent and others in fraction.
That is why the app never runs a blanket "multiply everything by 100" repair: on a mixed database it would fix half the rows and corrupt the other half. Normalization happens where the unit is knowable, at fetch; a suspicious value is better re-fetched or edited by hand on Securities & prices than "fixed" in bulk.
Sanity check when a number looks off: real fund ERs live between 0 and about 1.5 in percent units, and broad index funds sit near the bottom (0.015 for an S&P 500 index fund). A displayed ER of 0.0045 is almost certainly a fraction that slipped through.
Repairing a wrong expense ratio
Earlier builds read the annual-report field first, and on some databases it left mutual funds holding another fund's fee: an S&P 500 index fund showing 0.77 instead of 0.015. Re-downloading the profile replaces it. On Securities & prices, select the funds and choose Download profiles, or use Download all under Profiles. The download runs one ticker at a time, so a large list takes a while. A value you typed by hand is overwritten too, so check any you entered yourself afterwards.
CSV imports leave ER blank rather than guessing; the profile fetch is the one source trusted to fill it.