NUMBEO

About Property Value and Investment Indicators At This Website

Note that there is no standard formula to calculate property price indices. Our formulas differs from Case-Shiller Index, UK Housing Price Index, etc.

Price to Income Ratio is the basic measure for apartment purchase affordability (lower is better). It is generally 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:

Mortgage as Percentange of Income is a the ratio of the actual monthly cost of the mortgage to take-home family income (lower is better). Average monthly salary is used to estimate family income. It assumes 100% mortgage is taken on 20 years for the house(or apt) of 90 square meters which price per square meter is the average of price in city center and outside of city center.

Loan Affordability Index is an inverse of mortgage as percentage of income. Used formula is : (100 / mortgage as percentage of income) (higher is better).

Price to Rent Ratio 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 values suggest that it is better to buy rather than rent, and higher values suggest that it is better to rent rather than buy. Our formula to estimate rent per square meter assumes 1 bedroom apt 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 house price (expressed in percentages). Higher is better.

The code which actually calculates these numbers is currently as follows, so that you can check it out on your own:

  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;
  }