It is often said that bitcoin has a cycle like its price goes up and down at some intervals. We verify if that is really the case using fourier transform.

**Fourier transform** is a technique to decompose a signal into its *constituent frequencies* where frequency refers to the number of cycles in a given time period.

Can you identify cycles from the below?

First component in the data is $sin(2 \pi t)$ which has *period* of 1 which corresponds to *frequency* of 1 (= 1/1).

Second is $cos(2 \pi * {t \over 10})$ which has *period* of 10 which corresponds to *frequency* of 0.1 (= 1/10).

And the sum of those two, $sin(2 \pi t) + cos(2 \pi * {t \over 10})$, is the original data.

Fourier transform is a tool to identify such frequencies. In the below, you can see two peaks at 0.1 (from $sin(2 \pi t)$) and 1 (from $cos(2 \pi * {t \over 10})$).

After converting bitcoin data to stationary timeseries, fourier transform identified the following 10 dominant frequencies (= the top frequencies with largest explanation power). Each corresponds to the periods of **20.7, 8.3, 5.4, 5.0, 3.3, 3.1, 2.8, 2.8, 2.4, and 2.05** days, meaning that bitcoin price has a cycle with that many days.

How useful are these frequencies in predicting future bitcoin prices? By splitting the data and using the training data to predict future values, we observe significant errors in both of training and testing data.

When using all identified frequencies, we fit the training data pretty well but still fail to predict future.

These observations suggest that bitcoin prices do not exhibit clear, consistent cycles.