NSGA-II works like magic!! #534
Closed
dinohsu1019
started this conversation in
Show and tell
Replies: 2 comments 1 reply
-
As a further observation, the IDEAL_MDD=-0.2 (corresponding to objective 4) works so well is a coindincidence that in the nds, there are many solutions that go around -IDEAL_MDD=0.2 area to choose from, if IDEAL_MDD is, ininstead, -0.16 or -018, there are not many solutions to choose from and the performance of the optimal one is not as good. |
Beta Was this translation helpful? Give feedback.
0 replies
-
Someone else might know a little more about your application. Unfortunatly, I am not able to provide detailed input on applications due to my own time limitation. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi Julian,
I am curious about how NSG-II works because I see things beyond my understanding.
This is a 4-objective 16-solution-variable discrete (integers) problem, here's the output of my code after each iteration:
Here's algorithm's output:
My code displays the optimal solution chosen from the NDS after that iteration, you can see f4 goes very close to 0.2 but not above it while increasing f1, f2, and f3. The thing is f4<0.2 is not a constraint at all, the algorithm doesn't know 0.2, the 0.2 is the criteria that I use to choose the optimal one from NDS.
To be clear about the criteria:
f1: -annual return
f2: -annual sharpe
f3: -annual sortino
f4: -mdd (max drawdown)
All solutions are candidate trading strategies as combinations of conditions. the absolute value of mdd (-f4) is a major concern since it represents the maximum possible loss of the strategy, so I want to control it under 0.2 (i.e., 20%) and maximize annual return and annual sortino, so I define the selection criteria as:
annual_return * annual_sortino / (abs(IDEAL_MDD/2)*10)**2, if mdd>IDEAL_MDD
annual_return * annual_sortino / (abs(mdd)*10)**2, otherwise
For now, IDEAL_MDD = -0.2. the (*10 and **2 is to double the impact of mdd when it is above the ideal level.
Note that annual_return is very sensitive to mdd, I remember if I reduce abs(mdd) from 0.25 to 0.2, annual return goes from 0.5 down to 0.3. But with this algorith, abs(mdd) can stay below 0.2 and still increase annual return and annual sortino to a satisfactory level.
How does NSGA-II algorithm achieve this not being aware of my selection criteria?
Thanks again.
Beta Was this translation helpful? Give feedback.
All reactions