Hi, I've been running into more and more studies (see "Quantamentals" from JOTA Issue 70) or in readings like Joel Greenblat's The Little Book that Beats the Market that use a ranking feature that combines multiple criteria before conducting a final ranking.
For example, as is shown in Joel Greenblat's book, if you sort/rank stocks from an investment universe by P/E Ratio and then again for ROIC, you can then sum their numerical rankings to conduct a final ranking where the resulting ranking would be in theory the best (or worst) combination of the two criteria.
Currently, I believe you can use the Symbol Ranking by Indicator condition block to get the Top or Bottom # of stocks for a given indicator but I don't think there's a way to combine or stack these for multiple indicators. If you add two (or more) blocks, I think it just requires that both conditions be met (e.g. Top 5 for RSI and Top 5 for ROC, rather than Top 5 for RSI and ROC).
Is my understanding correct or is there a way to do the above-mentioned combination of criteria in building blocks currently? If not, I would like to make this a #FeatureRequest.
Referenced JOTA Study: https://cmtassociation.org/journal_ta/issue-70/
For example, as is shown in Joel Greenblat's book, if you sort/rank stocks from an investment universe by P/E Ratio and then again for ROIC, you can then sum their numerical rankings to conduct a final ranking where the resulting ranking would be in theory the best (or worst) combination of the two criteria.
Currently, I believe you can use the Symbol Ranking by Indicator condition block to get the Top or Bottom # of stocks for a given indicator but I don't think there's a way to combine or stack these for multiple indicators. If you add two (or more) blocks, I think it just requires that both conditions be met (e.g. Top 5 for RSI and Top 5 for ROC, rather than Top 5 for RSI and ROC).
Is my understanding correct or is there a way to do the above-mentioned combination of criteria in building blocks currently? If not, I would like to make this a #FeatureRequest.
Referenced JOTA Study: https://cmtassociation.org/journal_ta/issue-70/
Rename
Wealth-Lab supports custom indicators. Instead of introducing more and more complexity, it can be accomplished with a custom C# indicator. Come up with its logic for combining multiple indicators in C# (use the canned templates as a guideline), save the indicator, and start WL in admin mode to make the indicator appear across WL's tools.
Understood. I appreciate Wealth-Lab's support for custom indicators; I unfortunately to date have only taught myself TradingView's PineScript and have yet to teach myself C#, so coding on Wealth-Lab has felt pretty foreign to me. I really ought to carve out some time to learn it though.
Upon further thought, I think a simpler work-around for my desired goal in building blocks could be to modify my request to just the creation of a "Rank" indicator, which would numerically rank in ascending or descending manner each symbol in the dataset based on an inputted indicator. Functionally, it should work (and be coded?) the same as the current Symbol Ranking by Indicator building block, but as an indicator, it could be intertwined and nested with other indicators and Wealth-Lab features.
For example, with just a Rank indicator, I could use the Compare Indicator to Value to get the top (greater than or equal to) # Ranking I want, and then for the inputted indicator, I could input MathIndOpInd to then Add together two more Rank indicators for each of my desired criteria, functionally achieving my ranking of combined multiple criteria goal.
So more complexity in the application but perhaps not as complex in the coding behind the scenes of the Rank indicator itself? If you agree and are willing, I'd like to modify and renew my #FeatureRequest to that.
Upon further thought, I think a simpler work-around for my desired goal in building blocks could be to modify my request to just the creation of a "Rank" indicator, which would numerically rank in ascending or descending manner each symbol in the dataset based on an inputted indicator. Functionally, it should work (and be coded?) the same as the current Symbol Ranking by Indicator building block, but as an indicator, it could be intertwined and nested with other indicators and Wealth-Lab features.
For example, with just a Rank indicator, I could use the Compare Indicator to Value to get the top (greater than or equal to) # Ranking I want, and then for the inputted indicator, I could input MathIndOpInd to then Add together two more Rank indicators for each of my desired criteria, functionally achieving my ranking of combined multiple criteria goal.
So more complexity in the application but perhaps not as complex in the coding behind the scenes of the Rank indicator itself? If you agree and are willing, I'd like to modify and renew my #FeatureRequest to that.
I think doing complicated stuff in Blocks just makes things more complicated. Also understand, if one ranking criteria has twice the standard deviation (or ATR; a volatility metric) of the other indicator, then simply summing the two criteria will automatically weight one criteria twice as much as the other. Do you really want that?
Of course, the solution is to convert the two criteria into Z-scores, then weight their Z-scores. But as the complexity increases (like this), doing it with Block becomes much harder than doing it in code. Blocks was never meant for complex problems.
If you really want to do complex problems, then learn some coding or get a local partner that's willing to code it for you. You can enroll in a coding class, then find a partner in the class that's interested in trading to work with you. And honestly, things are more fun with a partner.
---
If all you want to do is sum two indicators (which is easy), we can probably knock out some code you can use to build your own custom indicator. But simple summing probably won't be effective (as discussed above), and that's when things get more complicated. Even employing Z-scores is tricky because one outlier can throw off the local standard deviation of the Z-score and mess things up. Of course, you can prune the outliers first ... More complexity. (Just imagine trying to do all this in Blocks.)
If you're using Blocks (which is fine), keep it simple.
Of course, the solution is to convert the two criteria into Z-scores, then weight their Z-scores. But as the complexity increases (like this), doing it with Block becomes much harder than doing it in code. Blocks was never meant for complex problems.
If you really want to do complex problems, then learn some coding or get a local partner that's willing to code it for you. You can enroll in a coding class, then find a partner in the class that's interested in trading to work with you. And honestly, things are more fun with a partner.
---
If all you want to do is sum two indicators (which is easy), we can probably knock out some code you can use to build your own custom indicator. But simple summing probably won't be effective (as discussed above), and that's when things get more complicated. Even employing Z-scores is tricky because one outlier can throw off the local standard deviation of the Z-score and mess things up. Of course, you can prune the outliers first ... More complexity. (Just imagine trying to do all this in Blocks.)
If you're using Blocks (which is fine), keep it simple.
I'm not sure I entirely follow the initial standard deviation/weighting issue you mentioned when switching to an ordinal ranking system, but I see the value of Z-Scores maintaining comparability across indicators but gaining insight into each symbol's relative positioning/performance within each indicator ranking. But as you said, Z-Scores can come with their own potential issues.
I think in this instance I am looking for just an ordinal ranking ability (a 'Rank' indicator) because I'm looking to replicate and possibly improve upon some academic paper findings that use that 'relatively simple' technique to gather top performers across multiple criteria (indicators).
Nonetheless, I won't push too hard if the WealthLab team doesn't wish to pursue this. I try not to FeatureRequest things that are overly tailored to my wants and not broadly applicable for other users and/or commonly used in the investment field. I respect the WealthLab team's time and how they seek to improve their product, and so if this request doesn't fit that, I can respect that too. I do know I really ought to get to learning C# as that is where the real magic happens; it's just the ever-present issue of too many things to do and not enough time to do them haha.
I think in this instance I am looking for just an ordinal ranking ability (a 'Rank' indicator) because I'm looking to replicate and possibly improve upon some academic paper findings that use that 'relatively simple' technique to gather top performers across multiple criteria (indicators).
Nonetheless, I won't push too hard if the WealthLab team doesn't wish to pursue this. I try not to FeatureRequest things that are overly tailored to my wants and not broadly applicable for other users and/or commonly used in the investment field. I respect the WealthLab team's time and how they seek to improve their product, and so if this request doesn't fit that, I can respect that too. I do know I really ought to get to learning C# as that is where the real magic happens; it's just the ever-present issue of too many things to do and not enough time to do them haha.
QUOTE:
I'm not sure I entirely follow the initial standard deviation/weighting issue you mentioned
If one criteria has all the variation (standard deviation) and the other criteria has very little, then the variation of first criteria swamps out the contribution of the second when you sum them. The Z-score transform puts everything on equal ground prior to summing. WL does have a Z-score indicator to apply this transform.
My real point is once you fix one problem, another one comes up. So things get progressively more complicated--piled higher and deeper. But you're in a position to ramp up that complexity with coding, but not with Blocks.
QUOTE:
I do know I really ought to get to learning C# as that is where the real magic happens
To get started, you only need to read up to the first chapters of your C# textbook. You can stop reading when you reach the chapters on encapsulation, information hiding, and creating C# classes; you can get into that stuff later when you create code libraries with Visual Studio. But one has questions when learning something new, so if you have a local partner that can get you over the rough spots quickly, that makes it more fun.
Happy computing to you.
Your Response
Post
Edit Post
Login is required