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

import numpy as np
from statsmodels.stats.diagnostic import acorr_ljungbox
from statsmodels.tsa.stattools import acf

rng = np.random.default_rng(18)
x = rng.normal(size=500)
print(np.round(acf(x, nlags=3, fft=True), 3))
print(round(acorr_ljungbox(x, lags=[10], return_df=True)["lb_pvalue"].iloc[0], 3))

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

rng = np.random.default_rng(1818)
level = np.cumsum(rng.normal(size=600))
difference = np.diff(level)
print(round(adfuller(level, regression="c")[1], 4))
print(f"{adfuller(difference, regression='c')[1]:.2e}")

import numpy as np
from statsmodels.stats.diagnostic import acorr_ljungbox
from statsmodels.tsa.stattools import acf
rng = np.random.default_rng(18)
x = rng.normal(size=500)
print(np.round(acf(x, nlags=3, fft=True), 3))
