Name: Osku Salerma
Education: Computer Science, University of Helsinki 1998-2002.
Master's thesis written in 10/2005 - 1/2006.
Language skills: Finnish: Native, English: Excellent.
Programming languages: C, C++, Python, Perl, Java.
Work experience:
12/2012 - now, Contractor, Bank of America Merrill Lynch. London, UK.
Worked in the Treasury / Corporate Funding team developing internal tooling (Python).
2/2012 - 10/2012, Senior Software Developer, Eladian Partners. London, UK.
Developed automated quantitative trading systems in collaboration with traders and researchers. (C++, Linux)
- Designed, implemented and deployed a U.S. Treasury futures statistical arbitrage and market making strategy.
- Ported an equity market making strategy from a third-party trading platform to our internal trading platform, and enhanced it to work with European markets in addition to American ones.
- Miscellaneous development work (improved the internal market data API, wrote exchange simulators, implemented conversion of historical raw market data captures into a standardized internal format for research / simulation purposes, etc).
5/2011 - 1/2012, Contractor, Bank of America Merrill Lynch. London, UK.
Worked in the FX Options team developing Concorde, an FX products structuring/pricing tool used by internal sales/traders, and built using Quartz, their Python-based application framework.
6/2010 - 4/2011, Associate, Morgan Stanley. London, UK.
C++/Linux development and support in the Automated Order Fulfillment team. Single-handedly deployed an automated order management system in Europe that makes it easy to implement new trading strategies by describing them in a custom-built scripting language. This involved:
- Development:
- Moved the trading strategy definitions from C++ code into config files, removing the need to recompile everything whenever strategies need to be modified. This also involved enhancing the custom-built scripting language to allow more dynamic expressions to be written (order side-neutral ones, for example).
- Implemented required new functionality (for example, "sticky" switching between strategies to avoid constant flipping when the price moves right around the switching condition).
- Implemented persistence, so order state is not lost on program crashes/restarts.
- Simplified the existing codebase enormously, and fixed many, many bugs in it.
- Testing/deployment:
- Did scalability testing to find out how the system behaves and how many instances we'd need to deploy for our expected order volumes.
- Wrote hundreds of automated tests to verify all aspects of the system.
- Did complex internal routing changes, upstream/downstream compatibility testing, data quality testing, end-to-end testing, etc.
- Gathered requirements from business users for new trading strategies, implemented them, and deployed them.
- Documented every aspect of the system (was completely undocumented before).
Also worked on the Smart Order Routing Technology (SORT) system: added new features (improved iceberg order handling, etc), fixed bugs, enabled new order flows and did continuing maintenance work.
9/2007 - 5/2010, Associate, Morgan Stanley. Tokyo, Japan.
C++/Linux development and support in the Equities Trading Infrastructure team. Software development team lead. In more detail:
- Maintained the codebase that checks FIX orders against
internal/external limits and regulations. Especially actively worked on
the Japan-specific checks, where a notable achievement was optimizing
their runtime performance (the latency the checks add to each order
executed in Japan) by 2705%.
- Designed and implemented time-based limits: keep track of orders sent within a defined time period, group them in one or more buckets (example: exchange-specific limits, trader-specific limits), and hold/reject new orders if the cumulative values (such as notional value or quantity) in any bucket go over the defined limit for that bucket.
- Maintained the internally developed scripting language that is used for matching/modifying FIX messages across the firm. Optimized its runtime performance by 46%. Analyzed common errors people made using the language and implemented validation checks to detect the errors automatically. Designed the next generation of the language and wrote a prototype implementation in Python.
- Maintained/wrote other code like database caching layers, latency analysis tools, testing frameworks, etc.
2/2007 - 8/2007, Senior Consultant, Fusion Systems Japan. Tokyo, Japan.
Team lead on a web-based survey application developed for a marketing company, and on associated applications for managing the surveys and analyzing the results. (Java, OLAP)
8/2005 - 1/2007, Software Engineer, Innobase. Helsinki,
Finland.
Bought by Oracle 10/2005.
Worked on the InnoDB database storage engine (part of MySQL). (C/C++, Unix)
- Designed and partially implemented support for a Full Text Search index.
- Implemented buffering of deletes, speeding them up substantially in some cases.
- Enhanced InnoDB's internal SQL interpreter by adding support for bound variables, function callbacks, BLOB types, lock waits, consistent reads, etc.
- Fixed scalability and memory usage problems.
- Set up and maintained various services: Subversion, wiki, instant messaging, backup, etc.
11/2002 - 7/2005, Software Engineer, Cardinal Systems. Helsinki,
Finland.
Had a central role in designing, implementing and maintaining a complete digital TV transmission system on a C++/Linux platform that consisted of multiple multi-threaded processes interacting with each other and external software/hardware (PostgreSQL, DVB-ASI output cards, etc.) in soft real-time. Other items of note:
- Wrote a utility library in C++ with dynamically loadable database interfaces, socket wrapper classes, XML classes, etc.
- Wrote an MPEG-2 I-Frame decoder in Java.
- Wrote MHP EPG (Electronic Program Guide) components for Cardinal Studio in Java.
- Implemented build infrastructure and automated testing frameworks in Python.
- Helped customize an internal Linux distribution based on Fedora Core.
- Was responsible for the version control systems used in the company.
- Wrote C++ coding style guidelines for company-wide use.
5/2001 - 9/2002, Software Engineer, Bonum IT. Helsinki,
Finland.
Part-time during studying, full-time
otherwise (~5 months/year).
Designed, implemented and maintained GUI software for real-time stock trading and developed connectivity modules for the Helsinki and Stockholm stock exchange protocols. (C++, Windows NT)
4/1998 - 2/2001, Software Engineer, Soittorasia. Espoo,
Finland.
Part-time during studying, full-time
otherwise (~5 months/year).
Designed and implemented PC-based music playing systems, database software, Internet-based music distribution systems, SMS-message handling software, etc. (C++, Windows NT, Linux)
1997, Independent contractor, KCL. Espoo, Finland.
Created two control systems for industrial machinery. (C/C++, DOS)
Other:
Founded and ran a company during 2004-2006 that sold a program (written in Python) for writing movie screenplays. The program lives on as an open source project called Trelby, with me as the lead developer.
Contributed a patch to GCC adding support for the may_alias attribute, which can be used to bypass the aliasing rules in C/C++ on a per-variable basis, and minor participations in other free software projects (Subversion, Mercurial, etc).