Colophon
About roi.mt
roi.mt is a small project to build the kind of return on investment (ROI) calculators a Maltese homeowner, investor, or worker actually needs — accurate, locally aware, free.
The catalogue covers the everyday Malta-specific decisions: solar ROI under the 2026 REWS grant, rental yield with the TA24 / Article 31E / progressive tax comparison, rent vs buy over a 25-year horizon, mortgage affordability under CBM Directive 16, gross-to-net salary across the 2026 MTCA bands, and ETF projection with the 15% Investment Income Provisions tax. UK and US financial calculators are not wrong in principle — they are wrong in practice for anyone making real decisions in Malta, where the tax structure, grant schemes, and regulatory framework are categorically different. New calculators are added when people request them — suggest yours on the home page.
About the author
Ian Grima Mahoney is a Maltese backend engineer based in Rabat, working in fintech. He read computer science at the University of Malta (2009–2012) and has spent over 13 years building production software, with the last several years focused on financial systems — event-sourced architectures, regulatory reporting pipelines, and the kind of software where a rounding error in a calculation actually matters.
That background is what separates the calibration here from a generic calculator site. Malta's tax treatment of rental income under Article 31E, the Investment Income Provisions 15% flat rate on ETF gains, the MTCA's parent-rate bands introduced in Budget 2026 — these are not edge cases on a UK template. They are the actual rules Ian files under himself. The person writing the payroll engine pays MTCA tax. The person writing the mortgage affordability calculator models it against CBM Directive 16 because that is the directive his bank applied. That is how the numbers stay honest.
Find him on LinkedIn or GitHub.
How rates and constants are verified
Every calculator constant — tariff rates, grant caps, tax bands, LTV limits, fee percentages — lives in one of two places: constants.js for solar-specific Malta values, or a dedicated calc-*.js file for each calculator domain. There is no hardcoding in form wiring or display logic; if a rate appears on screen, it comes from a named constant in one of those files.
Constants confirmed against a primary source carry no flag. Constants that are working defaults pending verification are marked ⚠ in docs/constants.md, which also records the intended source. The ⚠ is removed only when the value has been cross-checked against the actual document — not when it looks plausible, but when it is confirmed.
Primary sources take precedence over everything else: Government Gazette notices for grant scheme rules, MTCA Budget Amendments documents for tax bands and rates, CBM Directive No. 16 and its supplements for mortgage borrower-based measures, REWS scheme rules for solar grant caps and eligibility conditions, ARMS published tariff schedules for electricity rates. Where a bank publishes its own product-specific rate sheet, that is used directly. Where it does not, the CBM ceiling is the conservative fallback.
The review cadence is quarterly at minimum, with immediate updates triggered by the specific sources listed in the Update cadence section below.
Editorial standards
No calculator result is shown on a best-case basis. Payback periods use conservative assumptions, not the number that makes solar look most attractive. When two sources quote different figures for the same parameter and one is a primary government document, the primary document wins, and the discrepancy is noted. There are no installer kickbacks or affiliate arrangements.
Every constants change is gated by hundreds of automated tests (Vitest, run in CI on every pull request) covering calculation correctness and edge-case behaviour. A change that breaks a calculation cannot be merged without updating the expected test outputs — which forces an explicit decision about what the new correct answer is.
The calculation engines are hand-written pure functions. No AI model generates a number that appears on screen. That is not a principled stance against AI tools; it is a recognition that "generated the right answer last time" is not a sufficient audit trail for a tax calculation. The engines are version-controlled, testable, and readable.
When a figure is wrong, the correction goes out promptly and the source is cited. Corrections are welcome at ian@roi.mt — the inputs, the output received, and what was expected is enough to investigate.
Sources & methodology
Numbers come from official sources where available: the REWS 2026 scheme rules (Government Gazette No. 21,625, Notice 597), ARMS published tariff schedules, CBM Directive No. 16 and its borrower-based measures documentation, the Malta Tax & Customs Administration Budget Amendments document for current-year tax bands, and verified bank rate disclosures where they exist. Every calculator page links to its sources directly. Rates that are working estimates rather than confirmed primary-source figures are flagged with a ⚠ on-page.
The calculator engines are pure functions — they accept all constants as named arguments and produce a deterministic output for the same inputs. The test suite is structured so that changing a constant forces a deliberate update of the expected test outputs; accidental drift cannot go undetected. A consolidated reference for all source documents is at /sources/.
Update cadence
The triggers for a constants re-check are predictable. The annual Budget speech, delivered in October, sets the MTCA tax bands for the following year — this triggers an immediate re-check of the salary calculator, the couple salary calculator, and the TA24 rental income bands. MTCA circulars throughout the year are monitored for rate changes outside the Budget cycle. CBM directive updates are rarer but consequential for the mortgage calculators; Directive No. 16 supplements are the specific items to watch. REWS scheme rule changes — which can arrive at annual relaunch or ad hoc mid-scheme — trigger a solar calculator constants review. MFSA circulars affecting the Investment Income Provisions (the 15% flat rate on ETF gains under the IIP) trigger an investment calculator review.
Every calculator and guide page carries an on-page Updated [month year] line reflecting the last verified constants review, not just the last HTML change. The same date is encoded in the dateModified field of each page's JSON-LD structured data for crawlers.
Get in touch
Corrections, partnership enquiries, and suggestions for new calculators are welcome at ian@roi.mt. For installer or bank partnerships specifically: if you publish rates that roi.mt currently approximates from a CBM ceiling or a scheme document, and you want your actual published rates cited correctly with attribution, get in touch — accurate numbers benefit readers and publishers equally. The suggestion box on the home page is the fastest route for new calculator requests.