I made a web application that lets us backtest Darwin Portfolios + Custom Buy and Sell Rules that you might wish to add on top. The link is HERE
Edit: For those of you who will read the whole post, don't forget to remove Lower Bound EX=11 in Sell Rules after you set your own custom Sell Rules. Otherwise, the default Buy and Hold Portfolio will be simulated
How do I use this thing? - Main Parameters
- On the left side of the webpage, you enter the Darwins that you wish to Simulate your Portfolio/Ruleset on. Custom Capital allocation is possible, just write numbers next to Darwins after space. SEPARATE DARWINS WITH NEWLINE. If you don't write capital amounts, it will assume default value, $1000.
- Commission is set to 0.2 -> 20% High Watermark Commission. Though it is calculated daily, not on a 3 month rolling basis like Darwinex. If you want to test without commission, set this value to 0.
- Test period is self-explanatory - The period for which you wish to carry out your test. You can't go below 2010-01-01, or above current date.
- Maximum 60 Darwins will be considered. More than that will be ignored.
- If you write SHOW at the end of your list of Darwins, Result of individual Darwins will be shown alongside Portfolio results. It is optional.
How do I use this thing? - Buy Rules
Buy rules work quite like Darwinex Filters. You enter lower bound and upper bound, and if a Darwin matches All the criteria, Darwin is bought. Default values are [-Infinity, +Infinity]. If you leave a field empty, it takes default value for that field.
In this example, we see that
- Dscore lower bound = 68 -> Buy only if Dscore >= 68
- RS lower bound = 5, LA lower bound = 5 -> Buy only if RS >= 5 and LA >= 5
- History days lower bound = 365 -> Buy only if Darwin has at least 1 year of history
- Current Drawdown UPPER BOUND = -5 -> Meaning at least -5 or less (-6, -7 etc) current drawdown must be present to buy a Darwin. Useful for those who wait for Drawdowns to enter.
- Max Drawdown lower bound = -25 -> Drawdown must be -25 or higher (-24, -23 etc), otherwise Darwin is not bought.
Got that? Just like Darwinex filters. So if you leave Buy rules empty, it will match all darwins at all times. So if you don't have any special buy rules, just leave it empty.
How do I use this thing? - Sell Rules
Sell Rules are just like Buy Rules. Except you might be confused about the following: If you leave Sell Rules empty, it will match all Darwins at all points, so Darwins will never remain in the portfolio -> So if you have a Buy and Hold approach, set lower bound of EX in sell Rules to 11 -> Since EX never reaches 11, Darwins won't be sold, and simply held in portfolio.
In this example, we have the following
- Dscore Upper bound = 60 -> When Dscore falls below 60, we sell Darwin
- OpenReturn upper bound = -20 -> When Open Return (Open PL in terms of percentage) falls below -20%, we sell. This is just like setting a Stop Loss at -20%. You can also use this to set Take Profits (Set the lower bound to 10, for example - though you can't set SL and TP both at once, only one).
- RS upper bound = 3, PF upper bound = 5 -> Whenever RS falls below 3, and PF falls below 5 -> Sell Darwins.
Critical Information about Rules
Rules are evaluated with AND expression. Meaning ALL of them must match. In above example of sell Rules, if Dscore falls below 60, but drawdown does not fall below -20%, Darwins WON'T BE SOLD. Remember this -> Just like Darwinex FILTERS!!! So think about your rules carefully!
Unfortunately, due to technical reasons, this app does NOT support multiple client's heavy operations at the same time. If web page isn't loading, or when you click simulate, and nothing is happening - SERVER IS PROBABLY BUSY. Just write your inputs, click the button and WAIT. Your request will be queued and processed in sequential manner.
Remember, maximum 60 Darwins will be considered. Data about Darwins is accurate as of 25 November 2018. I will update them every weekend. If you have troubles, comment here with as much information as possible (screenshots preferable). I will do my best to help!