There is no universally accepted formula for calculating property price indexes. Our formulas differ from Case-Shiller Index and UK Housing Price Index, for example, both of which have different formulas.
Price to Income Ratio is a fundamental measure for apartment purchase affordability, where a lower ratio indicates better affordability. It is typically calculated as the ratio of median apartment prices to median familial disposable income, expressed as years of income (although variations are used also elsewhere). Our formula assumes and uses:
1.5 * the average net salary
(50% is the assumed percentage of women in the workforce)Mortgage as Percentage of Income represents the actual monthly mortgage cost as a percentage of take-home family income (a lower percentage indicates better affordability). It assumes:
Loan Affordability Index is an inverse of mortgage as percentage of income. The used formula is : (100 / mortgage as percentage of income)
.
Higher values indicate better affordability.
Price to Rent Ratio is a real estate metric that helps determine whether it's more financially advantageous to buy or rent a property in a specific area. It is the average cost of ownership divided by the received rent income (if buying to let) or the estimated rent that would be paid if renting (if buying to reside). Lower ratio suggests buying is more favorable than renting, while higher ratio suggests renting is more favorable than buying. Our formula to estimate rent per square meter assumes 1 bedroom apartment has 50 square meters and 3 bedroom apartment has 110 square meters. It doesn't take into account taxes or maintenance fees.
Gross Rental Yield is the total yearly gross rent divided by the property price (expressed in percentages). Higher values are better.
The current code used to calculate these values is provided below for reference:
public double calculateMedianHousePriceOutsideOfCentre() { return getBuyPricePerSquareMeterOutsideOfCentre() * 90; } public double calculateMedianHousePriceCityCentre() { return getBuyPricePerSquareMeterCityCentre() * 90; } public double calculateMedianHousePrice() { return (calculateMedianHousePriceCityCentre() + calculateMedianHousePriceOutsideOfCentre()) / 2; } public double calculateHousePriceToIncomeRatio() { return calculateMedianHousePrice() / calculateMedianFamilyDisposableIncomeYearly(); } double calculateMonthlyPaymentFor20YearsMontgage() { double monthlyInterestRate = (getCreditInterestRateAnnual() / 12) / 100; double leaseAmount = calculateMedianHousePrice(); double monthlyPayment = leaseAmount / ( (1 - (1 / Math.pow(1 + monthlyInterestRate, 240))) / monthlyInterestRate); return monthlyPayment; } public double calculateMortgagePercentageOfIncome() { return calculateMonthlyPaymentFor20YearsMontgage() / calculateMedianFamilyDisposableIncomeMonthly() * 100; } public double calculateAffordabilityIndex() { return 100 / calculateMortgagePercentageOfIncome(); } public double calculateAverageYearlyRentPerSquareMeterCityCentre() { return (getRent50SqmCityCentre() / 50 + getRent110SqmCityCentre() / 110) / 2.0 * 12.0; } public double calculateAverageYearlyRentPerSquareMeterOutsideOfCentre() { return (getRent50SqmOutsideCentre() / 50 + getRent110SqmOutsideCentre() / 110) / 2.0 * 12.0; } public double calculatePriceToRentRatioCityCentre() { return getBuyPricePerSquareMeterCityCentre() / calculateAverageYearlyRentPerSquareMeterCityCentre(); } public double calculatePriceToRentRatioOusideOfCentre() { return getBuyPricePerSquareMeterOutsideOfCentre() / calculateAverageYearlyRentPerSquareMeterOutsideOfCentre(); } public double calculateGrossRentalYieldCityCentre() { return calculateAverageYearlyRentPerSquareMeterCityCentre() / getBuyPricePerSquareMeterCityCentre() * 100; } public double calculateGrossRentalYieldOutsideOfCentre() { return calculateAverageYearlyRentPerSquareMeterOutsideOfCentre() / getBuyPricePerSquareMeterOutsideOfCentre() * 100; }