I've worked as a sole proprietor and in small and larger companies over the last fifteen years. In these environments I've experienced different managerial structures as related to the practice of producing quantitative trading systems. My experiences have lead me to believe that Rapid Strategy Development is the best operational model for a quantitative research to follow.
Rapid Strategy Development means chosing to create a platform that removes roadblocks to the streamlined implementation of trading systems. The typical system development path can be defined as follows:
- empirical study of the market to generate ideas;
- use of analytical methods to specify viable ideas on historical data;
- use of analytical methods of verify viable ideas on newly captured data;
- definition of trading systems to implement the strategy;
- implementation of the codebase to execute the strategy.
The first two parts, the empirical and statistical research to create a system, should be the overwhelmingly longest part of the development path. The final stage should be the shortest. Once it has been researched, one should be able to code and execute a strategy within a day, that is the primary goal of the RSD paradigm. This really boils down to three principles.
- Think First;
- Avoid Ownership;
- Just Do It.
Think First means the early recognition and implementation of generalizable structures (think before you type). Don't oppose generalization because it is “inefficient” — it is not.
Avoid Ownership means that my code is everybody's code and that everybody's code is my code. This means
- accept input from others;
- create of public use code (i.e. provided to other systems) over private use code (i.e. local to a specific system) whenever possible;
- create of public use data tables whenever possible;
- avoid of ad hoc nomenclature always;
- avoid of non-conforming private data tables and private data storage whenever possible.
Just Do It (sometimes referred to in economics as "The Nike Strategy") means:
- don't wait for permission to continue;
- don't make private codes and seek to generalize them later "when I have the time" as that time will not come;
- always compartmentalize to allow component reuse;
- always make changes when their need is recognized — Fix It Now.