Tuesday, February 19, 2008

Keep track of the changes you make to your system

In the early stage of the system development I was a bit absentminded. Lots of idea went trough my mind while I was going to sleep and were hastily tested in the following day. I jumped from one setup rule to the other while trying to find my golden egg. As time passed and the system started to mature I have noticed I occasionally repeat testing the same rules I tested before. The reason for this was because I didn't keep track of the changes I made to the system. The funny part is that I work as software developer for more than 10 years. In the software industry you have no choice but to use Source Control Management (SCM) tools which allows you to keep track of the changes one or more developers have made to the application during its development stage. SCM is also useful for branching which is the act of going back to a previous version and start a different version. For example when you go from version 1.0 to version 2.0 but still need to support version 1.0 by writing fixes and updates.

To overcome the problem, what I did was keep track of the changes I made to the code in Excel file. I created a table with the following columns:

Version - I've decided to keep every change I made in the script to a new file and label it with a new version number for example 1.57, 1.58.

Based on version - as described above, a script might branch into several different scripts as you test different ideas based on the same version. This is why it's important to know what version your current code is based upon so you can track the changes made between two scripts incase you want to incorporate them later on.

Changes Made - a short description of the changes made to the script. This should be one or two sentences long and only need to remind you what was changed. For example Modified the SMA to use 50 days period instead of 100 or Added another check to make sure the stock is liquid enough by checking  the volume over a period of 3 months.

Using Monte Carlo tool I also collect the following statistical data regarding  the performance of the system:

No of trades - The total number of the trades issued by the system. You need to remember that the simulator generates numerous trades which are not used in the final simulation as they might overlap with each other. For instance a simulation might use 140 trades (for a given period) while the there are over 500 raw trades. When using Monte Carlo simulation, the program randomly uses all the raw trades in order to generate new simulations and thus make sure the system performance well if other trades were chosen.

Total Average Profit - used to measure the average profit of all the simulation runs. I use 2000 runs to check each version of the script to minimize the random effect. This means the program generate 2000 different simulations based on the raw trades and only then it calculate the average profit.

Yearly average profit - using the Monte Carlo program I can switch to different periods and check how the system performed in each of them.

Total Average Drawdown -one of the most important parameters you want to know about your system is how much money it might lose on average. This should suite your mental capabilities and should not be overlooked.

Yearly Average Drawdown - same as above but only on a yearly basis.

Probability to achieve X% Profit - using the average profit and average drawdown the program calculate the probability to achieve X% profit.


I believe keeping track of your work methodology is one of the most important steps bringing you closer to become a professional trader. In my mind tracking the changes signal you understand that becoming a trader takes time and effort and not working upon impulse.

For sample screenshots you might want to visit this blog entry.

No comments: