Pages:
Author

Topic: Wouldn't it be nice... (the LazyWhale algorithm) - page 2. (Read 24722 times)

legendary
Activity: 1470
Merit: 1007
^ Remarkably similar then. Mine is getting close as well, but I decided not to post "predictions of signal changes" anymore... I'll update if and when it flips, that's prediction-y enough Cheesy
full member
Activity: 232
Merit: 100
my lazy-whale signal flipped up again this am.
legendary
Activity: 3892
Merit: 4331
Guys! Back on topic please!!!  Angry

We're here to discuss black box, underperforming trading algorithms with stupid names, not nematode registration.

"nematode registration"... *snort*

don't you curse nematodes. They are an important genetics model organism (C. elegans), from which much was learned about aging, development, etc... Wink
legendary
Activity: 1470
Merit: 1007
^ Right. Good point.


average-fast = f(x)
average-fast-sig = f'(x)

average-mid = g(x)
average-mid-sig = g'(x)

average-slow = h(x)
average-slow-sig = h'(x)

sig-1 := if average-mid > average-mid-sig, buy. if average-mid < average-mid-sig, sell.

sig-2 := if average-fast > average-fast-sig, buy. if average-fast < average-fast-sig, sell.

sig-3 := if average-slow < average-slow-sig, sell.

trade-signal := if sig-1 == sig-2 == sig-3 == sell, sell. if sig-1 == sig-2 == buy, buy. o/w, do nothing.


To be clear, the final trades are based on the combined 'trade-signal' condition.

ah OK, so it is not a code, it is kind of a logic you have, and do you daily pull the data and calculate it manually? if yes, then where from and how do you get that data?

The above is just the pseudocode because Lambchop thought it'd be easier to understand. It is not calculated "by hand", if that's what you mean.

Based on the regular exchange data, like the one you can get from sierrachart, tradingview, or bitcoincharts. Nothing proprietary or secret.
legendary
Activity: 1148
Merit: 1001
things you own end up owning you
^ Right. Good point.


average-fast = f(x)
average-fast-sig = f'(x)

average-mid = g(x)
average-mid-sig = g'(x)

average-slow = h(x)
average-slow-sig = h'(x)

sig-1 := if average-mid > average-mid-sig, buy. if average-mid < average-mid-sig, sell.

sig-2 := if average-fast > average-fast-sig, buy. if average-fast < average-fast-sig, sell.

sig-3 := if average-slow < average-slow-sig, sell.

trade-signal := if sig-1 == sig-2 == sig-3 == sell, sell. if sig-1 == sig-2 == buy, buy. o/w, do nothing.


To be clear, the final trades are based on the combined 'trade-signal' condition.

ah OK, so it is not a code, it is kind of a logic you have there, and do you daily pull the data and calculate it manually? if yes, then where from and how do you get that data?
legendary
Activity: 1470
Merit: 1007
^ Right. Good point.


average-fast = f(x)
average-fast-sig = f'(x)

average-mid = g(x)
average-mid-sig = g'(x)

average-slow = h(x)
average-slow-sig = h'(x)

sig-1 := if average-mid > average-mid-sig, buy. if average-mid < average-mid-sig, sell.

sig-2 := if average-fast > average-fast-sig, buy. if average-fast < average-fast-sig, sell.

sig-3 := if average-slow < average-slow-sig, sell.

trade-signal := if sig-1 == sig-2 == sig-3 == sell, sell. if sig-1 == sig-2 == buy, buy. o/w, do nothing.


To be clear, the final trades are based on the combined 'trade-signal' condition.
sr. member
Activity: 378
Merit: 254
^Just meant that (at first glance) it seemed to be overly complex.  Didn't fully grasp what you were trying to do, though.  It would probably be a bit easier if you posted something like pseudocode, like mmitech suggested.
legendary
Activity: 1470
Merit: 1007


Harsh, man. I'm not exactly claiming to have invented a perpetuum mobile of trading. In fact, the engine's kind of sputtering right now Cheesy
legendary
Activity: 1470
Merit: 1007
Can I take a look at the code ? maybe if you upload it on Github you will get some contribution which will help make it work better algorithm ?

Thanks, but the code is fine, I'm pretty sure. Nothing complicated either. It's about the filtering condition #3. Is there any justification to asymmetrically delay sells but not buys. Generally, the answer is no. I do it anyway, cause on a long enough time frame I'm bitcoin bullish, I guess.
legendary
Activity: 1148
Merit: 1001
things you own end up owning you
Alright. Initially, when people asked how the algorithm works internally, I refused to specify it any further. Now that nobody cares anymore, here's the basic idea ^_^

Note: I'm not going to fill in the exact numerical parameters of the the technical/indicator signals. No need to encourage frontrunning. But in principle, with the details I'm about to give, you could find your own (and probably very similar) parameters by training the individual parts over the market data that is the same for everyone.

The trade signals of this algorithm are a complex condition based on three technical signals.

Signal #1, the "main" signal, is a medium term momentum signal. Think "daily EMA20+10 crossover", but the average I use is instead a Hull type average (and the parameters are obviously not 20/10).

Important to note here: signal #1 is symmetric wrt 'buy' and 'sell'.

If used alone, signal #1 is profitable over the global bitcoin history (GX, BS, BF), and roughly uniformly profitable as well. However, it yields slightly too many trades, and tends to sell too early during major rallies. So, it is not the desired signal yet that only sells when it really has to.

Signal #2 is a short-term momentum signal. It acts as a filter applied to #1. Think of it as an "optimal entry/exit" filter. It cannot initiate additional trades by itself, it can only delay a trade based on signal #1. It is basically capturing the idea: if the medium term is up, but the short term is drastically down, better wait a bit before you buy (similar for delaying a sell trade). Signal #2 is buy/sell symmetric as well, and I don't really think it is problematic (also, leaving it out doesn't change the results from a pure signal #1 strategy much).

Signal #3 is the tricky one. You could call it the "bubble filter". Just like #2, it doesn't do anything other than (possibly) delay signals coming from #1, i.e. it doesn't add to the total number of trade signals but only *reduces* them under certain conditions.

It defines certain market conditions (think: long term momentum) to be so strongly bullish that a mid-term momentum signal from #1 that says 'sell' should be ignored for the moment, until either the mid term is up again, or the market condition becomes less bullish, in which case the 'sell' goes through.

And here's the tricky bit. Signal #3 is not buy/sell symmetric. It only delays 'sell' trades, but not 'buy' trades, in case the long term momentum is flipped around

I know. That buy/sell asymmetry is a big violation of all that is holy in algorithmic trading. Reeks of overfitting.

Still, given the history of the Bitcoin market so far, I can see some justification for it. It works well for 2011, 2012, 2013. In 2014, it still works well enough for the first half, but from then on, it's not really justified anymore.

I guess it all depends now if Bitcoin will ever go through a significant bull market again, and when. Let's say it does ("Bitcoin is dead" users need not reply Cheesy). That still doesn't mean that the exact parameters of the "bubble filter" are optimal, but it's probably not going to be the millstone around the algorithms neck that it is right now, delaying sell signals when it really shouldn't.

In a way, I'm making a human choice for my algorithmic method here: the assumption, that in the long run, it is better to err on the side of buying than on the side of selling - a choice that is justified by the global history of the market, but not by the more local one.

Comments welcome.

Can I take a look at the code ? maybe if you upload it on Github you will get some contribution which will help make it work better algorithm ?
sr. member
Activity: 378
Merit: 254
^I see what you did there...



Nope, still not gonna work Cheesy
legendary
Activity: 1470
Merit: 1007
Alright. Initially, when people asked how the algorithm works internally, I refused to specify it any further. Now that nobody cares anymore, here's the basic idea ^_^

Note: I'm not going to fill in the exact numerical parameters of the the technical/indicator signals. No need to encourage frontrunning. But in principle, with the details I'm about to give, you could find your own (and probably very similar) parameters by training the individual parts over the market data that is the same for everyone.

The trade signals of this algorithm are a complex condition based on three technical signals.

Signal #1, the "main" signal, is a medium term momentum signal. Think "daily EMA20+10 crossover", but the average I use is instead a Hull type average (and the parameters are obviously not 20/10).

Important to note here: signal #1 is symmetric wrt 'buy' and 'sell'.

If used alone, signal #1 is profitable over the global bitcoin history (GX, BS, BF), and roughly uniformly profitable as well. However, it yields slightly too many trades, and tends to sell too early during major rallies. So, it is not the desired signal yet that only sells when it really has to.

Signal #2 is a short-term momentum signal. It acts as a filter applied to #1. Think of it as an "optimal entry/exit" filter. It cannot initiate additional trades by itself, it can only delay a trade based on signal #1. It is basically capturing the idea: if the medium term is up, but the short term is drastically down, better wait a bit before you buy (similar for delaying a sell trade). Signal #2 is buy/sell symmetric as well, and I don't really think it is problematic (also, leaving it out doesn't change the results from a pure signal #1 strategy much).

Signal #3 is the tricky one. You could call it the "bubble filter". Just like #2, it doesn't do anything other than (possibly) delay signals coming from #1, i.e. it doesn't add to the total number of trade signals but only *reduces* them under certain conditions.

It defines certain market conditions (think: long term momentum) to be so strongly bullish that a mid-term momentum signal from #1 that says 'sell' should be ignored for the moment, until either the mid term is up again, or the market condition becomes less bullish, in which case the 'sell' goes through.

And here's the tricky bit. Signal #3 is not buy/sell symmetric. It only delays 'sell' trades, but not 'buy' trades, in case the long term momentum is flipped around

I know. That buy/sell asymmetry is a big violation of all that is holy in algorithmic trading. Reeks of overfitting.

Still, given the history of the Bitcoin market so far, I can see some justification for it. It works well for 2011, 2012, 2013. In 2014, it still works well enough for the first half, but from then on, it's not really justified anymore.

I guess it all depends now if Bitcoin will ever go through a significant bull market again, and when. Let's say it does ("Bitcoin is dead" users need not reply :D). That still doesn't mean that the exact parameters of the "bubble filter" are optimal, but it's probably not going to be the millstone around the algorithms neck that it is right now, delaying sell signals when it really shouldn't.

In a way, I'm making a human choice for my algorithmic method here: the assumption, that in the long run, it is better to err on the side of buying than on the side of selling - a choice that is justified by the global history of the market, but not by the more local one.

Comments welcome.
legendary
Activity: 1470
Merit: 1007
Easy on the Hopium, guys Cheesy

I relaxed the conditions of the algorithm a bit to get slightly more signals overall to counter the sparsity of trades problem that was rightfully pointed out by Ryn and Lambchop among others - but even then, no change in signals yet. Still says 'USD', from the previous 300s signal, (EDIT) with no signals in between.

Well, it got the short side right.  Smiley
I'm sure this will be like any indicator, "Holy Grail" indicators included. When it's good, it's great but it can't always be good either. There are too many possibilities in market actions/patterns to account for them all. So it's to be expected to have some bad signals. I'm sure you will find what ye seek

Completely agreed on the second line... original post (on page 1) is kind of cringeworthy when I re-read it now (but I left it unchanged Cheesy). Very much "I have found the holy grail" style post...

I am however getting a clearer idea of what I'm actually doing with my signal combination. There always seems to be some trade-off between trading styles, and another way to look at the signal I am aiming for can maybe be summarized as follows: "During bear markets, stay approximately USD neutral. During bull markets, aim for maximal USD profits."

It's not encoded like that of course, but I think that's essentially what I'm looking for. In principle, if BTC would enter a 20 bear year market, trades based on the signal could well be losing USD value as well (just at a much slower rate than market, ideally). It is after all based on the premise that, eventually, there will be another BTC bull market (and as such is unsuited for the most hardened bears crypto skeptics trolls Notlambchop Tongue)
legendary
Activity: 2408
Merit: 1009
Legen -wait for it- dary
Easy on the Hopium, guys Cheesy

I relaxed the conditions of the algorithm a bit to get slightly more signals overall to counter the sparsity of trades problem that was rightfully pointed out by Ryn and Lambchop among others - but even then, no change in signals yet. Still says 'USD', from the previous 300s signal, (EDIT) with no signals in between.

Well, it got the short side right.  Smiley
I'm sure this will be like any indicator, "Holy Grail" indicators included. When it's good, it's great but it can't always be good either. There are too many possibilities in market actions/patterns to account for them all. So it's to be expected to have some bad signals. I'm sure you will find what ye seek
legendary
Activity: 2576
Merit: 1087
That indicator be one tough mistress.
legendary
Activity: 1470
Merit: 1007
Easy on the Hopium, guys Cheesy

I relaxed the conditions of the algorithm a bit to get slightly more signals overall to counter the sparsity of trades problem that was rightfully pointed out by Ryn and Lambchop among others - but even then, no change in signals yet. Still says 'USD', from the previous 300s signal, (EDIT) with no signals in between.
legendary
Activity: 2576
Merit: 1087
I second that... if its flipped again and says "buy now" then I think its on to a winner Wink
pa
hero member
Activity: 528
Merit: 501
What kind of signals have you been getting from your LazyWhale algorithm?
legendary
Activity: 1470
Merit: 1007
Guys! Back on topic please!!!  Angry

We're here to discuss black box, underperforming trading algorithms with stupid names, not nematode registration.

"nematode registration"... *snort*
legendary
Activity: 2576
Merit: 1087
This is one of the observations I made during the last year that is still puzzling me. Many of the "old hands" (let's say, registration 2012 and before) seem to have a very keen nose for the market state in general terms.

I'm not talking about the most general intuition, the 'in retrospect, any price turns out to be a good price per coin on a long enough horizon' idea. I share that one, but it's more of a shared hope we have here, but it hasn't been tested that much yet.

I mean a more specific one: the one where the legendary (previously: hero) members have a pretty good feel for when the market is about to turn, both towards 'hopeless, prepare for a serious correction' but also at the other end, 'don't expect that much panic anymore'. It's not universally shared among that class of members of course (some are almost always too bullish, some almost always too bearish), but a good number of the old members that I follow seem to be able to get a rough reading on what the state of the market is.

No deeper insight I can offer. Just something I believe to have noticed.
Possible explanations:

1. The key is brains. Early accepters are smarter, in general. To invent bitcoin you have to be very very smart, to understand and appreciate you have to be very smart, and so on.
2. The key is knowledge. For the 4 years of trading they've became B.Sc of trading.
3. The key is managing your emotions. For 4 years they got enough emotional experience to be able to control them.
4. The key is natural talent. 4 years of natural selection took ones with it. The rest is broken or just left the forum.

Well. Heaps of versions and no idea which one to chose. Just like with trading. There always a lot of plausible theories about why the price must go up and lot - about why it must go down. And I always choose wrong one  Smiley

Re: #1, it would be interesting to administer an IQ test to all bitcointalk participants and correlate with date of account registration. Or, does anyone know of a script to estimate IQ from forum posts?
No such thing exists, and you should probably be glad about that.

2015 is looking like the year that nematode registration goes through the roof!
Pages:
Jump to: