Who is he?
Shaun Parkin is a financial professional in Randwick, NSW, Australia. He hired me as just himself, not on behalf of a company.
What did I do, when, where?
First I answered a simple question in a forum, something like whether he needed an algorithm in order to rebalance stock portfolios. I knew a little bit about rebalancing, having worked for a financial information company in the past. So, I asked what he meant and dove in, in early 2012.
This led to arranging to do a little project for him. As he wanted a quote for the whole thing, rather than proceeding on an hourly basis, I wrote a detailed Statement of Work (SOW), specifying that I would start and finish in March 2012.
The project was essentially the Minimum Viable Product (MVP) for a site, with the following features that we agreed on:
- Users can sign up, in, and out.
- There are "portfolios", consisting of multiple "targets", each of which references one Exchange Traded Fund (ETF), and a target percentage, adding up to 100% for each portfolio.
- Admins can create, destroy, and edit portfolios, targets, and ETFs, including updating the price of each ETF.
- Users can tell the system which portfolio they own, and how many shares they have of each ETF.
- The main point of the whole exercise is that users can then ask the system how many shares of which ETF(s) they should buy or sell, in order to get their actual holdings as close as possible to the target percentages in their chosen portfolio.
This is an example of what the financial world calls "rebalancing". To accomplish this, I wrote a simple Ruby on Rails application, with an administrative account and some admin-only functions.
We had discussed additional features, such as automagically retrieving the latest prices from a data feed, emailing users when their portfolios were out of balance by more than a certain percentage, letting the users specify that percentage, etc., but decided to put those off until later, if the MVP ever took off. Unfortunately, it has not, showing the wisdom of not arranging for the extra features.
What did he say?
What did I use?
Technologies, techniques, tools, etc. I used there:
- Ruby on Rails 3.2 (with Ruby 1.9)
- Bitbucket to host the code repository
- Heroku to host it so he could see it in progress