Wednesday, February 28, 2007

Word of the Day: Carry Trade

Carry trade is a trading strategy where you borrow money at one interest rate, and invest that money in something that (you hope) gives you a higher rate of return.

Typically, I would expect that carry trade opportunities would quickly quickly disappear as everybody piles in to make a quick buck, and the resulting dynamics tends to an equilibrium with negligible profits.

But one form of carry trade has become hugely popular in the past 5 years - Currency carry trade. To do currency carry trades, you will need to -
-- Borrow local currency in a country with a very very very low interest rate (Japanese yen at 0.25%)
-- Sell that currency and buy currency of another stable country that has a high interest rate (US$ at 5.25%)
-- Buy short-term sovereign (risk-free) bonds in the high-interest-rate currency
-- PROFIT!!!

When you look at interest rates in Japan vs. US, there seems to be an opportunity to make a risk-free profit of around 5%. This is what international financial firms and hedge funds with access to both markets have been doing for the past 5 years. And they do this with a lot of leverage (say 10:1) such that after borrowing X yen, they get a return of 50%, not 5%.

Since there is no free lunch, there must be a catch somewhere. This comes from F/X risk. If the value of the yen rises against the US$, when you try to buy back yen to repay your loan, your profits are wiped out. The losses are magnified (like your profits) if you have used leverage, as you still need to repay your loan. This is what should be happening if everybody starts doing currency carry trade.

Now carry trade has been very profitable and almost risk-free for everybody involved for the past 5 years.
-- Japan had been injecting liquidity into their market with a zero interest rate policy (aka printing money) to get out of their liquidity trap.
-- In order to simulate Japanese exports, the Japan Central Bank has been furiously buying US$ bonds (increasing US$ demand and value) to keep the value of the yen artificially low.
-- The cash era all over the world since 2001 has lead to a glut of liquidity with historically low volatility which has allowed very easy and cheap leverage

The net effect is that asset classes all over the world have risen over the past 5 years due to surging demand due to high liquidity.

This might all be about to change.

Why "Simplicity Works Everytime"

Some explanations on the title of this blog...

From my work in delivering, designing, and developing high-performance financial systems, I have been struck by the fact that the most usable, most loved (yes that is possible), best performing, and highly scalable systems have simplicity as their underlying theme.

Now simplicity can be a highly subjective topic. So let me clarify what I mean...

You can broadly classify any system into one of these two categories -
1.) A User-Driven System. This is any system with a customer-facing user interface. (Technical support user-interfaces do no count here)
2.) A Technical System, i.e. a non-User-Driven system. This could be a server process that runs independently of any customer interaction.

In the presence of competition, the success of a user-driven software application is a function of how much the customer likes/loves using it. This is exponentially proportional to it's the ease of use. For most users, software is just a tool to get some work done. It is not a primary part of their existence. Users love software that allow them to finish their task with the least amount of thinking so that they can focus on the really important things in life. So for user-driven software, simplicity equates to "simplicity for the user", not "simplicity for the developer". In order to provide this simplicity to the user, the underlying technical design might have to be complex, very complex. Sorry, there is no way around this.

And finally, user-driven software attain the nirvana of simplicity when they become humane. These software forgive our human follies, and guide us ever so subtly in our tasks.

Let me tell you why I absolutely love iTunes. It has this great feature called "alphanumeric sorting". In layman's terms, this means that a song titled "Eagles - Track 10" will come after "Eagles - Track 9", and not "Eagles - Track 1" as happens in Windows Media Player. iTunes also has another amazing feature where they discard the word "The" in the band name during sorting. So "The Cardigans" comes under C, not T.

For pure technical systems, things are different. The best technical systems have very very simple technical designs. Great technical systems do not have highly normalised data schemas; Simple technical systems are not in love with their reflection; Simple technical systems actually hardcode things that will never ever change; Simple technical systems do not try to retrieve data using humongous object-relational mapping layers; Great successful systems mostly never use EJB's; Great systems solve one thing very well.

In DB, we bought a 3rd-party scheduling software that used 90 Oracle tables internally for managing clustering. The thing bombed in actual production usage. An internal team rewrote the same functionality with some simple code that used 9 Oracle tables for managing a load-balanced cluster. It is so successful that other teams in DB are using it, and we are thinking of making it open-source.

The problem is that as an industry, we have completely lost the concept of simplicity. We have become experts in abstracting any user request into a generic problem, and spend ages building generic systems that look great to us in our mental sheet of paper, but hideously complex at runtime. We have forgotten that software is actually about working applications. Instead of solving user problems, we have all become self-anointed architects.

One of the sidey things I will be doing thru this blog is to keep up a steady stream of views and observations on keeping things simple.

"You know you've achieved perfection in design,
Not when you have nothing more to add,
But when you have nothing more to take away"
Antoine de Saint-Exupery

Sunday, February 25, 2007

From a consumer to a contributor

Hello world.

I've been a voracious consumer of blogs for the past 4 years. Got around 300 blogs on my reading list. Guess it's high time I started contributing something back...

I am originally from "God's own kentry". Came to Singapore in 1999 to do my undergraduate degree thanks to the nice people running this nifty aero company. After completing my degree in Computer Engineering from NTU, I have been working in the technology side for Deutsche Bank in Singapore.

So far it has been a helluva ride...

Got to come and do a phoren degree in an area that I am very passionate about. And got paid for it too! Looking back at the 4 years in college, I still feel exhilarated when I think of the groundbreaking projects I did with some people who are now the best engineers out there.

I joined DB in 2003. In this age when all worthwhile technology in a bank is offshored, I was lucky to get into DB in that twilight zone when app development had not been offshored completely. I have got my hands dirty working with some incredibly talented designers and developers in implementing core high-performance systems. Currently I am an Assistant Vice President, in charge of delivering Deutsche Bank's implementation of the EBICS Server standard for German transaction banking.

I will be posting my eclectic thoughts on technology, business, finance and some personal musings on this blog.