In [2]:
%matplotlib inline
import pymc3 as pm
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb
import pandas as pd
plt.style.use("fivethirtyeight")
In [3]:
from get_stock_data import btc
In [4]:
data = btc["2016-12-22":"2017-11-11"]
In [5]:
data.plot()
Out[5]:
In [6]:
data_len = len(data)
data_len
Out[6]:
In [7]:
y_data = np.array(data)
In [ ]:
with pm.Model() as model:
A = pm.Uniform("A", 8, 10)
B = pm.Uniform("B", -1, 0)
C = pm.Uniform("C", 0, 1)
beta = pm.Uniform("beta", 0.1, 0.9)
t_c = pm.Uniform("t_c", 1, 100)
omega = pm.Uniform("omega", 5, 12)
phi = pm.Uniform("phi", 0, 2 * np.pi)
X = np.arange(data_len)
dt = (t_c + data_len) - X
y_hat = A + B * dt ** beta * (1 + C * pm.math.cos(omega * pm.math.log(dt) + phi))
sigma = pm.HalfNormal('sigma', sd=1)
y = pm.Normal("y", y_hat, sd=sigma, observed=y_data)
trace = pm.sample(2000, tune=500)
In [12]:
pm.traceplot(trace);
In [10]:
pm.summary(trace)
Out[10]:
In [ ]: