{"summary":{"engine":"xirr","engine_version":"xirr-1.0.0","passed":7,"failed":0,"pending":0,"all_passing":true,"workbook_sha256":"60ee1b284e1052120bfe353848d773625f9ec7588c37e4ce2738e77375c3af52","checked_at":"2026-09-05T13:30:28.309127+00:00"},"conventions":{"day_count":"ACT/365 — day offsets divided by 365, matching Excel XIRR.","solver":"Newton-Raphson from guess 0.1 with bisection fallback; reproduces the root Excel XIRR(...,0.1) finds.","npv":"Rate solves sum(CF_i / (1+rate)^(days_i/365)) = 0.","tolerance":"XIRR compared at 1e-6 (engine rounds the rate to 6dp); cash to the cent; ratios to 1e-3.","solver_limitation":"Bisection fallback is bounded to [-0.999, 10.0]. Newton handles rates above 1000% directly (proven by the ~2468% case), but a case that both fails Newton and exceeds 1000% would not be found by the fallback."},"tolerances":{"cash":0.01,"irr":1e-06,"moic":0.001},"cases":[{"id":"xirr_pe_jcurve","status":"pass","source":{"workbook":"xirr.xlsx","sha256":"60ee1b284e1052120bfe353848d773625f9ec7588c37e4ce2738e77375c3af52","formula":"=XIRR(amounts, dates, 0.1)  (guess 0.1, ACT/365)","recalc":"LibreOffice Calc headless (validated to ~1e-9 against the workbook's Excel XIRR value)"}},{"id":"xirr_two_flow","status":"pass","source":{"workbook":"xirr.xlsx","sha256":"60ee1b284e1052120bfe353848d773625f9ec7588c37e4ce2738e77375c3af52","formula":"=XIRR(amounts, dates, 0.1)  (guess 0.1, ACT/365)","recalc":"LibreOffice Calc headless (validated to ~1e-9 against the workbook's Excel XIRR value)"}},{"id":"xirr_sign_flips","status":"pass","source":{"workbook":"xirr.xlsx","sha256":"60ee1b284e1052120bfe353848d773625f9ec7588c37e4ce2738e77375c3af52","formula":"=XIRR(amounts, dates, 0.1)  (guess 0.1, ACT/365)","recalc":"LibreOffice Calc headless (validated to ~1e-9 against the workbook's Excel XIRR value)"}},{"id":"xirr_capital_call","status":"pass","source":{"workbook":"xirr.xlsx","sha256":"60ee1b284e1052120bfe353848d773625f9ec7588c37e4ce2738e77375c3af52","formula":"=XIRR(amounts, dates, 0.1)  (guess 0.1, ACT/365)","recalc":"LibreOffice Calc headless (validated to ~1e-9 against the workbook's Excel XIRR value)"}},{"id":"xirr_negative_return","status":"pass","source":{"workbook":"xirr.xlsx","sha256":"60ee1b284e1052120bfe353848d773625f9ec7588c37e4ce2738e77375c3af52","formula":"=XIRR(amounts, dates, 0.1)  (guess 0.1, ACT/365)","recalc":"LibreOffice Calc headless (validated to ~1e-9 against the workbook's Excel XIRR value)"}},{"id":"xirr_daily_irregular","status":"pass","source":{"workbook":"xirr.xlsx","sha256":"60ee1b284e1052120bfe353848d773625f9ec7588c37e4ce2738e77375c3af52","formula":"=XIRR(amounts, dates, 0.1)  (guess 0.1, ACT/365)","recalc":"LibreOffice Calc headless (validated to ~1e-9 against the workbook's Excel XIRR value)"}},{"id":"xirr_high_return","status":"pass","source":{"workbook":"xirr.xlsx","sha256":"60ee1b284e1052120bfe353848d773625f9ec7588c37e4ce2738e77375c3af52","formula":"=XIRR(amounts, dates, 0.1)  (guess 0.1, ACT/365)","recalc":"LibreOffice Calc headless (validated to ~1e-9 against the workbook's Excel XIRR value)"}}]}