Yamato
Legendary member
- Messages
- 9,840
- Likes
- 246
out of the bathtub
Usual eureka in the bathtub.
Ok, first we set up a scoring method. Each of the 120 systems is scored by computing an average of these four parameters:
1) back-tested sharpe ratio
2) forward-tested sharpe ratio
3) number of back-tested trades
4) number of forward-tested trades
[...written later...] There's still a problem here, to be solved: if a system makes 1 million trades and loses money, it will have a similar rating/scoring as a system which wins every time and trades 30 times. This can't be allowed. I need to find a way to weigh sharpe ratio scores by the quantity of trades made, so that if you have a good sharpe ratio and achieved it over many trades you're better than having achieved with fewer trades, but if you have a bad sharpe ratio and achieved it over many trades, you still get a worse score than both. This is going to be complex, but for sure I cannot allow all 4 parameters above to be weighing the same.
[...written later...] I also need to add something monitoring the largest loss and not allowing trading by a system whose biggest loss is more than x % of margin invested (or similar reasoning).
Each number is matched against the value recorded by the best performing system (max # of back-tested trades, highest back-tested sharpe ratio, etc.). If the system trading the most, trades 1230 times, each systems' # of trades gets divided by 1230, and we come up with 4 percentage values, which then get averaged.
This above is the scoring system.
Based on those scores we decide the candidates and also how many contracts they could potentially be allowed to trade. This decision is arbitrary. For example, we could say that systems averaging > 95% are candidates for 3 contracts, systems averaging > 75% are candidates for 2 contracts, systems > 50% are candidates for 1 contract, and less than that... they're not candidates.
The palisade's risk optimizer then decides which system trades how many contracts based first of all on the candidates we feed it, whose potential contracts are allocated or not based on an optimization which will optimize by total return, but will also have these constraints (in this specific case I am studying):
1) dd max duration in days <= 35
2) dd depth <= x dollars (in this case 18k)
3) combined sharpe >= 4.7
4) max theoretical margin <= capital available * 1.5
5) I should also find, if possible, a way to measure drawdowns lasting longer than 15 days and count how many of them there are per given combination and use the optimizer with that information. The best way to calculate this is to sum the days of all the drawdowns that last longer than 10 or 15 days or even 20 days... let's do 15 days. Otherwise it's not meaningful -- i will abolish 35 days at #1 and use the sum of those days.
In the future, all that will need to be changed will be that arbitrary decision on how many contracts to allocate based on the score, and these 4 values, listed right above this sentence.
Usual eureka in the bathtub.
Ok, first we set up a scoring method. Each of the 120 systems is scored by computing an average of these four parameters:
1) back-tested sharpe ratio
2) forward-tested sharpe ratio
3) number of back-tested trades
4) number of forward-tested trades
[...written later...] There's still a problem here, to be solved: if a system makes 1 million trades and loses money, it will have a similar rating/scoring as a system which wins every time and trades 30 times. This can't be allowed. I need to find a way to weigh sharpe ratio scores by the quantity of trades made, so that if you have a good sharpe ratio and achieved it over many trades you're better than having achieved with fewer trades, but if you have a bad sharpe ratio and achieved it over many trades, you still get a worse score than both. This is going to be complex, but for sure I cannot allow all 4 parameters above to be weighing the same.
[...written later...] I also need to add something monitoring the largest loss and not allowing trading by a system whose biggest loss is more than x % of margin invested (or similar reasoning).
Each number is matched against the value recorded by the best performing system (max # of back-tested trades, highest back-tested sharpe ratio, etc.). If the system trading the most, trades 1230 times, each systems' # of trades gets divided by 1230, and we come up with 4 percentage values, which then get averaged.
This above is the scoring system.
Based on those scores we decide the candidates and also how many contracts they could potentially be allowed to trade. This decision is arbitrary. For example, we could say that systems averaging > 95% are candidates for 3 contracts, systems averaging > 75% are candidates for 2 contracts, systems > 50% are candidates for 1 contract, and less than that... they're not candidates.
The palisade's risk optimizer then decides which system trades how many contracts based first of all on the candidates we feed it, whose potential contracts are allocated or not based on an optimization which will optimize by total return, but will also have these constraints (in this specific case I am studying):
1) dd max duration in days <= 35
2) dd depth <= x dollars (in this case 18k)
3) combined sharpe >= 4.7
4) max theoretical margin <= capital available * 1.5
5) I should also find, if possible, a way to measure drawdowns lasting longer than 15 days and count how many of them there are per given combination and use the optimizer with that information. The best way to calculate this is to sum the days of all the drawdowns that last longer than 10 or 15 days or even 20 days... let's do 15 days. Otherwise it's not meaningful -- i will abolish 35 days at #1 and use the sum of those days.
In the future, all that will need to be changed will be that arbitrary decision on how many contracts to allocate based on the score, and these 4 values, listed right above this sentence.
Last edited: