- ago
There are some powerful ML approaches (e.g. 'trees") that are not generally available in retail software. I suggest that these be considered for inclusion, along with GPU support since Microsoft has released Accelerator (https://www.microsoft.com/en-us/research/publication/accelerator-using-data-parallelism-to-program-gpus-for-general-purpose-uses/, https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-2005-184.pdf) for easy integration of GPU-supprt into general-purpose software.
9
2,259
20 Replies

Reply

Bookmark

Sort
- ago
#1
Sounds like an idea for a paid extension.

Maybe also throw in some NLP API and something to work with the sentiment of social media for traders (e.g. StockTwits).
0
- ago
#2
Eugene,

The Add'l ML algorithms are definitely a possibility for an extension, but I do believe that GPU support will need to be part of the base WL7 Program and items such as Indicators, Smoothers, and other add-ons.

Vince
0
- ago
#3
QUOTE:
but I do believe that GPU support will need to be part of the base WL7 Program and items such as Indicators, Smoothers, and other add-ons.

I doubt there's a magic switch "make indicators have GPU support". From past experience optimizing Community Indicators for parallel processing, this is a tedious manual effort to do on per indicator basis. And only a handful indicators could even be parallelized.
0
- ago
#4
This is how it works in ML:

Some libraries provide you with instruments for data processing, if you do it in vectorized manner, you can utilize GPU if you have one, or you will use CPU only if you have not. Just the same code, just set some settings or download another lib version.

But if you use something like iterating no chance to use GPU without refactoring.

Btw, the way you work with series looks very similar to what it is in ML (vectorized). So maybe it's not a per indicator question, still I don't have enough info about how your blackbox works).
0
- ago
#5
QUOTE:
But if you use something like iterating no chance to use GPU without refactoring.

That's my point. No "GPU support" silver bullet for indicators.
0
- ago
#6
Of course, there are some freely-available ML packages such as LightGBM (https://en.wikipedia.org/wiki/LightGBM), which is an Open-Source "tree" ML product from Microsoft. It appears to incorporate all of the most recent "tree" variations, and has built-in GPU support.

Vince

0
Glitch8
 ( 13.30% )
- ago
#7
We should definitely consider this base level support for WL8+!
1
- ago
#8
QUOTE:
We should definitely consider this base level support for WL8+!


Waaat?

Is WL8+ going to be from the scratch too?))
Should we start getting ready for that mentally?)
0
Glitch8
 ( 13.30% )
- ago
#9
Get ready to beta test for the rest of your (my?) life!!
0
- ago
#10
Oh yeah!
0
- ago
#11
QUOTE:
We should definitely consider this base level support for WL8+!


:)

But you really do hit the most serious point...i.e. GPU functionality is best achieved during the initial design. The more "developed" an application becomes, the more difficult it becomes to "insert" that capability, and the more likely there will be "issues" arising from the transition.

Vince
0
mjj38
- ago
#12
Question for you ML experts: Over the years, I've developed relatively standard trade management techniques for various timeframes (weekly, daily, 30m and tick charts). I've used various ML approaches for developing entry windows but I've always wanted to apply ML techniques to my exits, but I'm not sure how to tackle the problem. Any suggestion?
0
- ago
#13
QUOTE:
Question for you ML experts: Over the years, I've developed relatively standard trade management techniques for various timeframes (weekly, daily, 30m and tick charts). I've used various ML approaches for developing entry windows but I've always wanted to apply ML techniques to my exits, but I'm not sure how to tackle the problem. Any suggestion?


For example you may track the likelihood of further growth. If it falls below the certain level - it can be a trigger for exiting. Like 50% upwards and 50% downwards. Or 40/60. Like you enter at 75/25 and exit when below 40/60.
1
- ago
#14
mjj3,

I suggest that you consider the "exit" as very similar to the inverse of your "entry"... That approach will give the necessary insight about how to proceed further.

Vince
1
mjj38
- ago
#15
QUOTE:
I suggest that you consider the "exit" as very similar to the inverse of your "entry"... That approach will give the necessary insight about how to proceed further.
Thanks Vince. Makes total sense for when the reason you entered the trade reverses or is no longer there.

I generally though separate my entry logic from my exit logic. For example, I have trade management logic that I've developed over the years for each timeframe I trade. If I identify an entry edge, I have a standard trade management routine that handles the exit of the trade. I've found that this approach allows me to turn around trade ideas very quickly.

The trade management routine uses a large number exits that combined have shown good out of sample results over the years. Depending on the timeframe, the exits could be volatility based, forecasted daily range, composite breadth bias, value chart patterns etc. Currently these rules are optimized by timeframe across all my strategies (i.e. different entries). I feel like this complex exit logic is ripe for some ML techniques but I have no idea where to begin.
0
- ago
#16
I like to use the model builder from Microsoft ML.NET because this gives me a good hint as which type of ML algorithm family might work best, such as a specific type of tree, or a type of regression, or a type of classification, and then I focus on that type of algorithm and work from there.

Right now I do this with my database outside of the WealthLab environment because I built the framework before Tensor flow existed, and I have not yet completed my full transition from WL6 to WL7, however ML.NET is .Net-Core and so should in theory fully integrate (although my prototyping has resulted in issues consuming the prediction engine output that I am yet to resolve).
1
- ago
#17
My experience with WL7 + ML:

I've recently made Python API (so I own the power of sklearn, xgboost, tensorflow etc.) and I've implemented a method and environment to get predicts from models that can be accessed via this API. So I can use the power of ML)). It's not so fast - like 4 requests per second, but it works fine for Daily.
0
mjj38
- ago
#18
Thanks for the suggestion. I'll take a look.
0
- ago
#19
mjj3,

QUOTE:
Makes total sense for when the reason you entered the trade reverses or is no longer there.


IMO this should be the primary exit criteria, and as you stated if there is no longer a reason to be in a trade you should exit. Yes, there needs to be a number of other exit criteria, but the "reverse" is the primary one.

Vince
0
- ago
#20
Hi Guys, another approach regarding WL+ML with python is to use ONNX (Open Neural Network Exchange ) or PMML(Predictive Model Markup Language) to export the model and use it with C#. For example:

1. Train your model using python/R
http://onnx.ai/sklearn-onnx/

2. Run your ONNX model using ML .net, below are some examples:
https://www.youtube.com/watch?v=Yf7VXj1etdw

https://docs.microsoft.com/en-us/azure/machine-learning/how-to-use-automl-onnx-model-dotnet

xgboost Example:
http://onnx.ai/sklearn-onnx/auto_examples/plot_pipeline_xgboost.html

I have been using ONNX here in my work, and it works great. It is very fast.
You can have more information here at ONNX (https://onnx.ai/).

Robson
0

Reply

Bookmark

Sort