Debunking Myths: Fibonacci 618, Buy the Dip (Short the bounce)?

Norman Fung
4 min readMay 6, 2024

--

[This is not investment advice, do your own research. Assume I am here to lie to you.]

Is Fibonacci a TA voodoo? Is there any basis for this? Lets put it to the test.

Do you trust KOLs?

1 May 2024 crash to 56.5k
5 May 2024 market bounced right back

These KOLs are trying to help you sell your bag at bottom, and chase at top.

A few quick examples first?

Example 1: Fibonacci predicted market would have chop to 54237.944 (vs actual was 56.5k on 1 May 2024, so didn’t quite chop to 618 @ 54.8k, but close)

From Tradingview, Fib 618 predicting chop to 54.8k, vs actual around 56.5k

Example 2, Big chop on 1 May 2024. Fibonacci predicted bounce back to 61135.0 (vs actual 64.5k on 4 May 2024).

From Tradingview, Fib 618 predicting bounce back to 66.5k (vs actual 64.5k)

What happened?

a) weaker than expected employment data

Unemployment act 3.9 est 3.8 https://tradingeconomics.com/united-states/unemployment-rate

Non farm payroll act 175k est 243k https://tradingeconomics.com/united-states/non-farm-payrolls

b) Dovish Powell, with weakened labor market, all of a sudden, Sept 2024 first rate cut back on the table! https://www.cmegroup.com/markets/interest-rates/cme-fedwatch-tool.html

c) ETF inflows usd378mn on 3 May bought the dip. (https://www.coinglass.com/bitcoin-etf).

Example 3, What if market just follow Fibonacci? Of course it didn’t, but let’s just see?

After ten iterations, it’d converge to usd61.4k, as price_range narrows!

So if fib 618 keep converging to some level if you loop it … is this all just bs? At least on conceptual level, we understand Fibonacci levels essentially predict that “Price will converge”. Is this a useless indicator then? We know as price converges at times, wait enough, prices always move.

Example 4, Now, I duplicate code from Debunking Myths: Trading breakouts (Please reference this article on details how to operate the notebook code), modifying only entry conditions and one parameter:

hi_how_many_candles_values = [ (‘1d’, 30*3, 1150) ] (Three months sliding window vs one month)

Note, I still trade with the trend, i.e. long only in bull trend (>90d EMA) and vice versa.

Back test 1. Take fib 618 as entry signal.

If chop down to 618, we long. Take profit when reach boillenger top reached. Again we only changed one line in entry condition!

If bounce to up to 618, we short. Take profit when reach to boillenger bottom reached.

Results tells me I can quite reliably loose money (45% over three years)

All hope is lost?

Back test 2. All hope is lost? Experience tells me if I reliably loose money, I can just do the exact opposite.

Results? It’s like mirror image of Back test 1.

My personal preferences is more entries …

Sharpe 7.44 and 209% return over three years?!

What’s the catch?!

What’s that tell me? I get the feeling I should take 618 as momentum signal rather than a reversal signal? Essentially if price chop down to Fibs 618 “support level”, you should short it as statistics tell you this level breaks more often than it recovers.

In English,

if price chops down to fibs 618, generally this is where confidence still very broken and the chop is likely to continue further.

What if …

  1. deeper TP: In above test, I TP when price reaches boillenger bands, if your TPs too shallow, it won’t be sufficient tto pay for the SLs.
  2. I take “786” as mean reversion level instead? (At this point, I have to tell you I haven’t tried everything in life)

I guess my greatest surprise was: I expected Random Walk. I didn’t see Random Walk.

Did I lied about debunking Fibs 618? Did I refute it? Or supported it?

If you can’t explain certain thing, model it!

Thoughts gents? I don’t have time to try everything, please let me know if you found something else?

Code

Please take from “Debunking Myths: Trading breakouts”

You need the fundamentals from that article to learn how to operate the code base, and how to analysis back test exports/csv. You only need modify one param “hi_how_many_candles_values” and entries conditions (two lines of code)

--

--