Understanding Private Condominium Prices across Singapore’s Districts

Picture: Residential developments in Singapore. Courtesy of Kelvin Zyteng and Unsplash

If you’ve ever been in the market for private residential properties in Singapore, you might have come across phrases like the following while looking through ads for potential projects: “undervalued”, “strong value”, or “rare opportunity”.

Whether you are looking to purchase for personal residency, rental or investment purposes, a major consideration on your mind would probably be the amount of value appreciation as the property ages, or how much you can resell the property for on the market. If every project claims to possess strong appreciation value, does it really matter where you place your hard-earned money?

That’s a strawman statement — of course it matters. Conventional wisdom among real estate professionals and savvy property buyers is that there are common property attributes that drive value — property district; leasehold vs. freehold; proximity to transport facilities, schools and shopping establishments; as well as URA-designated land use. These factors in turn lend themselves to perceived property and rental valuation.

A more precise range of how much value appreciation you can expect, however, is not readily available. In this article, using publicly available data, we will attempt to discover the range of historical annualized growth rates across different districts in Singapore.

The Blueprints

The data used is an extract of more than 150,000 resale transactions from a
Urban Redevelopment Authority (URA) public database of private new sale and resale strata transactions in the 12 years between January 2009 and December 2020. By comparing the launch price of a condominium unit with its eventual resale price across all transactions in the dataset, we can aggregate resale metrics to uncover district and regional differences.

Sample New Sale — Resale transaction pair

Laying the Foundations

We can match launch purchase and resale transactions for the same unit simply by separating New Sale and Resale transactions into two tables, and subsequently joining both tables with the Address as the unique key. Duplicate resale transactions have been removed to only consider the first resale transaction for a unit bought at launch.

import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
df_main = pd.read_excel('ResidentialTransactions.xlsx')#Create New Sale Table
df_new = df_main.loc[df_main['Type of Sale'] == 'New Sale']
df_new = df_new.drop(columns=['Type of Sale'])
print(df_new.shape)
#Create Resale Table
df_resale = df_main.loc[df_main['Type of Sale'] == 'Resale']
df_resale = df_resale[["Address", "Transacted Price ($)", "Unit Price ($ PSF)", "Sale Date"]]
#Join both Tables
df_final = pd.merge(df_new, df_resale, how = "inner", on = 'Address')

From the initial 150,000 transactions, a total of 10,719 new sale and resale pairs were found to have occurred in the 12 years of data. We can now go ahead and begin working with this new table to derive our desired metrics.

df_final.shape
(10719, 14)

Drawing the lines: URA Market Segments

These segments will feature in our analysis as a key dimension for comparing value growth rates across properties. Let’s create a new column in our data to denote each transaction with its corresponding market segment:

#Create list of market segment constituent districts
CCR = [9,10,11,1,2,6]
RCR = [3,4,5,7,8,12,13,14,15,20]
OCR = [16,17,18,19,21,22,23,24,25,26,27,28]
def segment(x):
if x in CCR:
return 'CCR'
elif x in RCR:
return 'RCR'
elif x in OCR:
return 'OCR'
df_final['Market Segment'] = df_final.apply(lambda row: segment(row['Postal District']), axis = 1)

To arrive at our intended goal of finding value growth for each resale transaction, we will need to create several derived columns from our existing data:

  • The number of years since the launch purchase until resale
  • The transaction price differential between the new sale price and resale price
  • The annualized growth of the property based on the above two values
#Property Age in Years
def year_convertor(x):
y = round(int((x.split()[0]))/365,1)
return y
df_final['Property Age (Years)'] = df_final.apply(lambda row: year_convertor(str(row['Resale Datetime'] - row['New Sale Datetime'])), axis = 1)#Difference in New Launch vs. Resale Price
df_final['Price Differential (%)'] = df_final.apply(lambda row: (row['Resale Price (PSF)'] - row['New Sale Price (PSF)'])/row['New Sale Price (PSF)'], axis = 1)
#Annualized Growth Rate
df_final['Annualized Growth'] = df_final.apply(lambda row: ((1+row['Price Differential (%)'])**(1/row['Property Age (Years)']))-1, axis = 1)

Finally, we clean up the table to obtain a working table with all attributes we need for analysis.

Inspecting our Work

Comparing average property value gains between the 3 market segments, the RCR region, comprising fairly “central” locations such as Tiong Bahru and Toa Payoh, has the highest average capital returns on resale at close to 20%. This is followed by the OCR, comprising mostly of heartland and non-central districts, at an average of 17.8%. Properties in the CCR region, situated in prime locations such as Orchard or Novena, generally see a lower average return on initial purchase price, at 11%.

Across annualized returns, this pattern is repeated, with RCR properties growing in value on average at around 3.2% a year prior to resale. OCR properties again follow at an average of 2.7% a year, and with CCR properties at an average of 1.4% a year.

To validate using the mean as the key metric for our findings, both absolute differential and annualized growth should follow central tendency. A frequency distribution confirms this assumption — both curves are normally distributed.

Finally, it’s worth going one step beyond the market segment and finding out which districts demonstrate the highest average returns on initial investment during resale, based on our data.

Given the previous findings, it should come as no surprise that 7 of the 10 districts with the highest average resale gains are in the RCR, and none in the CCR.

Closing Thoughts

As a prospective property buyer, identifying projects with factors conducive to value appreciation is vital to ensuring a rewarding purchase. Fortunately, you might “appreciate” that there are a wealth of resources on the local property market available online to help you make informed decisions. Good luck!

Data Science Padawan

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store