# Ceteris Lab downloadable Python script
# Course: Fundamentals of Python for Financial Econometrics

import numpy as np
import pandas as pd
from statsmodels.tsa.api import VAR

rng = np.random.default_rng(26)
y = np.zeros((400, 2))
for t in range(1, 400):
    y[t] = [0.55*y[t-1,0] + 0.20*y[t-1,1], -0.10*y[t-1,0] + 0.45*y[t-1,1]] + rng.normal(scale=0.6, size=2)
df = pd.DataFrame(y, columns=["x", "z"])
fit = VAR(df).fit(1)
print(fit.coefs[0].round(2))

import numpy as np
from statsmodels.tsa.stattools import adfuller

rng = np.random.default_rng(2601)
common = np.cumsum(rng.normal(size=600))
x = common + rng.normal(scale=0.5, size=600)
y = 1.2*common + rng.normal(scale=0.5, size=600)
spread = y - 1.2*x
print(f"{adfuller(spread)[1]:.2e}")

import numpy as np
import pandas as pd
from statsmodels.tsa.api import VAR
rng = np.random.default_rng(26)
y = np.zeros((400, 2))
df = pd.DataFrame(y, columns=["x", "z"])
