Menu

My Internship with Wealthfront

July 07, 2014

I’m wrapping up my first couple of weeks at Wealthfront, and I’m very confident to say that I made the right decision for my last internship before graduation. On my first week, I was told “Now you know what it’s like to work at a hypergrowth startup company”. I couldn’t agree more with the sentiment,… Read more

Developing a Portfolio Backtester in R

October 15, 2012

As part of building our new Tax-Loss Harvesting (TLH) feature, we needed to build a portfolio backtester to simulate portfolio performance over a historical period. R was the obvious choice for its strength in statistics and finance; the R Finance community in particular has created a number of very useful packages, some of which we’ll talk… Read more

Experience of serializing financial domain objects in database

October 25, 2010

I found myself often having to make serialization design choices to persist financial data in database. The kind of financial data I’m referring to are domain objects describing stocks, stock quotes, stock fundamentals, corporate actions and so on. For example, a typical stock object has about 20 ~ 30 fields describing its static information: country,… Read more

Type Safe Bit Fields Using Higher-Kinded Polymorphism

August 13, 2010

Refering to securities, such as stocks or bonds, is far from standard. We all know Apple’s ticker AAPL; But what about the Oracle of Omaha’s company Berkshire Hathaway? Google says BRKA, Yahoo! BRK-A, Bloomberg BRK/A and Reuters BRKa. Due to these oddities, every serious automated trading system like kaChing’s has at its core a powerful… Read more

Financial instrument reference data validation

June 10, 2010

The kind of system we develop at kaChing is very data intensive. Given our test-driven approach, many problems we encounter in production are caused by issues in data, rather than bugs in code. Particularly, the system often gets confused by stock symbols. Wait a minute, you might wonder: how come stock symbols are confusing? GOOG… Read more