Understanding Private Condominium Prices across Singapore’s Districts

Image for post
Image for post
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.

For this exercise, we will be looking at a common purchase scenario: private (non-executive) condominiums purchased during launch.

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.

Image for post
Image for post
Sample New Sale — Resale transaction pair

We will use Python to prepare the URA dataset for analysis — the full script can be found on GitHub.

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)

Before we proceed further, let’s introduce the concept of Market Segments. The URA has segmented geographical regions of Singapore into certain market segments: the Core Central Region (CCR), the Rest of Central Region (RCR) and the Outside Central Region (OCR). These segments comprise of a set of postal districts (1 through 28), with some postal districts overlapping across 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.

Image for post
Image for post

It’s been said that statistics are the perpetual challenger of conventional axioms — while not always true, this comes to mind in today’s exercise.

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%.

Image for post
Image for post

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.

Image for post
Image for post

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.

Image for post
Image for post

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.

Image for post
Image for post

While many factors affect the valuation of each project differently, industry and statistical research confirm the importance of the geographical placement of the property in property price appreciation.

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