Sharpe vs Sortino — reproducible checking protocol 1. Record the source, date range, observation frequency, valuation basis, currency, cost treatment and any missing observations before calculating. Use equal-period simple percentage returns, not prices, deposits or log returns. 2. Paste one return per line. A value of 1 means 1%, not 100%. Preserve zeros, duplicates and order. Check that N matches the source; never remove an inconvenient period. One final line break is a file delimiter, not an extra observation. 3. Record a constant per-period Rf and a separate constant per-period MAR. Verify that their units and observation period match the returns. A period label changes no arithmetic; there is no annual conversion. 4. Compute the arithmetic mean. Subtract the mean from every return, square every deviation, add all squares, divide by N−1, and take the square root. This is the sample standard deviation. 5. Subtract Rf from the mean. Divide this numerator by the sample standard deviation to get Sharpe. If that deviation is zero, write undefined and retain the reason; do not insert zero or infinity. 6. For every return calculate min(0, return−MAR), then square it. Keep zero contributions from observations at or above MAR. Add all squares, divide by the full N, and take the square root. 7. Subtract MAR from the mean and divide by the downside deviation to get Sortino. If no shortfall was observed, write undefined, not safe or infinite. Keep negative ratios when their denominators are positive. 8. Check fictional A: −1, −1, 1, 5%; Rf=MAR=0%. Mean 1%; squared-deviation sum 24 pp²; sample variance 8 pp²; SD (√8)%; Sharpe 0.353553390593. Shortfall-square sum 2 pp²; full-N moment 0.5 pp²; downside deviation (√0.5)%; Sortino 1.414213562373. 9. Check fictional B: −3, 1, 3, 3% with the same benchmarks. Mean and sample SD match A. Shortfall-square sum 9 pp²; full-N moment 2.25 pp²; downside deviation 1.5%; Sortino 2/3. With A, Rf=0.25% and MAR=1.5%, Sharpe≈0.265165042945 and Sortino≈−0.280056016806. 10. Reconcile both table row counts and every squared contribution with the result CSV. Its numeric columns use a decimal point and semicolon separators. Exact fractions use decimal-return units; multiply a return by 100 for percent, or a squared return by 10000 for pp². 11. For a spreadsheet check, use numeric return cells in one consistent unit, AVERAGE and STDEV.S for mean/sample SD, and a separate shortfall column containing MIN(0, return−MAR). English function names and argument separators may differ in your spreadsheet locale. Verify COUNT first: spreadsheet functions can silently ignore blank or text cells. 12. Save the complete inputs, assumptions and result together. Compare only compatible periods, units, costs and conventions. Short samples, serial correlation and a lack of observed downside do not establish future performance or safety. Do not mechanically apply a square-root annualization factor. Your verification record Data source and date range: ____________________ Observation period, currency and valuation basis: ____________________ Fees/costs and missing-data treatment: ____________________ N / below-MAR count: ____________________ Rf per period / MAR per period: ____________________ Mean / sample SD / downside deviation: ____________________ Sharpe / Sortino / undefined reasons: ____________________ Row reconciliation and checks completed: ____________________ Limitations and comparison assumptions: ____________________ 2–240 observations. Returns, Rf and MAR: −100% to +1,000% inclusive, at most 6 decimal places. Maximum 8,192 characters for the return list and 80 per value. No blank observations, headers, dates, percent signs, currency symbols, grouping separators or exponent notation. One final line break is accepted. A −100% observation is allowed for sample arithmetic; this is not a compounded account-value calculation. This form calculates in your browser memory. It does not send the entered returns to a server or save them in persistent storage. Separate site analytics are outside this form.