Repository: cvxgrp/cov_pred_finance (language: python)

Issue:
Update README.md (#2)
correct hyperlink to existing page


Discussion / hints:

Fix patch:
diff --git a/cvx/covariance/ewma.py b/cvx/covariance/ewma.py
index 3c6932e2..0e230e23 100644
--- a/cvx/covariance/ewma.py
+++ b/cvx/covariance/ewma.py
@@ -2,42 +2,107 @@
 import pandas as pd
 from pandas._typing import TimedeltaConvertibleTypes
 from typing import Union
+from collections import namedtuple
+
+IEWMA = namedtuple('IEWMA', ['mean', 'covariance'])
 
 
 def _generator2frame(generator):
     return pd.DataFrame(dict(generator)).transpose()
 
 
-def variance(returns, halflife, min_periods=0):
-    for time, variance in ewma_mean(np.power(returns, 2), halflife=halflife, min_periods=min_periods):
+def variance(returns, halflife, min_periods=0, clip_at=None):
+    for time, variance in ewma_mean(np.power(returns, 2), halflife=halflife, min_periods=min_periods, clip_at=clip_at):
         yield time, variance
 
+def volatility(returns, halflife, min_periods=0, clip_at=None):
+    return np.sqrt(_generator2frame(variance(returns, halflife, min_periods=min_periods, clip_at=clip_at)))
+
+def _regularize_correlation(R, r):
+    """
+    param Rs: Txnxn numpy array of correlation matrices
+    param r: float, rank of low rank component 
+
+    returns: low rank + diag approximation of R\
+        R_hat = sum_i^r lambda_i q_i q_i' + E, where E is diagonal,
+        defined so that R_hat has unit diagonal; lamda_i, q_i are eigenvalues
+        and eigenvectors of R (the r first, in descending order)
+    """
+    eig_decomps = np.linalg.eigh(R)
+    Lamda = eig_decomps[0]
+    Q = eig_decomps[1]
+
+    # Sort eigenvalues in descending order
+    Lamda = np.diag(Lamda[::-1])
+    Q = Q[ :, ::-1]
 
-def volatility(returns, halflife, min_periods=0):
-    return np.sqrt(_generator2frame(variance(returns, halflife, min_periods=min_periods)))
+    # Get low rank component
+    Lamda_r = Lamda[:r, :r]
+    Q_r = Q[:, :r]
+    R_lo = Q_r @ Lamda_r @ Q_r.T
+
+    # Get diagonal component 
+    D = np.diag(np.diag(R-R_lo))
+    
+    # Create low rank approximation
+    return R_lo + D
 
 
 def iterated_ewma(returns, vola_halflife, cov_halflife, lower=None, upper=None,\
-    min_periods_vola=20, min_periods_cov=20):
-    def scale(vola, matrix):
+    min_periods_vola=20, min_periods_cov=20, mean=False, low_rank=None, clip_at=None):
+    def scale_cov(vola, matrix):
+        index = matrix.index
+        columns = matrix.columns
+        matrix = matrix.values
+
         # Convert (covariance) matrix to correlation matrix
         v = np.sqrt(np.diagonal(matrix))
         matrix = matrix / np.outer(v,v)
 
+        if low_rank: # low rank approximation
+            matrix = _regularize_correlation(matrix, low_rank)
 
-        d = pd.DataFrame(np.diag(vola), index=matrix.index, columns=matrix.columns)
-        return d @ matrix @ d
+        cov = vola.reshape(-1,1) * matrix * vola.reshape(1,-1)
+
+        return pd.DataFrame(cov, index=index, columns=columns)
+    def scale_mean(vola, vec1, vec2):
+        return vec1 + vola * vec2
+
+    if mean:
+        returns_mean = _generator2frame(ewma_mean(data=returns, halflife=vola_halflife, min_periods=0))
+    else:
+        returns_mean = pd.DataFrame(np.zeros_like(returns), index=returns.index, columns=returns.columns)
+    if clip_at:
+        clip_at_var = clip_at**2
+    else:
+        clip_at_var = None
+    vola = volatility(returns=returns-returns_mean, halflife=vola_halflife,\
+         min_periods=min_periods_vola, clip_at=clip_at_var)
+
+    if clip_at: # Clip returns
+        returns = returns.clip(returns_mean-clip_at*vola, returns_mean+clip_at*vola) 
 
-    # do not adjust for the moving mean
-    vola = volatility(returns=returns, halflife=vola_halflife,\
-         min_periods=min_periods_vola)
 
     # adj the returns
-    adj = (returns / vola).clip(lower=lower, upper=upper)
+    adj = ((returns-returns_mean) / vola).clip(lower=lower, upper=upper)
     # remove all the leading NaNs
     adj = adj.dropna(axis=0, how="all")
 
-    return {t: scale(vola=vola.loc[t].values, matrix=matrix) for t, matrix in ewma_cov(data=adj, halflife=cov_halflife, min_periods=min_periods_cov)}
+    if mean:
+        adj_mean = _generator2frame(ewma_mean(data=adj, halflife=cov_halflife, min_periods=0))
+    else:
+        adj_mean = pd.DataFrame(np.zeros_like(adj), index=adj.index, columns=adj.columns)
+
+    if mean:
+        covs = {t: scale_cov(vola=vola.loc[t].values, matrix=matrix) for t, matrix in ewma_cov(data=adj-adj_mean, halflife=cov_halflife, min_periods=min_periods_cov)}
+
+        means = {t: scale_mean(vola=vola.loc[t].values, vec1=returns_mean.loc[t], vec2=adj_mean.loc[t]) for t in covs.keys()}
+
+
+        return IEWMA(mean=means,covariance=covs)
+
+    else:
+        return {t: scale_cov(vola=vola.loc[t].values, matrix=matrix) for t, matrix in ewma_cov(data=adj-adj_mean, halflife=cov_halflife, min_periods=min_periods_cov)}
 
 
 def ewma_cov(data, halflife, min_periods=0):
@@ -47,8 +112,8 @@ def ewma_cov(data, halflife, min_periods=0):
             yield t, pd.DataFrame(index=data.columns, columns=data.columns, data=ewma)
 
 
-def ewma_mean(data, halflife, min_periods=0):
-    for t, ewma in _general(data.values, times=data.index, halflife=halflife, min_periods=min_periods):
+def ewma_mean(data, halflife, min_periods=0, clip_at=None):
+    for t, ewma in _general(data.values, times=data.index, halflife=halflife, min_periods=min_periods, clip_at=clip_at):
         # converting back into a series costs some performance but adds robustness
         if not np.isnan(ewma).all():
             yield t, pd.Series(index=data.columns, data=ewma)
@@ -61,7 +126,8 @@ def _general(y,
              halflife: Union[float, TimedeltaConvertibleTypes, None] = None,
              alpha: Union[float, None] = None,
              fct=lambda x: x,
-             min_periods=0):
+             min_periods=0,
+             clip_at=None):
     """
     y: frame with measurements for times t=t_1,t_2,...,T
     halflife: EWMA half life
@@ -91,12 +157,15 @@ def f(k):
     beta = 1 - alpha
 
     # first row, important to initialize the _ewma variable
-    _ewma = fct(y[0])
+    _ewma = fct(y[0]) 
     yield f(k=0)
 
     # iterate through all the remaining rows of y. Start in the 2nd row
     for n, row in enumerate(y[1:], start=1):
         # update the moving average
-        _ewma = _ewma + (1 - beta) * (fct(row) - _ewma) / (1 - np.power(beta, n+1))
+        if clip_at and n>=min_periods+1: 
+            _ewma = _ewma + (1 - beta) * (np.clip(fct(row), -clip_at*_ewma, clip_at*_ewma) - _ewma) / (1 - np.power(beta, n+1))
+        else:
+            _ewma = _ewma + (1 - beta) * (fct(row) - _ewma) / (1 - np.power(beta, n+1))
 
-        yield f(k=n)
+        yield f(k=n)
\ No newline at end of file
diff --git a/cvx/covariance/iterated_ewma.py b/cvx/covariance/iterated_ewma.py
index 68d4fefc..2a90dfac 100644
--- a/cvx/covariance/iterated_ewma.py
+++ b/cvx/covariance/iterated_ewma.py
@@ -2,18 +2,22 @@
 import pandas as pd
 from collections import namedtuple
 
+from cvx.covariance.utils import _regularize_correlation
+
+
 ### This is vectorized iterated EWMA
 
 # named tuple
 IEWMA = namedtuple('IEWMA', ['mean', 'covariance'])
 
 
-def get_next_ewma(EWMA, y_last, t, beta):
+def get_next_ewma(EWMA, y_last, t, beta, clip_at=None, min_periods=None):
     """
     param EWMA: EWMA at time t-1
     param y_last: observation at time t-1
     param t: current time step
     param beta: EWMA exponential forgetting parameter
+    param clip_at: clip y_last at  +- clip_at*EWMA (optional)
 
     returns: EWMA estimate at time t (note that this does not depend on y_t)
     """
@@ -21,12 +25,17 @@ def get_next_ewma(EWMA, y_last, t, beta):
     old_weight = (beta-beta**t)/(1-beta**t)
     new_weight = (1-beta) / (1-beta**t)
 
+    if clip_at:
+        assert min_periods, "min_periods must be specified if clip_at is specified"
+        if t >= min_periods+2:
+            return old_weight*EWMA + new_weight*np.clip(y_last, -clip_at*EWMA, clip_at*EWMA)
     return old_weight*EWMA + new_weight*y_last
 
-def ewma(y, halflife):
+def ewma(y, halflife, clip_at=None, min_periods=None):
     """
-    y: array with measurements for times t=1,2,...,T=len(y)
+    param y: array with measurements for times t=1,2,...,T=len(y)
     halflife: EWMA half life
+    param clip_at: clip y_last at  +- clip_at*EWMA (optional)
 
     returns: list of EWMAs for times t=2,3,...,T+1 = len(y)
 
@@ -41,10 +50,14 @@ def ewma(y, halflife):
     beta = np.exp(-np.log(2)/halflife)
     EWMA_t = 0
     EWMAs = []
-    for t in range(1,y.shape[0]+1): # First EWMA is for t=2 
-        y_last = y[t-1] # Note zero-indexing
-        EWMA_t = get_next_ewma(EWMA_t, y_last, t, beta)
-        EWMAs.append(EWMA_t)
+    EWMAs = np.zeros_like(y)
+    EWMAs[0] = y[0]
+    for t in range(1,y.shape[0]): # First EWMA is for t=2 
+        # y_last = y[t-1] # Note zero-indexing
+        # EWMA_t = get_next_ewma(EWMA_t, y_last, t, beta, clip_at, min_periods)
+        EWMAs[t] = get_next_ewma(EWMAs[t-1], y[t], t+1, beta, clip_at, min_periods)
+
+        # EWMAs.append(EWMA_t)
     return np.array(EWMAs)
 
 
@@ -73,24 +86,28 @@ def _get_realized_vars(returns):
     """
 
 
-    variances = []
+    # variances = []
+    T,n = returns.shape
+    volatilities = np.zeros((T, n))
     
     for t in range(returns.shape[0]):
         r_t = returns[t, :].reshape(-1,)
-        variances.append(np.diag(r_t**2))
-    return np.array(variances)
+        volatilities[t] = r_t**2
+        # sp.diags(diagonal_elements, 0)
+    return volatilities
 
-def _get_r_adj(returns, D_inv):
-    """
-    param D_inv: Txnxn numpy array of inverse of diagonal volatility matrices
-    param param returns: array of returns to whiten for t=1,2,..., 
 
-    returns: numpy array with r_tilde_hats as rows
-    """
-    T = returns.shape[0]
-    n = returns.shape[1]
-    returns = returns.reshape(T,n,1)
-    return D_inv @ returns
+# def _get_r_adj(returns, D_inv):
+#     """
+#     param D_inv: Txnxn numpy array of inverse of diagonal volatility matrices
+#     param param returns: array of returns to whiten for t=1,2,..., 
+
+#     returns: numpy array with r_tilde_hats as rows
+#     """
+#     T = returns.shape[0]
+#     n = returns.shape[1]
+#     returns = returns.reshape(T,n,1)
+#     return D_inv @ returns
 
 def _refactor_to_corr(Sigmas):
     """
@@ -103,95 +120,102 @@ def _refactor_to_corr(Sigmas):
     return Sigmas / outer_V
 
 
-
-
 def iterated_ewma(returns, vola_halflife, cov_halflife, lower=None, upper=None,\
-    min_periods=20, mean=False):
+    min_periods_vola=20, min_periods_cov=20, mean=False, low_rank=None, clip_at=None):
         """
         param returns: pandas dataframe with returns for each asset
         param vola_halflife: half life for volatility
         param cov_halflife: half life for covariance
         param lower: lower bound for adjusted return cutoff
         param upper: upper bound for adjusted return cutoff
-        param min_periods: minimum number of periods to use for EWMA
+        param min_preiods_vola: minimum number of periods to use for volatility
+        ewma estimate
+        param min_periods_cov: minimum number of periods to use for covariance
+        ewma estimate
         param mean: whether to estimate mean; if False, assumes zero mean data
+        param low_rank: rank of low rank component of correlation matrix
+        approximation; if None, no low rank approximation component is performed
+        param clip_at: clip volatility returns at clip_at*sigma_t in ewma
+        estimate of variance; i.e., clip_at is number of standard deviations to
+        clip at
 
         returns: dictionary with covariance matrix predictions for each day\
             each key (time step) in the dictionary corresponds to the
             prediction for the following (next) key (time step)
         """
-        # TODO: How to handle lower=None, upper=None?
-        lower = lower or -1000
-        upper = upper or 1000
+        # Need at least one period for EWMA estimate
+        min_periods_vola = max(1, min_periods_vola)
+        min_periods_cov = max(1, min_periods_cov)
 
-        if mean:
-            min_periods = max(min_periods, 3) # Need to remove two entries
+        if mean: # Need to remove one entry for each estimate
+            min_periods_vola = max(min_periods_vola, 2) 
+            min_periods_cov = max(min_periods_cov, 2)  
             returns_mean = ewma(returns.values, halflife=vola_halflife)
         else:
             returns_mean = np.zeros_like(returns)
 
-
-
-        ### Scaling  
+        ### Volatility estimation  
+        if clip_at:
+            clip_at_var = clip_at**2
+        else:
+            clip_at_var = None
         realized_vars = _get_realized_vars(returns.values-returns_mean)
-        if mean:
-            # The first entry contains zeros
-            realized_vars = realized_vars[1:]
-            returns_mean = returns_mean[1:]
-            returns = returns.iloc[1:].copy()
+        D = np.sqrt(ewma(realized_vars, halflife=vola_halflife, clip_at=clip_at_var, min_periods=min_periods_vola))
+        if clip_at: # Clip returns
+            returns = np.clip(returns, returns_mean-clip_at*D, returns_mean+clip_at*D)
 
+        # Apply min_periods_vola
+        # V = V[min_periods_vola-1:]
+        D = D[min_periods_vola-1:]
+        returns_mean = returns_mean[min_periods_vola-1:]
+        returns = returns.iloc[min_periods_vola-1:]
 
-        V = ewma(realized_vars, halflife=vola_halflife)
-        D = np.sqrt(V)
-        D_inv_diags = 1/np.diagonal(D, axis1=1, axis2=2)
-        D_inv = np.stack([np.diag(V) for V in D_inv_diags]) # Gets L^T s.t. LL^T = V_hat^{-1}
-        returns_adj = _get_r_adj(returns.values-returns_mean, D_inv).clip(min=lower, max=upper)
+        # Get adjusted returns
+        D_inv = 1 / D
+        returns_adj = (returns.values-returns_mean) * D_inv
 
-        ### Full whitening, outer products in T x n x n tensor
+        # Clip adjusted returns
+        if lower or upper:
+            returns_adj = returns_adj.clip(min=lower, max=upper)
+
+        ### Correlation estimation
         if mean:
             returns_adj_mean = ewma(returns_adj, halflife=cov_halflife)
         else:
             returns_adj_mean = np.zeros_like(returns_adj)
         realized_covs = _get_realized_covs(returns_adj-returns_adj_mean)
-        if mean:
-            # The first entry contains zeros only
-            realized_covs = realized_covs[1:]
-            returns_adj_mean = returns_adj_mean[1:]
-            returns_adj = returns_adj[1:]
-            returns_mean = returns_mean[1:]
-            returns = returns.iloc[1:].copy()
-            D = D[1:]
 
         # Create correlation matrix
         R_tilde = ewma(realized_covs, halflife=cov_halflife)
+        
+        # Apply min_periods_cov
+        R_tilde = R_tilde[min_periods_cov-1:]
+        returns_adj_mean = returns_adj_mean[min_periods_cov-1:]
+        returns_adj = returns_adj[min_periods_cov-1:]
+        returns_mean = returns_mean[min_periods_cov-1:]
+        D = D[min_periods_cov-1:]
+        returns = returns.iloc[min_periods_cov-1:].copy()
+
         R = _refactor_to_corr(R_tilde)
+        if low_rank:
+            R = _regularize_correlation(R, r=low_rank)
 
-        # Remove first min_periods-1 entries
-        if mean:
-            # We already removed the first two entries
-            burnin = min_periods-3
-        else:  
-            burnin = min_periods-1
-        R = R[burnin:, :, :]
-        D = D[burnin:, :, :]
-        returns_mean = returns_mean[burnin:, :]
-        # returns_adj = returns_adj[burnin:, :, :]
-        returns_adj_mean = returns_adj_mean[burnin:, :]
-        times = returns.index[burnin:]
-
-        # Engle 2002 formula
-        Sigmas = D @ R @ D
+        ### Engle 2002 formula
+        T, n = D.shape
+        D = D.reshape(T,1,n)
+        Sigmas = np.transpose(D, axes=(0,2,1)) * R * D
 
+        times = returns.index 
         if mean:
             T, n = R.shape[0], R.shape[1]    
+  
+            means = returns_mean + (D.reshape(T,n) * returns_adj_mean)
 
-            means = returns_mean + (D @ returns_adj_mean).reshape(T,n)
             means = {times[i]: pd.Series(means[i], index = returns.columns) for i in range(len(times))}
             covariances = {times[i]: pd.DataFrame(Sigmas[i], index = returns.columns, columns = returns.columns) for i in range(len(times))}
 
             return IEWMA(mean=means, covariance=covariances)
         else:
-
             return {times[i]: pd.DataFrame(Sigmas[i], index = returns.columns, columns = returns.columns) for i in range(len(times))}
 
     
diff --git a/cvx/covariance/predictors.py b/cvx/covariance/predictors.py
index 8b5ee2ed..98a09f6c 100644
--- a/cvx/covariance/predictors.py
+++ b/cvx/covariance/predictors.py
@@ -1,4 +1,4 @@
-from cvx.covariance.utils import *
+from cvx.covariance.utils_old import *
 import numpy as np
 from tqdm import trange
 
diff --git a/cvx/covariance/utils.py b/cvx/covariance/utils.py
index c12e6bbe..c3c507eb 100644
--- a/cvx/covariance/utils.py
+++ b/cvx/covariance/utils.py
@@ -1,1072 +1,33 @@
 import numpy as np
-import multiprocessing as mp
-import cvxpy as cp
-from tqdm import trange
-from concurrent.futures import ProcessPoolExecutor
-import pandas as pd
-from arch import arch_model
-from matplotlib import pyplot as plt
 
-
-
-def from_row_to_covariance(row, n):
-    """
-    Convert upper diagonal part of covariance matrix to a covariance matrix
-    """
-    Sigma = np.zeros((n,n))
-
-    # set upper triangular part
-    upper_mask = np.triu(np.ones((n,n)), k=0).astype(bool)
-    Sigma[upper_mask] = row
-
-    # set lower triangular part
-    lower_mask = np.tril(np.ones((n,n)), k=0).astype(bool)
-    Sigma[lower_mask] = Sigma.T[lower_mask]
-    return Sigma
-
-def from_row_matrix_to_covariance(M, n):
-    """
-    Convert Tx(n(n+1)/2) matrix of upper diagonal parts of covariance matrices to a Txnxn matrix of covariance matrices
-    """
-    Sigmas = []
-    T = M.shape[0]
-    for t in range(T):
-        Sigmas.append(from_row_to_covariance(M[t], n))
-    return np.array(Sigmas)
-
-def get_turnover(ws):
-        turnovers = []
-        for t in range(1,len(ws)):
-            w_tm = ws[t-1]
-            w_t = ws[t]
-            turnovers.append(np.linalg.norm(w_tm-w_t, ord=1))
-        return np.mean(turnovers)
-
-
-def Gaussian_likelihood(x, Sigma, mu=None):
-    """
-    Computes the Gaussian likelihood of x given mu and Sigma. 
-    """
-    if mu is None:
-        mu = np.zeros(x.shape[0])
-    n = x.shape[0]
-    return (1 / ((2 * np.pi)**(n/2) * np.linalg.det(Sigma)**(1/2))) * np.exp(-1/2 * (x - mu).T @ np.linalg.inv(Sigma) @ (x - mu))
-
-def get_posterior_probs(x, Sigmas, mus=None, weights=None):
-    """
-    Computes the posterior probabilities of each Gaussian distribution given x. 
-    """
-    n = x.shape[0]
-    if mus is None:
-        mus = np.zeros((Sigmas.shape[0], n))
-    if weights is None:
-        weights = np.ones(Sigmas.shape[0]) / Sigmas.shape[0]
-    probs = np.zeros(Sigmas.shape[0])
-    for i in range(Sigmas.shape[0]):
-        probs[i] = weights[i] * Gaussian_likelihood(x, Sigmas[i], mus[i])
-    return probs / np.sum(probs)
-
-# def get_Lt()
-
-def get_frob_change(X):
-    """
-    Computes frobenius norm of change in X and divides by number of rows
-    """
-    return np.sqrt(np.sum((X[1:] - X[:-1])**2)) / X.shape[0]
-
-def get_ar_format(X, l):
-    """
-    Returns AR(l) representation of X
-    """
-    T = X.shape[0]
-    n = X.shape[1]
-
-    # Initialize AR(l) representation
-    X_ar = np.zeros((T-l, n*l))
-
-    for i in range(l):
-        X_ar[:, i*n:(i+1)*n] = X[i:T-l+i]
-
-    y_ar = X[l:]
-        
-    return X_ar, y_ar
-
-
-def plot_ewma_log_likelihoods(predictors, start_date, end_date=None, T_half=63, labels=None, with_opt=False):
-
-    if end_date is None:
-        end_date = predictors[0].R.index[-1]
-    dates = pd.to_datetime(predictors[0].R.loc[start_date:end_date].index)
-
-    log_likes = []
-    for predictor in predictors:
-        log_likes.append(predictor.get_log_likelihoods(start_date, end_date))
-
-    ewma_log_likes = []
-
-    for log_like in log_likes:
-        ewma_log_likes.append(get_ewmas(log_like, T_half))
-
-
-    for i, ewma_log_like in enumerate(ewma_log_likes):
-        if i==0 and with_opt:
-            plt.plot(dates, ewma_log_like, c="k")
-        else:
-            plt.scatter(dates, ewma_log_like, s=2)
-    
-
-
-
-    # Place legend outside to right of plot
-    if labels is not None:
-        # Make legend dots bigger
-        plt.legend(bbox_to_anchor=(1, 1), loc='upper left', labels=labels, scatterpoints=1, markerscale=5);
-
-def plot_ecdf(datas, labels=None):
-    """Compute ECDF for a one-dimensional array of measurements."""
-
-    for i, data in enumerate(datas):
-        # Number of data points: n
-        n = len(data)
-
-        # x-data for the ECDF: x
-        x = np.sort(data)
-
-        # y-data for the ECDF: y
-        y = np.arange(1, n+1) / n
-
-        if labels:
-            plt.plot(x, y, label=labels[i])
-        else:
-            plt.plot(x, y)
-
-        # Plot 5th and 10th percentile as dashed line
-        # plt.plot(x, np.ones(n)*0.025, '--', color='gray', label='2.5th percentile')
-
-        # plt.plot(x, np.ones(n)*0.05, '--', color='gray', label='5th percentile')
-        # plt.plot(x, np.ones(n)*0.1, '--', color='gray', label='10th percentile')
-
-    # Put legend to right of plot
-    plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
-
-def get_metrics(log_likelihoods):
-    """
-    param log_likelihoods: list of log likelihoods
-
-    returns: metrics
-    """
-    avg = np.mean(log_likelihoods)
-    std = np.std(log_likelihoods)
-    lowest = np.min(log_likelihoods)
-
-    # 1st, 5th and 10th percentile
-    p1 = np.percentile(log_likelihoods, 1)
-    p5 = np.percentile(log_likelihoods, 5)
-    p10 = np.percentile(log_likelihoods, 10)
-
-    return np.round(avg,2), np.round(std,2), np.round(lowest,2), np.round(p1,2), np.round(p5,2), np.round(p10,2)
-
-def get_yearly_garch_params(R, update_freq=2):
-    """
-    returns a dict of "yearly" GARCH parameters for each asset,
-        strictly speaking updated every update_freq years
-    """
-    window_size = update_freq*250
-
-    # Create a list of years in the data
-    years = R.index.year.unique()
-
-    all_params = {}
-
-    for i, asset in enumerate(R.columns):
-        # Initialize an empty dict to store the results of the rolling window estimation
-        yearly_params = {}
-
-        # Loop over the years
-        for year in years[update_freq:]:
-            # Get the data for the two previous years
-            data_temp = R[R.index.year < year].values[:, i] 
-            am = arch_model(data_temp, vol='GARCH', p=1, q=1, dist='Normal', rescale=False)
-            res = am.fit(disp=False)
-            yearly_params[year] = res.params
-
-        for i in range(update_freq):
-            yearly_params[years[i]] = yearly_params[years[update_freq+1]]
-
-        all_params[asset] = yearly_params
-
-    return all_params
-
-
-def moving_average(X, n):
-    """
-    param R: pd.DataFrame of shape (T, n) where T is the number of time steps and n is the number of assets
-    param n: window size
-
-    returns the moving average of X with window size n
-    """
-    ret = np.cumsum(X, axis=0)
-    ma_part = (ret[n:] - ret[:-n]) / n
-    return np.vstack([ret[:n]/n, ma_part])
-
-
-def get_hi(X, sigmas):
-    """
-    return hi feature
-    """
-    return np.maximum((X - sigmas), 0)
-
-def get_lo(X, sigmas):
-    """
-    return lo feature
-    """
-    return np.maximum(-(X - sigmas), 0)
-
-def get_pos(X):
-    """
-    return positive part 
+def _regularize_correlation(R, r):
     """
+    param Rs: Txnxn numpy array of correlation matrices
+    param r: float, rank of low rank component 
 
-    return np.maximum(X, 0)
-
-def get_neg(X):
-    """
-    return negative part
-    """
-    return np.maximum(-X, 0)
-
-
-def get_features(R, val_end, n=8):
+    returns: low rank + diag approximation of R\
+        R_hat = sum_i^r lambda_i q_i q_i' + E, where E is diagonal,
+        defined so that R_hat has unit diagonal; lamda_i, q_i are eigenvalues
+        and eigenvectors of R (the r first, in descending order)
     """
-    feature engineers the data
-    """
-    X = R.values
-
-    ### Define features
-    sigmas = np.std(X[:val_end], axis=0).reshape(1,-1)
-    hi = get_hi(X, sigmas)
-    lo = get_lo(X, sigmas)
-    pos = get_pos(X)
-    neg = get_neg(X)
-
-    ma2 = moving_average(X, 2)
-    sigmas2 = np.std(ma2[:val_end], axis=0).reshape(1,-1)
-    hi2 = get_hi(ma2, sigmas2)
-    lo2 = get_lo(ma2, sigmas2)
-    pos2 = get_pos(ma2)
-    neg2 = get_neg(ma2)
-
-    ma4 = moving_average(X, 4)
-    sigmas4 = np.std(ma4[:val_end], axis=0).reshape(1,-1)
-    hi4 = get_hi(ma4, sigmas4)
-    lo4 = get_lo(ma4, sigmas4)
-    pos4 = get_pos(ma4)
-    neg4 = get_neg(ma4)
-
-    ma8 = moving_average(X, 8)
-    sigmas8 = np.std(ma8[:val_end], axis=0).reshape(1,-1)
-    hi8 = get_hi(ma8, sigmas8)
-    lo8 = get_lo(ma8, sigmas8)
-    pos8 = get_pos(ma8)
-    neg8 = get_neg(ma8)
+    eig_decomps = np.linalg.eigh(R)
+    Lamda = eig_decomps[0]
+    Q = eig_decomps[1]
 
-    ma16 = moving_average(X, 16)
-    sigmas16 = np.std(ma16[:val_end], axis=0).reshape(1,-1)
-    hi16 = get_hi(ma16, sigmas16)
-    lo16 = get_lo(ma16, sigmas16)
-    pos16 = get_pos(ma16)
-    neg16 = get_neg(ma16)
+    # Sort eigenvalues in descending order
+    Lamda = Lamda[:, ::-1]
+    Q = Q[:, :, ::-1]
 
-    ma32 = moving_average(X, 32)
-    sigmas32 = np.std(ma32[:val_end], axis=0).reshape(1,-1)
-    hi32 = get_hi(ma32, sigmas32)
-    lo32 = get_lo(ma32, sigmas32)
-    pos32 = get_pos(ma32)
-    neg32 = get_neg(ma32)
+    # Make Lamdas diagonal
+    Lamda = np.stack([np.diag(lamda) for lamda in Lamda])
 
+    # Get low rank component
+    Lamda_r = Lamda[:, :r, :r]
+    Q_r = Q[:, :, :r]
+    R_lo = Q_r @ Lamda_r @ Q_r.transpose(0, 2, 1)
 
-    if n == 32:
-        features = np.hstack([hi, lo, pos, neg, ma2, ma4, ma8, ma16, ma32, hi2, hi4, hi8, hi16, hi32, lo2, lo4, lo8, lo16, lo32,\
-            pos2, pos4, pos8, pos16, pos32, neg2, neg4, neg8, neg16, neg32])
-    elif n== 8:
-        features = np.hstack([hi, lo, pos, neg, ma2, ma4, ma8, hi2, hi4, hi8, lo2, lo4, lo8,\
-            pos2, pos4, pos8, neg2, neg4, neg8])
-    elif n== 16:
-        features = np.hstack([hi, lo, pos, neg, ma2, ma4, ma8, ma16, hi2, hi4, hi8, hi16, lo2, lo4, lo8, lo16,\
-            pos2, pos4, pos8, pos16, neg2, neg4, neg8, neg16])
-    if n==4:
-        features = np.hstack([hi, lo, pos, neg, ma2, ma4, hi2, hi4, lo2, lo4,\
-            pos2, pos4, neg2, neg4])
-    if n=="ma2":
-        return ma2
-
-
-    return pd.DataFrame(features, index=R.index, columns=[str(i) for i in range(features.shape[1])])
-
-def get_R(R_whitenened, Lt_invs):
-    """
-    param R_whitenened: numpy array of shape (T, n, 1) where T is the number of time steps and n is the number of assets
-        these are the realized returns over the T days
-    param Lt_invs: numpy array of shape (T, n, n) where T is the number of time steps and n is the number of assets
-        these are the inverse of the whitening matrices
+    # Get diagonal component 
+    D = np.stack([np.diag(np.diag(R[i, :, :]-R_lo[i, :, :])) for i in range(R.shape[0])])
     
-    returns: numpy array of shape (T, n) where T is the number of time steps and n is the number of assets
-    """
-    T = R_whitenened.shape[0]
-    n = R_whitenened.shape[1]
-    R = (Lt_invs @ R_whitenened).reshape(T, n)
-
-    return R
-
-
-def get_V_hats(vols):
-    """
-    param vols: numpy array of shape (T, n) where T is the number of time steps and n is the number of assets
-        these are the predicted volatilities over the T days
-
-    returns: numpy array of shape (T, n, n) where T is the number of time steps and n is the number of assets
-        these are the predicted diagonal volatility matrices over the T days
-    """
-    T = vols.shape[0]
-    n = vols.shape[1]
-    V_hats = np.zeros((T, n, n))
-    for t in range(T):
-        V_hats[t] = np.diag(vols[t])
-
-    return V_hats
-
-def cp_get_log_likelihood(r, Theta):
-    """
-    param R: array of shape (n,1) where n is the number of assets
-    param Theta: precision matrix of shape (n,n) where n is the number of assets
-
-    returns: log likelihood of R given Theta
-    """
-    return cp.log_det(Theta) - cp.quad_form(r, Theta) 
-
-
-def max_log_likelihood_const_L(prob, w, Lt_params, Lt_times_R_vec_params, Lt_hat, Lt_times_R_vec, prob_num, ignore_dpp=False):
-    """
-    param whiteners: array of shape (M, n, n) where M is the number of predictor candidates, and n is the number of assets
-        whiteners[i] = Li^T, where Li*Li^T=Sigma_i, the precission matrix of the i-th predictor
-    param R: numpy array of shape (T, n, 1) where T is the number of time steps and n is the number of assets
-        these are the realized returns over the T days
-
-    returns the weights that maximize the log likelihood of the data given M constant whiteners 
-    """
-    try: # TODO: just a quick fix for with_pooling=False case
-        if prob_num[0] % int(prob_num[1] / 10) == 0:
-            print(f"{prob_num[0]/prob_num[1]:.0%} done...", end=" ")
-    except:
-        pass
-
-    n_predictors = len(Lt_params)
-    for i in range(n_predictors):
-        Lt_params[i].value = Lt_hat[i]
-        Lt_times_R_vec_params[i].value = Lt_times_R_vec[i]
-    
-    try:
-        prob.solve(solver="MOSEK", ignore_dpp=ignore_dpp)
-    except Exception:
-        print("Solver failed...")
-        prob.solve(solver="MOSEK", verbose=True)
-    
-    assert prob.status == "optimal"
-
-    return w.value
-
-
-def max_log_likelihood_varying_L(prob, w, Lt_params, Lt_times_R_vec_params, Lt_hat, Lt_times_R_vec, prob_num, ignore_dpp=False):
-    """
-    param whiteners: array of shape (M, n, n) where M is the number of predictor candidates, and n is the number of assets
-        whiteners[i] = Li^T, where Li*Li^T=Sigma_i, the precission matrix of the i-th predictor
-    param R: numpy array of shape (T, n, 1) where T is the number of time steps and n is the number of assets
-        these are the realized returns over the T days
-
-    returns the weights that maximize the log likelihood of the data given M constant whiteners 
-    """
-    try: # TODO: just a quick fix for with_pooling=False case
-        if prob_num[0] % int(prob_num[1] / 10) == 0:
-            print(f"{prob_num[0]/prob_num[1]:.0%} done...", end=" ")
-    except:
-        pass
-
-    n_predictors = len(Lt_params)
-    for i in range(n_predictors):
-        Lt_params[i].value = Lt_hat[i]
-        Lt_times_R_vec_params[i].value = Lt_times_R_vec[i]
-    
-    try:
-        prob.solve(solver="MOSEK", ignore_dpp=ignore_dpp)
-    except:
-        print("Solver failed...")
-        prob.solve(solver="MOSEK", verbose=True)
-    
-    assert prob.status == "optimal"
-
-    return w.value
-
-
-
-
-
-
-    
-
-def max_log_likelihood(prob, w, prec_params, prec_at_cov_params, precisions, prec_at_covs, prob_num):
-    """
-    param precisions: numpy array of shape (T, M, n, n) where T is the number of time steps, M is the number of predictor candidates, and n is the number of assets
-    param R: numpy array of shape (T, n, 1) where T is the number of time steps and n is the number of assets
-        these are the realized returns over the T days
-    """
-    if prob_num[0] % int(prob_num[1] / 10) == 0:
-        print(f"{prob_num[0]/prob_num[1]:.0%} done...", end=" ")
-
-    n_predictors = len(precisions[0])
-    T = len(precisions)
-
-    # Solve problem once for speedup later
-    for t in range(T):
-        for i in range(n_predictors):
-            prec_params[t][i].value = precisions[t][i]
-            prec_at_cov_params[t][i].value = prec_at_covs[t][i]
-
-    try:
-        print("Solver failed...")
-        prob.solve(solver="MOSEK", verbose=False, ignore_dpp=True)
-    except:
-        w_temp = np.zeros(n_predictors)
-        w_temp[0] = 1
-        return w_temp
-    return w.value
-
-
-def max_log_likelihood_const_theta(prob, w, prec_params, prec_at_cov_params, precisions, prec_at_covs, prob_num): 
-    """
-    param precisions: array of shape (M, n, n) M is the number of predictor candidates, and n is the number of assets
-    param R: numpy array of shape (T, n) where T is the number of time steps and n is the number of assets
-        these are the realized returns over the T days
-
-    returns the weights that maximize the log likelihood of the data given M constant precision matrices
-        i.e., in comparison to max_log_likelihood, this function assumes that the precision matrices are constant over time t=1,2,...,T
-    """
-    if prob_num[0] % int(prob_num[1] / 10) == 0:
-        print(f"{prob_num[0]/prob_num[1]:.0%} done...", end=" ")
-
-    n_predictors = len(precisions)
-    for i in range(n_predictors):
-        Theta_temp = precisions[i]
-        prec_params[i].value = Theta_temp
-        prec_at_cov_params[i].value = prec_at_covs[i]
-
-    prob.solve(solver="MOSEK", verbose=False)
-    return w.value
-
-def get_overtriangular(M):
-    """
-    returns the upper triangular part of a matrix M (including the diagonal)
-    """
-    return M[np.triu_indices(M.shape[0], k=0)].reshape(1,-1)
-
-def get_overtriangular_stack(Ms):
-    """
-    returns the upper triangular part of a list of matrices Ms (including the diagonal)\
-        upper diagonals are returned as rows in a matrix
-    """
-    return np.vstack([get_overtriangular(M) for M in Ms])
-
-def get_vectorform(R):
-    """
-    returns the form of R that is used to compute L^T * R elementwise
-    """
-    n = R.shape[1]
-    R_new = R.copy()
-    for i in range(1, n):
-        R_new = np.hstack((R_new, R[:,i:]))
-    return R_new
-
-def max_log_likelihood_varying_L2(prob, w, P_param, onest_A_param, P, onest_A, prob_num, ignore_dpp=False):
-    """
-    param whiteners: array of shape (M, n, n) where M is the number of predictor candidates, and n is the number of assets
-        whiteners[i] = Li^T, where Li*Li^T=Sigma_i, the precission matrix of the i-th predictor
-    param R: numpy array of shape (T, n, 1) where T is the number of time steps and n is the number of assets
-        these are the realized returns over the T days
-
-    returns the weights that maximize the log likelihood of the data given M constant whiteners 
-    """
-    P_param.value = P 
-    onest_A_param.value = onest_A 
-
-    try: # TODO: just a quick fix for with_pooling=False case
-        if prob_num[0] % int(prob_num[1] / 10) == 0:
-            print(f"{prob_num[0]/prob_num[1]:.0%} done...", end=" ")
-    except:
-        pass
-
-    try:
-        prob.solve(solver="ECOS", ignore_dpp=ignore_dpp)
-    except:
-        print("Solver failed...")
-        prob.solve(solver="ECOS", verbose=True)
-    
-    assert prob.status == "optimal"
-
-    return w.value
-
-def get_opt_weights_new(model, likelihood_window=10, w_init=None, const_theta=None, const_L=None, turnover_cons=None):
-    """
-    param model: Covariance predictor model
-    param likelihood_window: number of past days to use to compute the log likelihood
-    param w_init: initial weights to use for the convex optimization problem
-    param const_theta: whether the precision matrices are constant over time or not
-    """
-    # print("Turnover limit: ",turnover_cons)
-    Theta_hats_for_all_t = []
-    prec_at_covs_for_all_t = []
-    R_for_all_t = []
-    A_for_all_t = []
-    P_for_all_t = []
-
-    Lt_hats_for_all_t = []
-    R_vec_for_all_t = []
-    Lt_times_R_vec_for_all_t = []
-    n_predictors = len(model.predictors)
-    n = model.n
-    T = model.T
-
-    # Parametrize problem for weighted average of precision matrices
-    if const_L is None:
-        assert const_theta is not None
-        if const_theta == "on":
-            w = cp.Variable(n_predictors)
-            precision_params = [cp.Parameter((n, n), PSD=True) for _ in range(n_predictors)]
-            prec_at_cov_params = [cp.Parameter((n, n)) for _ in range(n_predictors)]
-
-            Theta_hat = cp.sum([w[i]*precision_params[i] for i in range(n_predictors)])
-            trace_arg = cp.sum([w[i]*prec_at_cov_params[i] for i in range(n_predictors)])
-            obj = cp.Maximize(cp.log_det(Theta_hat) - cp.trace(trace_arg))
-
-        elif const_theta == "off":
-
-            w = cp.Variable(n_predictors)
-            precision_params = [[cp.Parameter((n, n), PSD=True) for _ in range(n_predictors)] for _ in range(likelihood_window)]
-            prec_at_cov_params = [[cp.Parameter((n, n)) for _ in range(n_predictors)] for _ in range(likelihood_window)]
-
-            Theta_hat = [cp.sum([w[i]*precision_params[t][i] for i in range(n_predictors)]) for t in range(likelihood_window)]
-            trace_arg = [cp.sum([w[i]*prec_at_cov_params[t][i] for i in range(n_predictors)]) for t in range(likelihood_window)]
-
-            log_likelihood = cp.sum([cp.log_det(Theta_hat[t]) - cp.trace(trace_arg[t]) for t in range(likelihood_window)])
-            obj = cp.Maximize(cp.sum(log_likelihood))
-
-        cons = [cp.sum(w) == 1, w >= 0]
-        prob = cp.Problem(obj, cons)
-        # print(prob.is_dcp(dpp=True))
-
-        # prob = cp.Problem(obj, [cp.sum(w) == 1, w >= 0])
-    else:
-        assert const_theta is None
-        assert const_L is not None
-
-        if const_L == "on":
-            w = cp.Variable(n_predictors)
-
-            # Each Lt has shape number of overtriangular elements in L^T
-            n_overtriangular = int(n*(n+1)/2)
-            Lt_params = [cp.Parameter((1,n_overtriangular)) for _ in range(n_predictors)]
-            Lt_hat = cp.sum([w[i]*Lt_params[i] for i in range(n_predictors)])
-
-            # Compute the norm part of the objective
-            Lt_times_R_vec_params = [cp.Parameter((likelihood_window, n_overtriangular)) for _ in range(n_predictors)] # Lt_m*R_t elementwise for flattened Lt overtri.
-            norm_arg = cp.sum([w[i]*Lt_times_R_vec_params[i] for i in range(n_predictors)])
-            sums = cp.hstack([cp.sum(norm_arg[:,i*n- int(i*(i-1)/2):(i+1)*n-int(i*(i+1)/2)], axis=1) for i in range(n)]) # TODO: I think this is right...
-
-
-            diag_indices = [i*n- int(i*(i-1)/2) for i in range(n)]
-
-        elif const_L == "off":
-            ########### NEW APPROACH
-            w = cp.Variable(n_predictors)
-            P_param = cp.Parameter((n_predictors,n_predictors), PSD=True)
-            A_param = cp.Parameter((n*likelihood_window,n_predictors))
-
-            obj = cp.Maximize(cp.sum(cp.log(A_param@w)) - 0.5 * cp.quad_form(w, P_param))
-
-
-
-        cons = [cp.sum(w) == 1, w >= 0]
-
-        if turnover_cons is not None:
-            w_old = cp.Parameter(n_predictors)
-            # w_old.value = np.zeros(n_predictors); w_old.value[-1] = 1 # initialize to last predictor
-            w_old.value = np.ones(n_predictors) / n_predictors
-            cons += [cp.norm(w-w_old, 2) <= turnover_cons] 
-        else:
-            w_old = None
-        prob = cp.Problem(obj, cons)
-
-
-    # Define parameter values for each time step
-    # TODO: I changed from t-1 to t (this should still be causal)
-    for t in range(likelihood_window, T):
-        R_t = model.R.iloc[t-(likelihood_window):t, :].values
-        R_for_all_t.append(R_t)
-        if const_theta == "on":
-            Theta_hats_t = np.array([[*predictor.Theta_hats.values()][t] for predictor in model.predictors.values()]) # get CURRENT day's precision matrices (at time t!)
-            sample_covs_t = np.sum(R_t[i].reshape(-1,1)@R_t[i].reshape(1,-1) for i in range(likelihood_window)) / likelihood_window # Don't include t!
-            prec_at_covs_t = np.array([Theta_hats_t[i] @ sample_covs_t for i in range(n_predictors)])
-        elif const_theta == "off":
-            set_of_Theta_hats_t = []
-            set_of_prec_at_covs_t = []
-            for predictor in model.predictors.values():
-                # Precision matrices
-                Theta_hats_temp = [*predictor.Theta_hats.values()][t-(likelihood_window+1):t-1]
-                set_of_Theta_hats_t.append(Theta_hats_temp)
-
-                # (Precision @ sample covariance matrices) (just one sample per time step...)
-                prec_at_covs_temp = np.array([Theta_hats_temp[i] @ R_t[i].reshape(-1,1)@R_t[i].reshape(1,-1) for i in range(likelihood_window)])
-                set_of_prec_at_covs_t.append(prec_at_covs_temp)
-            Theta_hats_t = np.reshape(np.array(set_of_Theta_hats_t), (likelihood_window, n_predictors, n, n))
-            prec_at_covs_t = np.reshape(np.array(set_of_prec_at_covs_t), (likelihood_window, n_predictors, n, n))
-        elif const_L == "on":
-            Lt_hats_t = np.array([get_overtriangular([*predictor.Lt_hats.values()][t]) for predictor in model.predictors.values()]) # get CURRENT day's Cholesky matrices (at time t!)
-            R_vec_t = get_vectorform(R_t)
-            Lt_times_R_vec_t = np.array([R_vec_t * Lt_hats_t[i] for i in range(n_predictors)])
-
-        elif const_L == "off":
-            # TODO: I changed from t-1 to t (this should still be causal)
-            R_t = model.R.iloc[t-(likelihood_window):t, :].values
-
-            Lt_hats_t = []
-            R_vec_t = get_vectorform(R_t)
-
-            A_t = np.zeros((n*likelihood_window, n_predictors))
-            all_B_t = np.zeros((likelihood_window, n_predictors, n))
-            for i, predictor in enumerate(model.predictors.values()):
-                # Cholesky matrices
-                Lt_hats_temp = get_overtriangular_stack([*predictor.Lt_hats.values()][t-(likelihood_window):t])
-                Lt_hats_t.append(Lt_hats_temp)
-
-                ### NEW APPROACH
-                # Compute A_t and P_t
-                Lt_hats_temp = np.array([*predictor.Lt_hats.values()][t-(likelihood_window):t])
-
-                A_t[:,i] = np.array([np.diag(Lt_hats_temp[j]) for j in\
-                     range(likelihood_window)]).reshape(-1,)
-
-
-                for j in range(likelihood_window):
-                    r_j = R_t[j].reshape(-1,1)
-                    Lt_j = Lt_hats_temp[j]
-                    all_B_t[j,i,:] = r_j.T @ Lt_j.T
-                
-            P_t = np.zeros((n_predictors, n_predictors))
-            for j in range(likelihood_window):
-                B_j = all_B_t[j]
-                P_t += B_j @ B_j.T
-            # ones = np.ones((n*likelihood_window,1))
-            # onest_A_t = ones.T @ A_t
-
-
-            Lt_times_R_vec_t = np.array([R_vec_t * Lt_hats_t[i] for i in range(n_predictors)])
-        
-
-        if const_L == "on" or const_L == "off":
-            Lt_hats_for_all_t.append(Lt_hats_t)
-            R_vec_for_all_t.append(R_vec_t)
-            Lt_times_R_vec_for_all_t.append(Lt_times_R_vec_t)
-
-            P_for_all_t.append(P_t)
-            A_for_all_t.append(A_t)
-
-        else:
-            Theta_hats_for_all_t.append(Theta_hats_t)
-            prec_at_covs_for_all_t.append(prec_at_covs_t)
-    
-    # Solve problem for each t in parallel
-    if const_L=="on":
-        print("Solving convex problem for constant L...")
-        opt_model = max_log_likelihood_const_L
-    elif const_L=="off":
-        print("Solving convex problem for time-varying L...")
-        opt_model = max_log_likelihood_varying_L
-        opt_model = max_log_likelihood_varying_L2
-
-    elif const_theta=="on":
-        print("Solving convex problem for constant theta...")
-        opt_model = max_log_likelihood_const_theta
-    elif const_theta=="off":
-        print("Solving convex problem for time-varying theta...")
-        opt_model = max_log_likelihood
-    
-
-    if turnover_cons is None: # No turnover constraint, so we can problems in parallel
-        with_pooling = False # TODO: FIX
-    else:
-        with_pooling = False
-    if with_pooling:
-        # Solve in parallel
-        with ProcessPoolExecutor() as executor: # TODO: This can probably be removed... Using multiprocessing.Pool instead
-        # Use tqdm to display a progress bar
-            if const_L == "on" or const_L == "off":
-                # ws = list(tqdm(executor.map(opt_model, Lt_hats_for_all_t, R_for_all_t), total=len(Lt_hats_for_all_t)))
-                # Solve problem once for speedup later
-                for i in range(n_predictors):
-                    Lt_params[i].value = Lt_hats_for_all_t[0][i]
-                    Lt_times_R_vec_params[i].value = Lt_times_R_vec_for_all_t[0][i]
-                prob.solve(ignore_dpp=model.ignore_dpp)
-                
-
-
-                Lt_param_list = [Lt_params for _ in range(len(R_vec_for_all_t))]
-                Lt_times_R_vec_param_list = [Lt_times_R_vec_params for _ in range(len(R_vec_for_all_t))]
-                prob_list = [prob for _ in range(len(R_vec_for_all_t))]
-                w_list = [w for _ in range(len(R_vec_for_all_t))]
-                ignore_dpp_list = [model.ignore_dpp for _ in range(len(R_vec_for_all_t))]
-
-                # Keep track on how many problems left to solve
-                prob_nums = [(i, len(R_for_all_t)) for i in range(len(R_for_all_t))]
-
-                # Solve all problems in parallel
-                pool = mp.Pool()
-                # ws = pool.starmap(opt_model, zip(prob_list, w_list, Lt_param_list, Lt_times_R_vec_param_list, \
-                #             Lt_hats_for_all_t, Lt_times_R_vec_for_all_t, prob_nums, ignore_dpp_list))
-                
-                ws = pool.starmap(opt_model, zip(prob, w, P_param, A_param,\
-                     P_for_all_t[t], A_for_all_t[t], t, model.ignore_dpp))
-                pool.close()
-                pool.join()
-
-
-
-
-            elif const_theta == "on":
-                # Solve problem once for speedup later
-                for i in range(n_predictors):
-                    Theta_temp = Theta_hats_for_all_t[0][i]
-                    precision_params[i].value = Theta_temp
-                    prec_at_cov_params[i].value = prec_at_covs_for_all_t[0][i]
-                prob.solve()
-
-                prec_param_list = [precision_params for _ in range(len(R_for_all_t))]
-                prec_at_cov_param_list = [prec_at_cov_params for _ in range(len(R_for_all_t))]
-                prob_list = [prob for _ in range(len(R_for_all_t))]
-                w_list = [w for _ in range(len(R_for_all_t))]
-
-                # Keep track on how many problems left to solve
-                prob_nums = [(i, len(R_for_all_t)) for i in range(len(R_for_all_t))]
-
-                pool = mp.Pool()
-                ws = pool.starmap(opt_model, zip(prob_list, w_list, prec_param_list, prec_at_cov_param_list, \
-                            Theta_hats_for_all_t, prec_at_covs_for_all_t, prob_nums))
-                pool.close()
-                pool.join()
-            elif const_theta == "off":
-                # Solve problem once for speedup later
-                for t in range(likelihood_window):
-                    for i in range(n_predictors):
-                        precision_params[t][i].value = Theta_hats_for_all_t[0][t][i]
-                        prec_at_cov_params[t][i].value = prec_at_covs_for_all_t[0][t][i]
-                prob.solve(ignore_dpp=True)
-
-                prec_param_list = [precision_params for _ in range(len(R_for_all_t))]
-                prec_at_cov_param_list = [prec_at_cov_params for _ in range(len(R_for_all_t))]
-                prob_list = [prob for _ in range(len(R_for_all_t))]
-                w_list = [w for _ in range(len(R_for_all_t))]
-
-                # Keep track on how many problems left to solve
-                prob_nums = [(i, len(R_for_all_t)) for i in range(len(R_for_all_t))]
-
-                pool = mp.Pool()
-                ws = pool.starmap(opt_model, zip(prob_list, w_list, prec_param_list, prec_at_cov_param_list, \
-                            Theta_hats_for_all_t, prec_at_covs_for_all_t, prob_nums))
-                pool.close()
-                pool.join()
-    else:
-        # Solve sequentially
-        ws = []
-        for t in trange(len(Lt_hats_for_all_t)):
-            if const_L == "off":
-
-
-                # w_t = opt_model(prob, w, Lt_params, Lt_times_R_vec_params,
-                # Lt_hats_for_all_t[t], Lt_times_R_vec_for_all_t[t], t,
-                # model.ignore_dpp)
-
-                w_t = opt_model(prob, w, P_param, A_param,\
-                     P_for_all_t[t], A_for_all_t[t], t, model.ignore_dpp)
-
-
-                ws.append(w_t.copy())
-                if w_old is not None:
-                    w_old.value = w_t.copy()
-
-            # if const_L == "on" or const_L == "off":
-            #     w = opt_model(Lt_hats_for_all_t[t], R_for_all_t[t])
-            # else:
-            #     w = opt_model(Theta_hats_for_all_t[t], R_for_all_t[t])
-        print("Finishing...")
-
-    # TODO: I changed from likelihood_window+1 to likelihood_window
-    ws = pd.DataFrame(ws, index = model.R.index[likelihood_window:])
-    return ws
-
-
-def get_opt_weights_old(model, t, prob, w, theta_params, likelihood_window=10, w_init=None, const_theta=True):
-    """
-    Choose the weights to combine the inverse covariance matrices by solving the following convex problem:  what (constant) weights would have maximized the log likelihood on the last 'likelihood_window' days? This is a convex problem, so we can solve it with cvxpy.
-
-    param model: Covariance predictor model
-    param t: time step (pandas date-time object) for which we want to compute the optimal weights
-    param prob: cvxpy problem object
-    param w: cvxpy variable object
-    param theta_params: array of cvxpy parameters for the precision matrix
-    param likelihood_window: number of past days to use to compute the log likelihood
-    """
-    n = model.n
-    n_predictors = len(model.predictors)
-
-    # t = np.where(model.R.index == t)[0][0] # get the index of the time step t (t is originally a pandas date-time object)
-    R_temp = model.R.iloc[t-(likelihood_window+1):t-1, :].values # Don't include t; avoid look-ahead bias 
-    
-    Theta_hats_t = [[*predictor.Theta_hats.values()][t] for predictor in model.predictors.values()] # get CURRENT day's precision matrices (at time t!)
-    if const_theta:
-        for i in range(n_predictors):
-            theta_params[i].value = Theta_hats_t[i] # set the value of the cvxpy parameters to the current precision matrices
-        w_opt = max_log_likelihood_const_theta(prob, w, theta_params, R_temp)
-    else:
-        set_of_Theta_hats = []
-        for predictor in model.predictors.values():
-            Theta_hats_temp = [*predictor.Theta_hats.values()][t-(likelihood_window+1):t-1]
-            set_of_Theta_hats.append(Theta_hats_temp)
-        precisions = np.reshape(np.array(set_of_Theta_hats), (likelihood_window, n_predictors, n, n))
-        w_opt = max_log_likelihood(precisions, R_temp)
-
-
-    Theta_hat_opt = np.sum(w_opt[i]*Theta_hats_t[i] for i in range(len(w_opt)))
-
-    return w_opt, Theta_hat_opt
-
-    ##### Can probably remove this code below #####
-    # for predictor in model.predictors.values():
-    #     Theta_hats_temp = [*predictor.Theta_hats.values()][t-(likelihood_window+1):t-1] # Don't include t; avoid look-ahead bias
-    #     set_of_Theta_hats.append(Theta_hats_temp) 
-
-    # precisions = np.reshape(np.array(set_of_Theta_hats), (likelihood_window, n_predictors, n, n))
-
-    # return max_log_likelihood(precisions, R_temp)
-
-    # set_of_Theta_hats = np.array(set_of_Theta_hats).reshape(likelihood_window, n_predictors, n**2) # batch_size, n_predictors, n, n
-
-    # weighted_Theta_hats = []
-    # for i in range(likelihood_window):
-    #     Theta_vec = cp.sum(cp.multiply(w, set_of_Theta_hats[i]), axis=0)
-    #     weighted_Theta_hats.append(cp.reshape(Theta_vec, (n,n)))
-
-
-    # # Compute the log likelihood (ignore the constant terms)
-    # log_likelihood = cp.sum([cp_get_log_likelihood(R_temp[i], weighted_Theta_hats[i]) for i in range(likelihood_window)])
-
-    # obj = cp.Maximize(log_likelihood)
-    # cons = [cp.sum(w)==1, w>=0]
-    # if w_init is not None:
-    #     const += [cp.norm(w-w_init, 2) <= 0.1]
-    # prob = cp.Problem(obj, cons)
-
-    # prob.solve(solver="MOSEK")
-    # w_opt = w.value
-
-    # theta = np.array([w_opt[i]*set_of_Theta_hats[-1][i].reshape(n,n) for i in range(n_predictors)]).sum(axis=0)
-
-    # return w_opt, theta
-
-
-
-
-def get_realized_covs(R):
-    """
-    param R: numpy array where rows are vector of asset returns for t=0,1,...
-        R has shape (T, n) where T is the number of days and n is the number of assets
-
-    returns: (numpy array) list of r_t*r_t' (matrix multiplication) for all days, i.e,
-        "daily realized covariances"
-    """
-    T = R.shape[0]
-    n = R.shape[1]
-    R = R.reshape(T,n,1)
-
-    return R @ R.transpose(0,2,1)
-    
-
-def get_realized_vars(R):
-    """
-    param R: numpy array where rows are vector of asset returns for t=0,1,...
-        R has shape (T, n) where T is the number of days and n is the number of assets
-
-    returns: (numpy array) list of diag(r_t^2) for all days, i.e,\
-        "daily realized variances"
-    """
-
-
-    variances = []
-    
-    for t in range(R.shape[0]):
-        r_t = R[t, :].reshape(-1,)
-        variances.append(np.diag(r_t**2))
-    return np.array(variances)
-
-def from_cov_to_corr(Sigma):
-    """
-    returns correlation matrix R corresponding to covariance matrix Sigma
-    """
-    V = np.sqrt(np.diag(Sigma))
-    outer_V = np.outer(V, V)
-    corr = Sigma / outer_V
-    return corr
-
-def get_realized_sizes(R):
-    """
-    param R: numpy array where rows are vector of asset returns for t=0,1,...
-        R has shape (T, n) where T is the number of days and n is the number of assets
-
-        returns: (numpy array) list of r_t^Tr_t for all days (t), i.e,
-            "daily realized sizes"
-    """
-    sizes = []
-    for t in range(R.shape[0]):
-        r_t = R[t, :].reshape(-1,1)
-        sizes.append(r_t.T @ r_t)
-    return np.array(sizes)
-
-def get_next_ewma(EWMA, y_last, t, beta):
-    """
-    param EWMA: EWMA at time t-1
-    param y_last: observation at time t-1
-    param t: current time step
-    param beta: EWMA exponential forgetting parameter
-
-    returns: EWMA estimate at time t (note that this does not depend on y_t)
-    """
-
-    old_weight = (beta-beta**t)/(1-beta**t)
-    new_weight = (1-beta) / (1-beta**t)
-
-    return old_weight*EWMA + new_weight*y_last
-
-def get_ewmas(y, T_half):
-    """
-    y: array with measurements for times t=1,2,...,T=len(y)
-    T_half: EWMA half life
-
-    returns: list of EWMAs for times t=2,3,...,T+1 = len(y)
-
-
-    Note: We define EWMA_t as a function of the 
-    observations up to time t-1. This means that
-    y = [y_1,y_2,...,y_T] (for some T), while
-    EWMA = [EWMA_2, EWMA_3, ..., EWMA_{T+1}]
-    This way we don't get a "look-ahead bias" in the EWMA
-    """
-
-    beta = np.exp(-np.log(2)/T_half)
-    EWMA_t = 0
-    EWMAs = []
-    for t in range(1,y.shape[0]+1): # First EWMA is for t=2 
-        y_last = y[t-1] # Note zero-indexing
-        EWMA_t = get_next_ewma(EWMA_t, y_last, t, beta)
-        EWMAs.append(EWMA_t)
-    return np.array(EWMAs)
-
-def get_r_tildes(R, Ws):
-    """
-    param Ws: array of whitening matrices for t=1,2,..., (i.e. L^t, where LL^T=Sigma^-1)
-    param R: array of returns to whiten for t=1,2,..., 
-
-    returns numpy array with r_tilde_hats as rows
-    """
-    T = R.shape[0]
-    n = R.shape[1]
-    R = R.reshape(T,n,1)
-    return Ws @ R
-
-def get_cholesky(Sigma_hats):
-    """
-    returns: Cholesky (transpose) decomposition of Sigma_hat^-1 for each Sigma_hat in Sigma_hats, i.e.,
-        LL^T = Sigma_hat^-1;
-        Note: returns L^T
-    """
-    Lts = []
-    I = np.eye(Sigma_hats[0].shape[1])
-    for Sigma_hat in Sigma_hats:
-        Sigma_hat_inv = np.linalg.solve(Sigma_hat, I)
-        L = np.linalg.cholesky(Sigma_hat_inv)
-        Lts.append(L.T)
-    return np.array(Lts)
-
-####### I think the folloiwng functions are not used anymore, but let's keep them for now ########
-
-def get_log_likelihood(x, Sigma, mu=None):
-    """
-    param x: numpy array of shape (n,1)
-    param Sigma: numpy array of shape (n,n)
-    param mu: numpy array of shape (n,1)
-        if None, mu is set to zero vector
-
-    returns: log-likelihood of x under multivariate normal distribution
-    """
-    x = x.reshape(-1,1)
-    n = Sigma.shape[0]
-    if mu is None:
-        mu = np.zeros((n,1))
-    if len(Sigma) == 1:
-        det = Sigma
-        Sigma_inv = 1 / Sigma
-    else:
-        det = np.linalg.det(Sigma)
-        Sigma_inv = np.linalg.inv(Sigma)
-
-    return float(-n/2*np.log(2*np.pi) - 1/2*np.log(det) -1/2*(x-mu).T @ Sigma_inv@(x-mu))
-
-
-
-def get_avg_likelihood(R, Sigma_hats):
-    """
-    returns: (averaged) log-likelihood of observed returns R, under the Gaussian distribution
-        with mean zero and covariances in Sigma_hats
-
-    param R: rows are n-dimensinal return vectors for times t=1,...,T
-    param Sigma_hats: array-like vector of corresponding covariance matrices
-    """
-    daily_likelihoods = get_daily_likelihood(R, Sigma_hats)
-    
-    return np.mean(daily_likelihoods)
-
-
-def get_daily_likelihood(R, Sigma_hats, in_parallel=False):
-    """
-    returns: log-likelihood of observed returns R, under the Gaussian distribution
-        with mean zero and covariances in Sigma_hats
-    """
-    # n assets
-    n = R.shape[1]
-    mu = np.zeros((n,1))
-
-    log_likelihoods = []
-
-    if in_parallel:
-        # Compute log-likelihood for each day in parallel
-        pool = mp.Pool()
-        log_likelihoods = pool.starmap(get_log_likelihood, zip(R, Sigma_hats))
-        pool.close()
-        pool.join()
-
-        return np.array(log_likelihoods)
-
-    else:
-        # Compute log-likelihood for each day sequentially
-        for t in range(R.shape[0]):
-            r_t = R[t,:].reshape(-1,1)
-            Sigma_hat_t = Sigma_hats[t]
-            log_likelihoods.append(get_log_likelihood(r_t, Sigma_hat_t, mu))
-
-        return np.array(log_likelihoods)
-        
\ No newline at end of file
+    # Create low rank approximation
+    return R_lo + D
\ No newline at end of file
diff --git a/cvx/covariance/utils_old.py b/cvx/covariance/utils_old.py
new file mode 100644
index 00000000..c12e6bbe
--- /dev/null
+++ b/cvx/covariance/utils_old.py
@@ -0,0 +1,1072 @@
+import numpy as np
+import multiprocessing as mp
+import cvxpy as cp
+from tqdm import trange
+from concurrent.futures import ProcessPoolExecutor
+import pandas as pd
+from arch import arch_model
+from matplotlib import pyplot as plt
+
+
+
+def from_row_to_covariance(row, n):
+    """
+    Convert upper diagonal part of covariance matrix to a covariance matrix
+    """
+    Sigma = np.zeros((n,n))
+
+    # set upper triangular part
+    upper_mask = np.triu(np.ones((n,n)), k=0).astype(bool)
+    Sigma[upper_mask] = row
+
+    # set lower triangular part
+    lower_mask = np.tril(np.ones((n,n)), k=0).astype(bool)
+    Sigma[lower_mask] = Sigma.T[lower_mask]
+    return Sigma
+
+def from_row_matrix_to_covariance(M, n):
+    """
+    Convert Tx(n(n+1)/2) matrix of upper diagonal parts of covariance matrices to a Txnxn matrix of covariance matrices
+    """
+    Sigmas = []
+    T = M.shape[0]
+    for t in range(T):
+        Sigmas.append(from_row_to_covariance(M[t], n))
+    return np.array(Sigmas)
+
+def get_turnover(ws):
+        turnovers = []
+        for t in range(1,len(ws)):
+            w_tm = ws[t-1]
+            w_t = ws[t]
+            turnovers.append(np.linalg.norm(w_tm-w_t, ord=1))
+        return np.mean(turnovers)
+
+
+def Gaussian_likelihood(x, Sigma, mu=None):
+    """
+    Computes the Gaussian likelihood of x given mu and Sigma. 
+    """
+    if mu is None:
+        mu = np.zeros(x.shape[0])
+    n = x.shape[0]
+    return (1 / ((2 * np.pi)**(n/2) * np.linalg.det(Sigma)**(1/2))) * np.exp(-1/2 * (x - mu).T @ np.linalg.inv(Sigma) @ (x - mu))
+
+def get_posterior_probs(x, Sigmas, mus=None, weights=None):
+    """
+    Computes the posterior probabilities of each Gaussian distribution given x. 
+    """
+    n = x.shape[0]
+    if mus is None:
+        mus = np.zeros((Sigmas.shape[0], n))
+    if weights is None:
+        weights = np.ones(Sigmas.shape[0]) / Sigmas.shape[0]
+    probs = np.zeros(Sigmas.shape[0])
+    for i in range(Sigmas.shape[0]):
+        probs[i] = weights[i] * Gaussian_likelihood(x, Sigmas[i], mus[i])
+    return probs / np.sum(probs)
+
+# def get_Lt()
+
+def get_frob_change(X):
+    """
+    Computes frobenius norm of change in X and divides by number of rows
+    """
+    return np.sqrt(np.sum((X[1:] - X[:-1])**2)) / X.shape[0]
+
+def get_ar_format(X, l):
+    """
+    Returns AR(l) representation of X
+    """
+    T = X.shape[0]
+    n = X.shape[1]
+
+    # Initialize AR(l) representation
+    X_ar = np.zeros((T-l, n*l))
+
+    for i in range(l):
+        X_ar[:, i*n:(i+1)*n] = X[i:T-l+i]
+
+    y_ar = X[l:]
+        
+    return X_ar, y_ar
+
+
+def plot_ewma_log_likelihoods(predictors, start_date, end_date=None, T_half=63, labels=None, with_opt=False):
+
+    if end_date is None:
+        end_date = predictors[0].R.index[-1]
+    dates = pd.to_datetime(predictors[0].R.loc[start_date:end_date].index)
+
+    log_likes = []
+    for predictor in predictors:
+        log_likes.append(predictor.get_log_likelihoods(start_date, end_date))
+
+    ewma_log_likes = []
+
+    for log_like in log_likes:
+        ewma_log_likes.append(get_ewmas(log_like, T_half))
+
+
+    for i, ewma_log_like in enumerate(ewma_log_likes):
+        if i==0 and with_opt:
+            plt.plot(dates, ewma_log_like, c="k")
+        else:
+            plt.scatter(dates, ewma_log_like, s=2)
+    
+
+
+
+    # Place legend outside to right of plot
+    if labels is not None:
+        # Make legend dots bigger
+        plt.legend(bbox_to_anchor=(1, 1), loc='upper left', labels=labels, scatterpoints=1, markerscale=5);
+
+def plot_ecdf(datas, labels=None):
+    """Compute ECDF for a one-dimensional array of measurements."""
+
+    for i, data in enumerate(datas):
+        # Number of data points: n
+        n = len(data)
+
+        # x-data for the ECDF: x
+        x = np.sort(data)
+
+        # y-data for the ECDF: y
+        y = np.arange(1, n+1) / n
+
+        if labels:
+            plt.plot(x, y, label=labels[i])
+        else:
+            plt.plot(x, y)
+
+        # Plot 5th and 10th percentile as dashed line
+        # plt.plot(x, np.ones(n)*0.025, '--', color='gray', label='2.5th percentile')
+
+        # plt.plot(x, np.ones(n)*0.05, '--', color='gray', label='5th percentile')
+        # plt.plot(x, np.ones(n)*0.1, '--', color='gray', label='10th percentile')
+
+    # Put legend to right of plot
+    plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
+
+def get_metrics(log_likelihoods):
+    """
+    param log_likelihoods: list of log likelihoods
+
+    returns: metrics
+    """
+    avg = np.mean(log_likelihoods)
+    std = np.std(log_likelihoods)
+    lowest = np.min(log_likelihoods)
+
+    # 1st, 5th and 10th percentile
+    p1 = np.percentile(log_likelihoods, 1)
+    p5 = np.percentile(log_likelihoods, 5)
+    p10 = np.percentile(log_likelihoods, 10)
+
+    return np.round(avg,2), np.round(std,2), np.round(lowest,2), np.round(p1,2), np.round(p5,2), np.round(p10,2)
+
+def get_yearly_garch_params(R, update_freq=2):
+    """
+    returns a dict of "yearly" GARCH parameters for each asset,
+        strictly speaking updated every update_freq years
+    """
+    window_size = update_freq*250
+
+    # Create a list of years in the data
+    years = R.index.year.unique()
+
+    all_params = {}
+
+    for i, asset in enumerate(R.columns):
+        # Initialize an empty dict to store the results of the rolling window estimation
+        yearly_params = {}
+
+        # Loop over the years
+        for year in years[update_freq:]:
+            # Get the data for the two previous years
+            data_temp = R[R.index.year < year].values[:, i] 
+            am = arch_model(data_temp, vol='GARCH', p=1, q=1, dist='Normal', rescale=False)
+            res = am.fit(disp=False)
+            yearly_params[year] = res.params
+
+        for i in range(update_freq):
+            yearly_params[years[i]] = yearly_params[years[update_freq+1]]
+
+        all_params[asset] = yearly_params
+
+    return all_params
+
+
+def moving_average(X, n):
+    """
+    param R: pd.DataFrame of shape (T, n) where T is the number of time steps and n is the number of assets
+    param n: window size
+
+    returns the moving average of X with window size n
+    """
+    ret = np.cumsum(X, axis=0)
+    ma_part = (ret[n:] - ret[:-n]) / n
+    return np.vstack([ret[:n]/n, ma_part])
+
+
+def get_hi(X, sigmas):
+    """
+    return hi feature
+    """
+    return np.maximum((X - sigmas), 0)
+
+def get_lo(X, sigmas):
+    """
+    return lo feature
+    """
+    return np.maximum(-(X - sigmas), 0)
+
+def get_pos(X):
+    """
+    return positive part 
+    """
+
+    return np.maximum(X, 0)
+
+def get_neg(X):
+    """
+    return negative part
+    """
+    return np.maximum(-X, 0)
+
+
+def get_features(R, val_end, n=8):
+    """
+    feature engineers the data
+    """
+    X = R.values
+
+    ### Define features
+    sigmas = np.std(X[:val_end], axis=0).reshape(1,-1)
+    hi = get_hi(X, sigmas)
+    lo = get_lo(X, sigmas)
+    pos = get_pos(X)
+    neg = get_neg(X)
+
+    ma2 = moving_average(X, 2)
+    sigmas2 = np.std(ma2[:val_end], axis=0).reshape(1,-1)
+    hi2 = get_hi(ma2, sigmas2)
+    lo2 = get_lo(ma2, sigmas2)
+    pos2 = get_pos(ma2)
+    neg2 = get_neg(ma2)
+
+    ma4 = moving_average(X, 4)
+    sigmas4 = np.std(ma4[:val_end], axis=0).reshape(1,-1)
+    hi4 = get_hi(ma4, sigmas4)
+    lo4 = get_lo(ma4, sigmas4)
+    pos4 = get_pos(ma4)
+    neg4 = get_neg(ma4)
+
+    ma8 = moving_average(X, 8)
+    sigmas8 = np.std(ma8[:val_end], axis=0).reshape(1,-1)
+    hi8 = get_hi(ma8, sigmas8)
+    lo8 = get_lo(ma8, sigmas8)
+    pos8 = get_pos(ma8)
+    neg8 = get_neg(ma8)
+
+    ma16 = moving_average(X, 16)
+    sigmas16 = np.std(ma16[:val_end], axis=0).reshape(1,-1)
+    hi16 = get_hi(ma16, sigmas16)
+    lo16 = get_lo(ma16, sigmas16)
+    pos16 = get_pos(ma16)
+    neg16 = get_neg(ma16)
+
+    ma32 = moving_average(X, 32)
+    sigmas32 = np.std(ma32[:val_end], axis=0).reshape(1,-1)
+    hi32 = get_hi(ma32, sigmas32)
+    lo32 = get_lo(ma32, sigmas32)
+    pos32 = get_pos(ma32)
+    neg32 = get_neg(ma32)
+
+
+    if n == 32:
+        features = np.hstack([hi, lo, pos, neg, ma2, ma4, ma8, ma16, ma32, hi2, hi4, hi8, hi16, hi32, lo2, lo4, lo8, lo16, lo32,\
+            pos2, pos4, pos8, pos16, pos32, neg2, neg4, neg8, neg16, neg32])
+    elif n== 8:
+        features = np.hstack([hi, lo, pos, neg, ma2, ma4, ma8, hi2, hi4, hi8, lo2, lo4, lo8,\
+            pos2, pos4, pos8, neg2, neg4, neg8])
+    elif n== 16:
+        features = np.hstack([hi, lo, pos, neg, ma2, ma4, ma8, ma16, hi2, hi4, hi8, hi16, lo2, lo4, lo8, lo16,\
+            pos2, pos4, pos8, pos16, neg2, neg4, neg8, neg16])
+    if n==4:
+        features = np.hstack([hi, lo, pos, neg, ma2, ma4, hi2, hi4, lo2, lo4,\
+            pos2, pos4, neg2, neg4])
+    if n=="ma2":
+        return ma2
+
+
+    return pd.DataFrame(features, index=R.index, columns=[str(i) for i in range(features.shape[1])])
+
+def get_R(R_whitenened, Lt_invs):
+    """
+    param R_whitenened: numpy array of shape (T, n, 1) where T is the number of time steps and n is the number of assets
+        these are the realized returns over the T days
+    param Lt_invs: numpy array of shape (T, n, n) where T is the number of time steps and n is the number of assets
+        these are the inverse of the whitening matrices
+    
+    returns: numpy array of shape (T, n) where T is the number of time steps and n is the number of assets
+    """
+    T = R_whitenened.shape[0]
+    n = R_whitenened.shape[1]
+    R = (Lt_invs @ R_whitenened).reshape(T, n)
+
+    return R
+
+
+def get_V_hats(vols):
+    """
+    param vols: numpy array of shape (T, n) where T is the number of time steps and n is the number of assets
+        these are the predicted volatilities over the T days
+
+    returns: numpy array of shape (T, n, n) where T is the number of time steps and n is the number of assets
+        these are the predicted diagonal volatility matrices over the T days
+    """
+    T = vols.shape[0]
+    n = vols.shape[1]
+    V_hats = np.zeros((T, n, n))
+    for t in range(T):
+        V_hats[t] = np.diag(vols[t])
+
+    return V_hats
+
+def cp_get_log_likelihood(r, Theta):
+    """
+    param R: array of shape (n,1) where n is the number of assets
+    param Theta: precision matrix of shape (n,n) where n is the number of assets
+
+    returns: log likelihood of R given Theta
+    """
+    return cp.log_det(Theta) - cp.quad_form(r, Theta) 
+
+
+def max_log_likelihood_const_L(prob, w, Lt_params, Lt_times_R_vec_params, Lt_hat, Lt_times_R_vec, prob_num, ignore_dpp=False):
+    """
+    param whiteners: array of shape (M, n, n) where M is the number of predictor candidates, and n is the number of assets
+        whiteners[i] = Li^T, where Li*Li^T=Sigma_i, the precission matrix of the i-th predictor
+    param R: numpy array of shape (T, n, 1) where T is the number of time steps and n is the number of assets
+        these are the realized returns over the T days
+
+    returns the weights that maximize the log likelihood of the data given M constant whiteners 
+    """
+    try: # TODO: just a quick fix for with_pooling=False case
+        if prob_num[0] % int(prob_num[1] / 10) == 0:
+            print(f"{prob_num[0]/prob_num[1]:.0%} done...", end=" ")
+    except:
+        pass
+
+    n_predictors = len(Lt_params)
+    for i in range(n_predictors):
+        Lt_params[i].value = Lt_hat[i]
+        Lt_times_R_vec_params[i].value = Lt_times_R_vec[i]
+    
+    try:
+        prob.solve(solver="MOSEK", ignore_dpp=ignore_dpp)
+    except Exception:
+        print("Solver failed...")
+        prob.solve(solver="MOSEK", verbose=True)
+    
+    assert prob.status == "optimal"
+
+    return w.value
+
+
+def max_log_likelihood_varying_L(prob, w, Lt_params, Lt_times_R_vec_params, Lt_hat, Lt_times_R_vec, prob_num, ignore_dpp=False):
+    """
+    param whiteners: array of shape (M, n, n) where M is the number of predictor candidates, and n is the number of assets
+        whiteners[i] = Li^T, where Li*Li^T=Sigma_i, the precission matrix of the i-th predictor
+    param R: numpy array of shape (T, n, 1) where T is the number of time steps and n is the number of assets
+        these are the realized returns over the T days
+
+    returns the weights that maximize the log likelihood of the data given M constant whiteners 
+    """
+    try: # TODO: just a quick fix for with_pooling=False case
+        if prob_num[0] % int(prob_num[1] / 10) == 0:
+            print(f"{prob_num[0]/prob_num[1]:.0%} done...", end=" ")
+    except:
+        pass
+
+    n_predictors = len(Lt_params)
+    for i in range(n_predictors):
+        Lt_params[i].value = Lt_hat[i]
+        Lt_times_R_vec_params[i].value = Lt_times_R_vec[i]
+    
+    try:
+        prob.solve(solver="MOSEK", ignore_dpp=ignore_dpp)
+    except:
+        print("Solver failed...")
+        prob.solve(solver="MOSEK", verbose=True)
+    
+    assert prob.status == "optimal"
+
+    return w.value
+
+
+
+
+
+
+    
+
+def max_log_likelihood(prob, w, prec_params, prec_at_cov_params, precisions, prec_at_covs, prob_num):
+    """
+    param precisions: numpy array of shape (T, M, n, n) where T is the number of time steps, M is the number of predictor candidates, and n is the number of assets
+    param R: numpy array of shape (T, n, 1) where T is the number of time steps and n is the number of assets
+        these are the realized returns over the T days
+    """
+    if prob_num[0] % int(prob_num[1] / 10) == 0:
+        print(f"{prob_num[0]/prob_num[1]:.0%} done...", end=" ")
+
+    n_predictors = len(precisions[0])
+    T = len(precisions)
+
+    # Solve problem once for speedup later
+    for t in range(T):
+        for i in range(n_predictors):
+            prec_params[t][i].value = precisions[t][i]
+            prec_at_cov_params[t][i].value = prec_at_covs[t][i]
+
+    try:
+        print("Solver failed...")
+        prob.solve(solver="MOSEK", verbose=False, ignore_dpp=True)
+    except:
+        w_temp = np.zeros(n_predictors)
+        w_temp[0] = 1
+        return w_temp
+    return w.value
+
+
+def max_log_likelihood_const_theta(prob, w, prec_params, prec_at_cov_params, precisions, prec_at_covs, prob_num): 
+    """
+    param precisions: array of shape (M, n, n) M is the number of predictor candidates, and n is the number of assets
+    param R: numpy array of shape (T, n) where T is the number of time steps and n is the number of assets
+        these are the realized returns over the T days
+
+    returns the weights that maximize the log likelihood of the data given M constant precision matrices
+        i.e., in comparison to max_log_likelihood, this function assumes that the precision matrices are constant over time t=1,2,...,T
+    """
+    if prob_num[0] % int(prob_num[1] / 10) == 0:
+        print(f"{prob_num[0]/prob_num[1]:.0%} done...", end=" ")
+
+    n_predictors = len(precisions)
+    for i in range(n_predictors):
+        Theta_temp = precisions[i]
+        prec_params[i].value = Theta_temp
+        prec_at_cov_params[i].value = prec_at_covs[i]
+
+    prob.solve(solver="MOSEK", verbose=False)
+    return w.value
+
+def get_overtriangular(M):
+    """
+    returns the upper triangular part of a matrix M (including the diagonal)
+    """
+    return M[np.triu_indices(M.shape[0], k=0)].reshape(1,-1)
+
+def get_overtriangular_stack(Ms):
+    """
+    returns the upper triangular part of a list of matrices Ms (including the diagonal)\
+        upper diagonals are returned as rows in a matrix
+    """
+    return np.vstack([get_overtriangular(M) for M in Ms])
+
+def get_vectorform(R):
+    """
+    returns the form of R that is used to compute L^T * R elementwise
+    """
+    n = R.shape[1]
+    R_new = R.copy()
+    for i in range(1, n):
+        R_new = np.hstack((R_new, R[:,i:]))
+    return R_new
+
+def max_log_likelihood_varying_L2(prob, w, P_param, onest_A_param, P, onest_A, prob_num, ignore_dpp=False):
+    """
+    param whiteners: array of shape (M, n, n) where M is the number of predictor candidates, and n is the number of assets
+        whiteners[i] = Li^T, where Li*Li^T=Sigma_i, the precission matrix of the i-th predictor
+    param R: numpy array of shape (T, n, 1) where T is the number of time steps and n is the number of assets
+        these are the realized returns over the T days
+
+    returns the weights that maximize the log likelihood of the data given M constant whiteners 
+    """
+    P_param.value = P 
+    onest_A_param.value = onest_A 
+
+    try: # TODO: just a quick fix for with_pooling=False case
+        if prob_num[0] % int(prob_num[1] / 10) == 0:
+            print(f"{prob_num[0]/prob_num[1]:.0%} done...", end=" ")
+    except:
+        pass
+
+    try:
+        prob.solve(solver="ECOS", ignore_dpp=ignore_dpp)
+    except:
+        print("Solver failed...")
+        prob.solve(solver="ECOS", verbose=True)
+    
+    assert prob.status == "optimal"
+
+    return w.value
+
+def get_opt_weights_new(model, likelihood_window=10, w_init=None, const_theta=None, const_L=None, turnover_cons=None):
+    """
+    param model: Covariance predictor model
+    param likelihood_window: number of past days to use to compute the log likelihood
+    param w_init: initial weights to use for the convex optimization problem
+    param const_theta: whether the precision matrices are constant over time or not
+    """
+    # print("Turnover limit: ",turnover_cons)
+    Theta_hats_for_all_t = []
+    prec_at_covs_for_all_t = []
+    R_for_all_t = []
+    A_for_all_t = []
+    P_for_all_t = []
+
+    Lt_hats_for_all_t = []
+    R_vec_for_all_t = []
+    Lt_times_R_vec_for_all_t = []
+    n_predictors = len(model.predictors)
+    n = model.n
+    T = model.T
+
+    # Parametrize problem for weighted average of precision matrices
+    if const_L is None:
+        assert const_theta is not None
+        if const_theta == "on":
+            w = cp.Variable(n_predictors)
+            precision_params = [cp.Parameter((n, n), PSD=True) for _ in range(n_predictors)]
+            prec_at_cov_params = [cp.Parameter((n, n)) for _ in range(n_predictors)]
+
+            Theta_hat = cp.sum([w[i]*precision_params[i] for i in range(n_predictors)])
+            trace_arg = cp.sum([w[i]*prec_at_cov_params[i] for i in range(n_predictors)])
+            obj = cp.Maximize(cp.log_det(Theta_hat) - cp.trace(trace_arg))
+
+        elif const_theta == "off":
+
+            w = cp.Variable(n_predictors)
+            precision_params = [[cp.Parameter((n, n), PSD=True) for _ in range(n_predictors)] for _ in range(likelihood_window)]
+            prec_at_cov_params = [[cp.Parameter((n, n)) for _ in range(n_predictors)] for _ in range(likelihood_window)]
+
+            Theta_hat = [cp.sum([w[i]*precision_params[t][i] for i in range(n_predictors)]) for t in range(likelihood_window)]
+            trace_arg = [cp.sum([w[i]*prec_at_cov_params[t][i] for i in range(n_predictors)]) for t in range(likelihood_window)]
+
+            log_likelihood = cp.sum([cp.log_det(Theta_hat[t]) - cp.trace(trace_arg[t]) for t in range(likelihood_window)])
+            obj = cp.Maximize(cp.sum(log_likelihood))
+
+        cons = [cp.sum(w) == 1, w >= 0]
+        prob = cp.Problem(obj, cons)
+        # print(prob.is_dcp(dpp=True))
+
+        # prob = cp.Problem(obj, [cp.sum(w) == 1, w >= 0])
+    else:
+        assert const_theta is None
+        assert const_L is not None
+
+        if const_L == "on":
+            w = cp.Variable(n_predictors)
+
+            # Each Lt has shape number of overtriangular elements in L^T
+            n_overtriangular = int(n*(n+1)/2)
+            Lt_params = [cp.Parameter((1,n_overtriangular)) for _ in range(n_predictors)]
+            Lt_hat = cp.sum([w[i]*Lt_params[i] for i in range(n_predictors)])
+
+            # Compute the norm part of the objective
+            Lt_times_R_vec_params = [cp.Parameter((likelihood_window, n_overtriangular)) for _ in range(n_predictors)] # Lt_m*R_t elementwise for flattened Lt overtri.
+            norm_arg = cp.sum([w[i]*Lt_times_R_vec_params[i] for i in range(n_predictors)])
+            sums = cp.hstack([cp.sum(norm_arg[:,i*n- int(i*(i-1)/2):(i+1)*n-int(i*(i+1)/2)], axis=1) for i in range(n)]) # TODO: I think this is right...
+
+
+            diag_indices = [i*n- int(i*(i-1)/2) for i in range(n)]
+
+        elif const_L == "off":
+            ########### NEW APPROACH
+            w = cp.Variable(n_predictors)
+            P_param = cp.Parameter((n_predictors,n_predictors), PSD=True)
+            A_param = cp.Parameter((n*likelihood_window,n_predictors))
+
+            obj = cp.Maximize(cp.sum(cp.log(A_param@w)) - 0.5 * cp.quad_form(w, P_param))
+
+
+
+        cons = [cp.sum(w) == 1, w >= 0]
+
+        if turnover_cons is not None:
+            w_old = cp.Parameter(n_predictors)
+            # w_old.value = np.zeros(n_predictors); w_old.value[-1] = 1 # initialize to last predictor
+            w_old.value = np.ones(n_predictors) / n_predictors
+            cons += [cp.norm(w-w_old, 2) <= turnover_cons] 
+        else:
+            w_old = None
+        prob = cp.Problem(obj, cons)
+
+
+    # Define parameter values for each time step
+    # TODO: I changed from t-1 to t (this should still be causal)
+    for t in range(likelihood_window, T):
+        R_t = model.R.iloc[t-(likelihood_window):t, :].values
+        R_for_all_t.append(R_t)
+        if const_theta == "on":
+            Theta_hats_t = np.array([[*predictor.Theta_hats.values()][t] for predictor in model.predictors.values()]) # get CURRENT day's precision matrices (at time t!)
+            sample_covs_t = np.sum(R_t[i].reshape(-1,1)@R_t[i].reshape(1,-1) for i in range(likelihood_window)) / likelihood_window # Don't include t!
+            prec_at_covs_t = np.array([Theta_hats_t[i] @ sample_covs_t for i in range(n_predictors)])
+        elif const_theta == "off":
+            set_of_Theta_hats_t = []
+            set_of_prec_at_covs_t = []
+            for predictor in model.predictors.values():
+                # Precision matrices
+                Theta_hats_temp = [*predictor.Theta_hats.values()][t-(likelihood_window+1):t-1]
+                set_of_Theta_hats_t.append(Theta_hats_temp)
+
+                # (Precision @ sample covariance matrices) (just one sample per time step...)
+                prec_at_covs_temp = np.array([Theta_hats_temp[i] @ R_t[i].reshape(-1,1)@R_t[i].reshape(1,-1) for i in range(likelihood_window)])
+                set_of_prec_at_covs_t.append(prec_at_covs_temp)
+            Theta_hats_t = np.reshape(np.array(set_of_Theta_hats_t), (likelihood_window, n_predictors, n, n))
+            prec_at_covs_t = np.reshape(np.array(set_of_prec_at_covs_t), (likelihood_window, n_predictors, n, n))
+        elif const_L == "on":
+            Lt_hats_t = np.array([get_overtriangular([*predictor.Lt_hats.values()][t]) for predictor in model.predictors.values()]) # get CURRENT day's Cholesky matrices (at time t!)
+            R_vec_t = get_vectorform(R_t)
+            Lt_times_R_vec_t = np.array([R_vec_t * Lt_hats_t[i] for i in range(n_predictors)])
+
+        elif const_L == "off":
+            # TODO: I changed from t-1 to t (this should still be causal)
+            R_t = model.R.iloc[t-(likelihood_window):t, :].values
+
+            Lt_hats_t = []
+            R_vec_t = get_vectorform(R_t)
+
+            A_t = np.zeros((n*likelihood_window, n_predictors))
+            all_B_t = np.zeros((likelihood_window, n_predictors, n))
+            for i, predictor in enumerate(model.predictors.values()):
+                # Cholesky matrices
+                Lt_hats_temp = get_overtriangular_stack([*predictor.Lt_hats.values()][t-(likelihood_window):t])
+                Lt_hats_t.append(Lt_hats_temp)
+
+                ### NEW APPROACH
+                # Compute A_t and P_t
+                Lt_hats_temp = np.array([*predictor.Lt_hats.values()][t-(likelihood_window):t])
+
+                A_t[:,i] = np.array([np.diag(Lt_hats_temp[j]) for j in\
+                     range(likelihood_window)]).reshape(-1,)
+
+
+                for j in range(likelihood_window):
+                    r_j = R_t[j].reshape(-1,1)
+                    Lt_j = Lt_hats_temp[j]
+                    all_B_t[j,i,:] = r_j.T @ Lt_j.T
+                
+            P_t = np.zeros((n_predictors, n_predictors))
+            for j in range(likelihood_window):
+                B_j = all_B_t[j]
+                P_t += B_j @ B_j.T
+            # ones = np.ones((n*likelihood_window,1))
+            # onest_A_t = ones.T @ A_t
+
+
+            Lt_times_R_vec_t = np.array([R_vec_t * Lt_hats_t[i] for i in range(n_predictors)])
+        
+
+        if const_L == "on" or const_L == "off":
+            Lt_hats_for_all_t.append(Lt_hats_t)
+            R_vec_for_all_t.append(R_vec_t)
+            Lt_times_R_vec_for_all_t.append(Lt_times_R_vec_t)
+
+            P_for_all_t.append(P_t)
+            A_for_all_t.append(A_t)
+
+        else:
+            Theta_hats_for_all_t.append(Theta_hats_t)
+            prec_at_covs_for_all_t.append(prec_at_covs_t)
+    
+    # Solve problem for each t in parallel
+    if const_L=="on":
+        print("Solving convex problem for constant L...")
+        opt_model = max_log_likelihood_const_L
+    elif const_L=="off":
+        print("Solving convex problem for time-varying L...")
+        opt_model = max_log_likelihood_varying_L
+        opt_model = max_log_likelihood_varying_L2
+
+    elif const_theta=="on":
+        print("Solving convex problem for constant theta...")
+        opt_model = max_log_likelihood_const_theta
+    elif const_theta=="off":
+        print("Solving convex problem for time-varying theta...")
+        opt_model = max_log_likelihood
+    
+
+    if turnover_cons is None: # No turnover constraint, so we can problems in parallel
+        with_pooling = False # TODO: FIX
+    else:
+        with_pooling = False
+    if with_pooling:
+        # Solve in parallel
+        with ProcessPoolExecutor() as executor: # TODO: This can probably be removed... Using multiprocessing.Pool instead
+        # Use tqdm to display a progress bar
+            if const_L == "on" or const_L == "off":
+                # ws = list(tqdm(executor.map(opt_model, Lt_hats_for_all_t, R_for_all_t), total=len(Lt_hats_for_all_t)))
+                # Solve problem once for speedup later
+                for i in range(n_predictors):
+                    Lt_params[i].value = Lt_hats_for_all_t[0][i]
+                    Lt_times_R_vec_params[i].value = Lt_times_R_vec_for_all_t[0][i]
+                prob.solve(ignore_dpp=model.ignore_dpp)
+                
+
+
+                Lt_param_list = [Lt_params for _ in range(len(R_vec_for_all_t))]
+                Lt_times_R_vec_param_list = [Lt_times_R_vec_params for _ in range(len(R_vec_for_all_t))]
+                prob_list = [prob for _ in range(len(R_vec_for_all_t))]
+                w_list = [w for _ in range(len(R_vec_for_all_t))]
+                ignore_dpp_list = [model.ignore_dpp for _ in range(len(R_vec_for_all_t))]
+
+                # Keep track on how many problems left to solve
+                prob_nums = [(i, len(R_for_all_t)) for i in range(len(R_for_all_t))]
+
+                # Solve all problems in parallel
+                pool = mp.Pool()
+                # ws = pool.starmap(opt_model, zip(prob_list, w_list, Lt_param_list, Lt_times_R_vec_param_list, \
+                #             Lt_hats_for_all_t, Lt_times_R_vec_for_all_t, prob_nums, ignore_dpp_list))
+                
+                ws = pool.starmap(opt_model, zip(prob, w, P_param, A_param,\
+                     P_for_all_t[t], A_for_all_t[t], t, model.ignore_dpp))
+                pool.close()
+                pool.join()
+
+
+
+
+            elif const_theta == "on":
+                # Solve problem once for speedup later
+                for i in range(n_predictors):
+                    Theta_temp = Theta_hats_for_all_t[0][i]
+                    precision_params[i].value = Theta_temp
+                    prec_at_cov_params[i].value = prec_at_covs_for_all_t[0][i]
+                prob.solve()
+
+                prec_param_list = [precision_params for _ in range(len(R_for_all_t))]
+                prec_at_cov_param_list = [prec_at_cov_params for _ in range(len(R_for_all_t))]
+                prob_list = [prob for _ in range(len(R_for_all_t))]
+                w_list = [w for _ in range(len(R_for_all_t))]
+
+                # Keep track on how many problems left to solve
+                prob_nums = [(i, len(R_for_all_t)) for i in range(len(R_for_all_t))]
+
+                pool = mp.Pool()
+                ws = pool.starmap(opt_model, zip(prob_list, w_list, prec_param_list, prec_at_cov_param_list, \
+                            Theta_hats_for_all_t, prec_at_covs_for_all_t, prob_nums))
+                pool.close()
+                pool.join()
+            elif const_theta == "off":
+                # Solve problem once for speedup later
+                for t in range(likelihood_window):
+                    for i in range(n_predictors):
+                        precision_params[t][i].value = Theta_hats_for_all_t[0][t][i]
+                        prec_at_cov_params[t][i].value = prec_at_covs_for_all_t[0][t][i]
+                prob.solve(ignore_dpp=True)
+
+                prec_param_list = [precision_params for _ in range(len(R_for_all_t))]
+                prec_at_cov_param_list = [prec_at_cov_params for _ in range(len(R_for_all_t))]
+                prob_list = [prob for _ in range(len(R_for_all_t))]
+                w_list = [w for _ in range(len(R_for_all_t))]
+
+                # Keep track on how many problems left to solve
+                prob_nums = [(i, len(R_for_all_t)) for i in range(len(R_for_all_t))]
+
+                pool = mp.Pool()
+                ws = pool.starmap(opt_model, zip(prob_list, w_list, prec_param_list, prec_at_cov_param_list, \
+                            Theta_hats_for_all_t, prec_at_covs_for_all_t, prob_nums))
+                pool.close()
+                pool.join()
+    else:
+        # Solve sequentially
+        ws = []
+        for t in trange(len(Lt_hats_for_all_t)):
+            if const_L == "off":
+
+
+                # w_t = opt_model(prob, w, Lt_params, Lt_times_R_vec_params,
+                # Lt_hats_for_all_t[t], Lt_times_R_vec_for_all_t[t], t,
+                # model.ignore_dpp)
+
+                w_t = opt_model(prob, w, P_param, A_param,\
+                     P_for_all_t[t], A_for_all_t[t], t, model.ignore_dpp)
+
+
+                ws.append(w_t.copy())
+                if w_old is not None:
+                    w_old.value = w_t.copy()
+
+            # if const_L == "on" or const_L == "off":
+            #     w = opt_model(Lt_hats_for_all_t[t], R_for_all_t[t])
+            # else:
+            #     w = opt_model(Theta_hats_for_all_t[t], R_for_all_t[t])
+        print("Finishing...")
+
+    # TODO: I changed from likelihood_window+1 to likelihood_window
+    ws = pd.DataFrame(ws, index = model.R.index[likelihood_window:])
+    return ws
+
+
+def get_opt_weights_old(model, t, prob, w, theta_params, likelihood_window=10, w_init=None, const_theta=True):
+    """
+    Choose the weights to combine the inverse covariance matrices by solving the following convex problem:  what (constant) weights would have maximized the log likelihood on the last 'likelihood_window' days? This is a convex problem, so we can solve it with cvxpy.
+
+    param model: Covariance predictor model
+    param t: time step (pandas date-time object) for which we want to compute the optimal weights
+    param prob: cvxpy problem object
+    param w: cvxpy variable object
+    param theta_params: array of cvxpy parameters for the precision matrix
+    param likelihood_window: number of past days to use to compute the log likelihood
+    """
+    n = model.n
+    n_predictors = len(model.predictors)
+
+    # t = np.where(model.R.index == t)[0][0] # get the index of the time step t (t is originally a pandas date-time object)
+    R_temp = model.R.iloc[t-(likelihood_window+1):t-1, :].values # Don't include t; avoid look-ahead bias 
+    
+    Theta_hats_t = [[*predictor.Theta_hats.values()][t] for predictor in model.predictors.values()] # get CURRENT day's precision matrices (at time t!)
+    if const_theta:
+        for i in range(n_predictors):
+            theta_params[i].value = Theta_hats_t[i] # set the value of the cvxpy parameters to the current precision matrices
+        w_opt = max_log_likelihood_const_theta(prob, w, theta_params, R_temp)
+    else:
+        set_of_Theta_hats = []
+        for predictor in model.predictors.values():
+            Theta_hats_temp = [*predictor.Theta_hats.values()][t-(likelihood_window+1):t-1]
+            set_of_Theta_hats.append(Theta_hats_temp)
+        precisions = np.reshape(np.array(set_of_Theta_hats), (likelihood_window, n_predictors, n, n))
+        w_opt = max_log_likelihood(precisions, R_temp)
+
+
+    Theta_hat_opt = np.sum(w_opt[i]*Theta_hats_t[i] for i in range(len(w_opt)))
+
+    return w_opt, Theta_hat_opt
+
+    ##### Can probably remove this code below #####
+    # for predictor in model.predictors.values():
+    #     Theta_hats_temp = [*predictor.Theta_hats.values()][t-(likelihood_window+1):t-1] # Don't include t; avoid look-ahead bias
+    #     set_of_Theta_hats.append(Theta_hats_temp) 
+
+    # precisions = np.reshape(np.array(set_of_Theta_hats), (likelihood_window, n_predictors, n, n))
+
+    # return max_log_likelihood(precisions, R_temp)
+
+    # set_of_Theta_hats = np.array(set_of_Theta_hats).reshape(likelihood_window, n_predictors, n**2) # batch_size, n_predictors, n, n
+
+    # weighted_Theta_hats = []
+    # for i in range(likelihood_window):
+    #     Theta_vec = cp.sum(cp.multiply(w, set_of_Theta_hats[i]), axis=0)
+    #     weighted_Theta_hats.append(cp.reshape(Theta_vec, (n,n)))
+
+
+    # # Compute the log likelihood (ignore the constant terms)
+    # log_likelihood = cp.sum([cp_get_log_likelihood(R_temp[i], weighted_Theta_hats[i]) for i in range(likelihood_window)])
+
+    # obj = cp.Maximize(log_likelihood)
+    # cons = [cp.sum(w)==1, w>=0]
+    # if w_init is not None:
+    #     const += [cp.norm(w-w_init, 2) <= 0.1]
+    # prob = cp.Problem(obj, cons)
+
+    # prob.solve(solver="MOSEK")
+    # w_opt = w.value
+
+    # theta = np.array([w_opt[i]*set_of_Theta_hats[-1][i].reshape(n,n) for i in range(n_predictors)]).sum(axis=0)
+
+    # return w_opt, theta
+
+
+
+
+def get_realized_covs(R):
+    """
+    param R: numpy array where rows are vector of asset returns for t=0,1,...
+        R has shape (T, n) where T is the number of days and n is the number of assets
+
+    returns: (numpy array) list of r_t*r_t' (matrix multiplication) for all days, i.e,
+        "daily realized covariances"
+    """
+    T = R.shape[0]
+    n = R.shape[1]
+    R = R.reshape(T,n,1)
+
+    return R @ R.transpose(0,2,1)
+    
+
+def get_realized_vars(R):
+    """
+    param R: numpy array where rows are vector of asset returns for t=0,1,...
+        R has shape (T, n) where T is the number of days and n is the number of assets
+
+    returns: (numpy array) list of diag(r_t^2) for all days, i.e,\
+        "daily realized variances"
+    """
+
+
+    variances = []
+    
+    for t in range(R.shape[0]):
+        r_t = R[t, :].reshape(-1,)
+        variances.append(np.diag(r_t**2))
+    return np.array(variances)
+
+def from_cov_to_corr(Sigma):
+    """
+    returns correlation matrix R corresponding to covariance matrix Sigma
+    """
+    V = np.sqrt(np.diag(Sigma))
+    outer_V = np.outer(V, V)
+    corr = Sigma / outer_V
+    return corr
+
+def get_realized_sizes(R):
+    """
+    param R: numpy array where rows are vector of asset returns for t=0,1,...
+        R has shape (T, n) where T is the number of days and n is the number of assets
+
+        returns: (numpy array) list of r_t^Tr_t for all days (t), i.e,
+            "daily realized sizes"
+    """
+    sizes = []
+    for t in range(R.shape[0]):
+        r_t = R[t, :].reshape(-1,1)
+        sizes.append(r_t.T @ r_t)
+    return np.array(sizes)
+
+def get_next_ewma(EWMA, y_last, t, beta):
+    """
+    param EWMA: EWMA at time t-1
+    param y_last: observation at time t-1
+    param t: current time step
+    param beta: EWMA exponential forgetting parameter
+
+    returns: EWMA estimate at time t (note that this does not depend on y_t)
+    """
+
+    old_weight = (beta-beta**t)/(1-beta**t)
+    new_weight = (1-beta) / (1-beta**t)
+
+    return old_weight*EWMA + new_weight*y_last
+
+def get_ewmas(y, T_half):
+    """
+    y: array with measurements for times t=1,2,...,T=len(y)
+    T_half: EWMA half life
+
+    returns: list of EWMAs for times t=2,3,...,T+1 = len(y)
+
+
+    Note: We define EWMA_t as a function of the 
+    observations up to time t-1. This means that
+    y = [y_1,y_2,...,y_T] (for some T), while
+    EWMA = [EWMA_2, EWMA_3, ..., EWMA_{T+1}]
+    This way we don't get a "look-ahead bias" in the EWMA
+    """
+
+    beta = np.exp(-np.log(2)/T_half)
+    EWMA_t = 0
+    EWMAs = []
+    for t in range(1,y.shape[0]+1): # First EWMA is for t=2 
+        y_last = y[t-1] # Note zero-indexing
+        EWMA_t = get_next_ewma(EWMA_t, y_last, t, beta)
+        EWMAs.append(EWMA_t)
+    return np.array(EWMAs)
+
+def get_r_tildes(R, Ws):
+    """
+    param Ws: array of whitening matrices for t=1,2,..., (i.e. L^t, where LL^T=Sigma^-1)
+    param R: array of returns to whiten for t=1,2,..., 
+
+    returns numpy array with r_tilde_hats as rows
+    """
+    T = R.shape[0]
+    n = R.shape[1]
+    R = R.reshape(T,n,1)
+    return Ws @ R
+
+def get_cholesky(Sigma_hats):
+    """
+    returns: Cholesky (transpose) decomposition of Sigma_hat^-1 for each Sigma_hat in Sigma_hats, i.e.,
+        LL^T = Sigma_hat^-1;
+        Note: returns L^T
+    """
+    Lts = []
+    I = np.eye(Sigma_hats[0].shape[1])
+    for Sigma_hat in Sigma_hats:
+        Sigma_hat_inv = np.linalg.solve(Sigma_hat, I)
+        L = np.linalg.cholesky(Sigma_hat_inv)
+        Lts.append(L.T)
+    return np.array(Lts)
+
+####### I think the folloiwng functions are not used anymore, but let's keep them for now ########
+
+def get_log_likelihood(x, Sigma, mu=None):
+    """
+    param x: numpy array of shape (n,1)
+    param Sigma: numpy array of shape (n,n)
+    param mu: numpy array of shape (n,1)
+        if None, mu is set to zero vector
+
+    returns: log-likelihood of x under multivariate normal distribution
+    """
+    x = x.reshape(-1,1)
+    n = Sigma.shape[0]
+    if mu is None:
+        mu = np.zeros((n,1))
+    if len(Sigma) == 1:
+        det = Sigma
+        Sigma_inv = 1 / Sigma
+    else:
+        det = np.linalg.det(Sigma)
+        Sigma_inv = np.linalg.inv(Sigma)
+
+    return float(-n/2*np.log(2*np.pi) - 1/2*np.log(det) -1/2*(x-mu).T @ Sigma_inv@(x-mu))
+
+
+
+def get_avg_likelihood(R, Sigma_hats):
+    """
+    returns: (averaged) log-likelihood of observed returns R, under the Gaussian distribution
+        with mean zero and covariances in Sigma_hats
+
+    param R: rows are n-dimensinal return vectors for times t=1,...,T
+    param Sigma_hats: array-like vector of corresponding covariance matrices
+    """
+    daily_likelihoods = get_daily_likelihood(R, Sigma_hats)
+    
+    return np.mean(daily_likelihoods)
+
+
+def get_daily_likelihood(R, Sigma_hats, in_parallel=False):
+    """
+    returns: log-likelihood of observed returns R, under the Gaussian distribution
+        with mean zero and covariances in Sigma_hats
+    """
+    # n assets
+    n = R.shape[1]
+    mu = np.zeros((n,1))
+
+    log_likelihoods = []
+
+    if in_parallel:
+        # Compute log-likelihood for each day in parallel
+        pool = mp.Pool()
+        log_likelihoods = pool.starmap(get_log_likelihood, zip(R, Sigma_hats))
+        pool.close()
+        pool.join()
+
+        return np.array(log_likelihoods)
+
+    else:
+        # Compute log-likelihood for each day sequentially
+        for t in range(R.shape[0]):
+            r_t = R[t,:].reshape(-1,1)
+            Sigma_hat_t = Sigma_hats[t]
+            log_likelihoods.append(get_log_likelihood(r_t, Sigma_hat_t, mu))
+
+        return np.array(log_likelihoods)
+        
\ No newline at end of file
diff --git a/notebooks/large_universes.ipynb b/notebooks/large_universes.ipynb
new file mode 100644
index 00000000..fa76eff1
--- /dev/null
+++ b/notebooks/large_universes.ipynb
@@ -0,0 +1,833 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "The autoreload extension is already loaded. To reload it, use:\n",
+      "  %reload_ext autoreload\n"
+     ]
+    }
+   ],
+   "source": [
+    "import cvxpy as cp\n",
+    "import numpy as np\n",
+    "import pandas as pd\n",
+    "import matplotlib.pyplot as plt\n",
+    "\n",
+    "from cvx.covariance.iterated_ewma import iterated_ewma, ewma\n",
+    "from cvx.covariance.log_likelihood import log_likelihood\n",
+    "\n",
+    "%load_ext autoreload\n",
+    "%autoreload 2"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Data"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "data = pd.read_csv(\"/Users/kasper/Documents/Stanford/Research/Data/SP500/asset_data_2000_to_2023.csv\", index_col=0, parse_dates=True)\n",
+    "\n",
+    "data = data.drop([\"TICKER\", \"PERMCO\"], axis=1)\n",
+    "prices = pd.pivot_table(data, values='PRC', index='date', columns='PERMNO', fill_value=None)\n",
+    "prices.index = pd.to_datetime(prices.index, format=\"%Y-%m-%d\")\n",
+    "returns = prices.pct_change().dropna(axis=0, how=\"all\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from cvx.covariance.iterated_ewma import iterated_ewma, ewma\n",
+    "iewma = iterated_ewma(returns.loc[:], vola_halflife=63, cov_halflife=125, min_periods_vola=21, min_periods_cov=250)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([1, 2, 3])"
+      ]
+     },
+     "execution_count": 20,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "r = np.array([1,2,3])\n",
+    "np.diagonal(np.diag(r))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "1.4062440990315894e-16"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "(iewma[returns.index[500]]-iewma2[returns.index[500]]).max().sum()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "AttributeError",
+     "evalue": "type object 'DataFrame' has no attribute 'zeros_like'",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
+      "Cell \u001b[0;32mIn[30], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mDataFrame\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mzeros_like\u001b[49m(returns)\n",
+      "\u001b[0;31mAttributeError\u001b[0m: type object 'DataFrame' has no attribute 'zeros_like'"
+     ]
+    }
+   ],
+   "source": [
+    "pd.DataFrame.zeros_like(returns)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 28,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "temp = returns.iloc[:10,:10]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(array([-0.08487831+0.j        ,  0.03567481+0.06252618j,\n",
+       "         0.03567481-0.06252618j,  0.00565754+0.05058938j,\n",
+       "         0.00565754-0.05058938j, -0.01704801+0.02093535j,\n",
+       "        -0.01704801-0.02093535j, -0.02102589+0.j        ,\n",
+       "         0.05281069+0.00200257j,  0.05281069-0.00200257j]),\n",
+       " array([[ 0.54722827+0.j        , -0.09093886+0.07855401j,\n",
+       "         -0.09093886-0.07855401j,  0.11542573+0.04217187j,\n",
+       "          0.11542573-0.04217187j, -0.05135016-0.11398781j,\n",
+       "         -0.05135016+0.11398781j, -0.00281288+0.j        ,\n",
+       "          0.2245151 -0.00569826j,  0.2245151 +0.00569826j],\n",
+       "        [-0.09253261+0.j        ,  0.16266078-0.41869277j,\n",
+       "          0.16266078+0.41869277j,  0.06170169-0.3683517j ,\n",
+       "          0.06170169+0.3683517j , -0.18800843+0.27445544j,\n",
+       "         -0.18800843-0.27445544j, -0.26488554+0.j        ,\n",
+       "         -0.66524191+0.j        , -0.66524191-0.j        ],\n",
+       "        [ 0.24373161+0.j        ,  0.47859989+0.j        ,\n",
+       "          0.47859989-0.j        ,  0.13121299+0.39328585j,\n",
+       "          0.13121299-0.39328585j, -0.08476218+0.03901876j,\n",
+       "         -0.08476218-0.03901876j, -0.16424539+0.j        ,\n",
+       "          0.00376764-0.00091375j,  0.00376764+0.00091375j],\n",
+       "        [-0.33442981+0.j        ,  0.05378377-0.05772304j,\n",
+       "          0.05378377+0.05772304j, -0.2204803 -0.36405685j,\n",
+       "         -0.2204803 +0.36405685j, -0.1261346 +0.22583776j,\n",
+       "         -0.1261346 -0.22583776j, -0.13877045+0.j        ,\n",
+       "         -0.05831319+0.06437493j, -0.05831319-0.06437493j],\n",
+       "        [-0.52027957+0.j        , -0.08794143+0.18857061j,\n",
+       "         -0.08794143-0.18857061j,  0.06575705+0.04760731j,\n",
+       "          0.06575705-0.04760731j,  0.1823263 -0.03457135j,\n",
+       "          0.1823263 +0.03457135j,  0.12756975+0.j        ,\n",
+       "          0.4012719 -0.01704546j,  0.4012719 +0.01704546j],\n",
+       "        [ 0.09483248+0.j        ,  0.17053707+0.12579262j,\n",
+       "          0.17053707-0.12579262j,  0.26172659+0.1717737j ,\n",
+       "          0.26172659-0.1717737j , -0.15444776-0.05805809j,\n",
+       "         -0.15444776+0.05805809j, -0.18397556+0.j        ,\n",
+       "         -0.14960177+0.00728706j, -0.14960177-0.00728706j],\n",
+       "        [ 0.41601523+0.j        ,  0.27900508-0.19599365j,\n",
+       "          0.27900508+0.19599365j,  0.54025391+0.j        ,\n",
+       "          0.54025391-0.j        , -0.22076657-0.26055124j,\n",
+       "         -0.22076657+0.26055124j, -0.15856132+0.j        ,\n",
+       "          0.33962651+0.00176573j,  0.33962651-0.00176573j],\n",
+       "        [-0.07306032+0.j        ,  0.18010654-0.32650183j,\n",
+       "          0.18010654+0.32650183j,  0.11944535+0.15738079j,\n",
+       "          0.11944535-0.15738079j,  0.60074223+0.j        ,\n",
+       "          0.60074223-0.j        ,  0.70064675+0.j        ,\n",
+       "         -0.38437013+0.01057382j, -0.38437013-0.01057382j],\n",
+       "        [ 0.23274344+0.j        , -0.08409252-0.08012096j,\n",
+       "         -0.08409252+0.08012096j, -0.10161386-0.098159j  ,\n",
+       "         -0.10161386+0.098159j  ,  0.40694559-0.22543069j,\n",
+       "          0.40694559+0.22543069j,  0.54653078+0.j        ,\n",
+       "         -0.1232894 -0.00266399j, -0.1232894 +0.00266399j],\n",
+       "        [ 0.09203545+0.j        ,  0.08740287+0.42881948j,\n",
+       "          0.08740287-0.42881948j, -0.18008803-0.06684977j,\n",
+       "         -0.18008803+0.06684977j, -0.20608376-0.00201902j,\n",
+       "         -0.20608376+0.00201902j, -0.13685561+0.j        ,\n",
+       "         -0.19099527-0.02868071j, -0.19099527+0.02868071j]]))"
+      ]
+     },
+     "execution_count": 29,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.linalg.eig(temp)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 36,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th>PERMNO</th>\n",
+       "      <th>10104</th>\n",
+       "      <th>10107</th>\n",
+       "      <th>10138</th>\n",
+       "      <th>10145</th>\n",
+       "      <th>10516</th>\n",
+       "      <th>11308</th>\n",
+       "      <th>11404</th>\n",
+       "      <th>11674</th>\n",
+       "      <th>11762</th>\n",
+       "      <th>11850</th>\n",
+       "      <th>...</th>\n",
+       "      <th>82775</th>\n",
+       "      <th>84381</th>\n",
+       "      <th>85348</th>\n",
+       "      <th>85631</th>\n",
+       "      <th>85913</th>\n",
+       "      <th>85914</th>\n",
+       "      <th>85926</th>\n",
+       "      <th>86136</th>\n",
+       "      <th>87055</th>\n",
+       "      <th>92655</th>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>date</th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>2000-01-04</th>\n",
+       "      <td>-0.088360</td>\n",
+       "      <td>-0.033780</td>\n",
+       "      <td>-0.030249</td>\n",
+       "      <td>-0.017641</td>\n",
+       "      <td>-0.010417</td>\n",
+       "      <td>-0.008869</td>\n",
+       "      <td>0.012963</td>\n",
+       "      <td>0.002079</td>\n",
+       "      <td>-0.034151</td>\n",
+       "      <td>-0.017586</td>\n",
+       "      <td>...</td>\n",
+       "      <td>-0.033149</td>\n",
+       "      <td>-0.036709</td>\n",
+       "      <td>-0.020101</td>\n",
+       "      <td>-0.048689</td>\n",
+       "      <td>-0.006148</td>\n",
+       "      <td>-0.002174</td>\n",
+       "      <td>0.038323</td>\n",
+       "      <td>0.010830</td>\n",
+       "      <td>-0.054775</td>\n",
+       "      <td>-0.012791</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2000-01-05</th>\n",
+       "      <td>-0.052815</td>\n",
+       "      <td>0.010544</td>\n",
+       "      <td>-0.001835</td>\n",
+       "      <td>-0.013468</td>\n",
+       "      <td>-0.015789</td>\n",
+       "      <td>0.019016</td>\n",
+       "      <td>0.045704</td>\n",
+       "      <td>0.031120</td>\n",
+       "      <td>0.008160</td>\n",
+       "      <td>0.054516</td>\n",
+       "      <td>...</td>\n",
+       "      <td>-0.030000</td>\n",
+       "      <td>0.005256</td>\n",
+       "      <td>0.005128</td>\n",
+       "      <td>-0.062992</td>\n",
+       "      <td>0.016495</td>\n",
+       "      <td>-0.023965</td>\n",
+       "      <td>0.000000</td>\n",
+       "      <td>0.021429</td>\n",
+       "      <td>0.017088</td>\n",
+       "      <td>-0.002356</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2000-01-06</th>\n",
+       "      <td>-0.058824</td>\n",
+       "      <td>-0.033498</td>\n",
+       "      <td>0.029412</td>\n",
+       "      <td>0.019340</td>\n",
+       "      <td>0.005348</td>\n",
+       "      <td>0.001098</td>\n",
+       "      <td>0.001748</td>\n",
+       "      <td>-0.004024</td>\n",
+       "      <td>0.020683</td>\n",
+       "      <td>0.049383</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0.008837</td>\n",
+       "      <td>-0.016993</td>\n",
+       "      <td>-0.008503</td>\n",
+       "      <td>-0.060924</td>\n",
+       "      <td>0.014199</td>\n",
+       "      <td>0.015625</td>\n",
+       "      <td>0.026528</td>\n",
+       "      <td>0.027972</td>\n",
+       "      <td>0.020088</td>\n",
+       "      <td>0.036600</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2000-01-07</th>\n",
+       "      <td>0.076823</td>\n",
+       "      <td>0.013068</td>\n",
+       "      <td>-0.007143</td>\n",
+       "      <td>0.053571</td>\n",
+       "      <td>0.015957</td>\n",
+       "      <td>0.065789</td>\n",
+       "      <td>0.006981</td>\n",
+       "      <td>0.010101</td>\n",
+       "      <td>0.030837</td>\n",
+       "      <td>-0.000735</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0.046715</td>\n",
+       "      <td>0.027926</td>\n",
+       "      <td>-0.022298</td>\n",
+       "      <td>0.118568</td>\n",
+       "      <td>0.028000</td>\n",
+       "      <td>0.024176</td>\n",
+       "      <td>0.035955</td>\n",
+       "      <td>-0.020408</td>\n",
+       "      <td>0.066237</td>\n",
+       "      <td>0.117312</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2000-01-10</th>\n",
+       "      <td>0.119710</td>\n",
+       "      <td>0.007291</td>\n",
+       "      <td>0.010791</td>\n",
+       "      <td>0.005297</td>\n",
+       "      <td>0.000000</td>\n",
+       "      <td>-0.031893</td>\n",
+       "      <td>-0.025997</td>\n",
+       "      <td>0.006000</td>\n",
+       "      <td>-0.025641</td>\n",
+       "      <td>-0.013981</td>\n",
+       "      <td>...</td>\n",
+       "      <td>-0.016736</td>\n",
+       "      <td>0.000000</td>\n",
+       "      <td>0.040351</td>\n",
+       "      <td>-0.012000</td>\n",
+       "      <td>0.052529</td>\n",
+       "      <td>-0.010730</td>\n",
+       "      <td>0.029284</td>\n",
+       "      <td>-0.010417</td>\n",
+       "      <td>0.020819</td>\n",
+       "      <td>-0.017329</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2022-12-23</th>\n",
+       "      <td>0.004473</td>\n",
+       "      <td>0.002267</td>\n",
+       "      <td>0.007617</td>\n",
+       "      <td>0.007348</td>\n",
+       "      <td>0.012087</td>\n",
+       "      <td>0.007578</td>\n",
+       "      <td>0.007251</td>\n",
+       "      <td>0.015332</td>\n",
+       "      <td>0.004420</td>\n",
+       "      <td>0.026445</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0.009950</td>\n",
+       "      <td>0.003008</td>\n",
+       "      <td>0.000621</td>\n",
+       "      <td>0.000319</td>\n",
+       "      <td>0.009238</td>\n",
+       "      <td>0.011061</td>\n",
+       "      <td>0.009905</td>\n",
+       "      <td>0.004521</td>\n",
+       "      <td>0.008589</td>\n",
+       "      <td>0.008006</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2022-12-27</th>\n",
+       "      <td>0.001608</td>\n",
+       "      <td>-0.007414</td>\n",
+       "      <td>-0.003510</td>\n",
+       "      <td>0.004769</td>\n",
+       "      <td>0.013633</td>\n",
+       "      <td>0.006111</td>\n",
+       "      <td>0.007303</td>\n",
+       "      <td>0.005821</td>\n",
+       "      <td>0.003444</td>\n",
+       "      <td>0.013894</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0.006305</td>\n",
+       "      <td>0.003155</td>\n",
+       "      <td>0.007758</td>\n",
+       "      <td>-0.009938</td>\n",
+       "      <td>-0.001548</td>\n",
+       "      <td>0.006269</td>\n",
+       "      <td>0.002002</td>\n",
+       "      <td>0.006910</td>\n",
+       "      <td>-0.008970</td>\n",
+       "      <td>0.001280</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2022-12-28</th>\n",
+       "      <td>-0.008027</td>\n",
+       "      <td>-0.010255</td>\n",
+       "      <td>-0.023932</td>\n",
+       "      <td>-0.012565</td>\n",
+       "      <td>-0.023877</td>\n",
+       "      <td>-0.009967</td>\n",
+       "      <td>-0.006007</td>\n",
+       "      <td>-0.008471</td>\n",
+       "      <td>-0.010106</td>\n",
+       "      <td>-0.016426</td>\n",
+       "      <td>...</td>\n",
+       "      <td>-0.012139</td>\n",
+       "      <td>-0.009163</td>\n",
+       "      <td>-0.004542</td>\n",
+       "      <td>-0.023565</td>\n",
+       "      <td>-0.018537</td>\n",
+       "      <td>-0.020645</td>\n",
+       "      <td>-0.021374</td>\n",
+       "      <td>-0.015865</td>\n",
+       "      <td>-0.012017</td>\n",
+       "      <td>-0.006654</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2022-12-29</th>\n",
+       "      <td>0.013320</td>\n",
+       "      <td>0.027630</td>\n",
+       "      <td>0.030070</td>\n",
+       "      <td>0.012065</td>\n",
+       "      <td>-0.005341</td>\n",
+       "      <td>0.005978</td>\n",
+       "      <td>0.005418</td>\n",
+       "      <td>0.008120</td>\n",
+       "      <td>0.010273</td>\n",
+       "      <td>0.007566</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0.009249</td>\n",
+       "      <td>0.017399</td>\n",
+       "      <td>0.005259</td>\n",
+       "      <td>0.034195</td>\n",
+       "      <td>0.016277</td>\n",
+       "      <td>0.013347</td>\n",
+       "      <td>0.022658</td>\n",
+       "      <td>-0.002815</td>\n",
+       "      <td>0.007815</td>\n",
+       "      <td>0.002706</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2022-12-30</th>\n",
+       "      <td>0.004177</td>\n",
+       "      <td>-0.004937</td>\n",
+       "      <td>-0.020390</td>\n",
+       "      <td>-0.002095</td>\n",
+       "      <td>-0.002899</td>\n",
+       "      <td>-0.005317</td>\n",
+       "      <td>-0.012229</td>\n",
+       "      <td>-0.013845</td>\n",
+       "      <td>-0.002542</td>\n",
+       "      <td>0.010073</td>\n",
+       "      <td>...</td>\n",
+       "      <td>-0.007201</td>\n",
+       "      <td>-0.007934</td>\n",
+       "      <td>-0.014694</td>\n",
+       "      <td>-0.006645</td>\n",
+       "      <td>0.006217</td>\n",
+       "      <td>-0.012678</td>\n",
+       "      <td>-0.004391</td>\n",
+       "      <td>-0.008596</td>\n",
+       "      <td>-0.000066</td>\n",
+       "      <td>0.000566</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>5786 rows × 200 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "PERMNO         10104     10107     10138     10145     10516     11308  \\\n",
+       "date                                                                     \n",
+       "2000-01-04 -0.088360 -0.033780 -0.030249 -0.017641 -0.010417 -0.008869   \n",
+       "2000-01-05 -0.052815  0.010544 -0.001835 -0.013468 -0.015789  0.019016   \n",
+       "2000-01-06 -0.058824 -0.033498  0.029412  0.019340  0.005348  0.001098   \n",
+       "2000-01-07  0.076823  0.013068 -0.007143  0.053571  0.015957  0.065789   \n",
+       "2000-01-10  0.119710  0.007291  0.010791  0.005297  0.000000 -0.031893   \n",
+       "...              ...       ...       ...       ...       ...       ...   \n",
+       "2022-12-23  0.004473  0.002267  0.007617  0.007348  0.012087  0.007578   \n",
+       "2022-12-27  0.001608 -0.007414 -0.003510  0.004769  0.013633  0.006111   \n",
+       "2022-12-28 -0.008027 -0.010255 -0.023932 -0.012565 -0.023877 -0.009967   \n",
+       "2022-12-29  0.013320  0.027630  0.030070  0.012065 -0.005341  0.005978   \n",
+       "2022-12-30  0.004177 -0.004937 -0.020390 -0.002095 -0.002899 -0.005317   \n",
+       "\n",
+       "PERMNO         11404     11674     11762     11850  ...     82775     84381  \\\n",
+       "date                                                ...                       \n",
+       "2000-01-04  0.012963  0.002079 -0.034151 -0.017586  ... -0.033149 -0.036709   \n",
+       "2000-01-05  0.045704  0.031120  0.008160  0.054516  ... -0.030000  0.005256   \n",
+       "2000-01-06  0.001748 -0.004024  0.020683  0.049383  ...  0.008837 -0.016993   \n",
+       "2000-01-07  0.006981  0.010101  0.030837 -0.000735  ...  0.046715  0.027926   \n",
+       "2000-01-10 -0.025997  0.006000 -0.025641 -0.013981  ... -0.016736  0.000000   \n",
+       "...              ...       ...       ...       ...  ...       ...       ...   \n",
+       "2022-12-23  0.007251  0.015332  0.004420  0.026445  ...  0.009950  0.003008   \n",
+       "2022-12-27  0.007303  0.005821  0.003444  0.013894  ...  0.006305  0.003155   \n",
+       "2022-12-28 -0.006007 -0.008471 -0.010106 -0.016426  ... -0.012139 -0.009163   \n",
+       "2022-12-29  0.005418  0.008120  0.010273  0.007566  ...  0.009249  0.017399   \n",
+       "2022-12-30 -0.012229 -0.013845 -0.002542  0.010073  ... -0.007201 -0.007934   \n",
+       "\n",
+       "PERMNO         85348     85631     85913     85914     85926     86136  \\\n",
+       "date                                                                     \n",
+       "2000-01-04 -0.020101 -0.048689 -0.006148 -0.002174  0.038323  0.010830   \n",
+       "2000-01-05  0.005128 -0.062992  0.016495 -0.023965  0.000000  0.021429   \n",
+       "2000-01-06 -0.008503 -0.060924  0.014199  0.015625  0.026528  0.027972   \n",
+       "2000-01-07 -0.022298  0.118568  0.028000  0.024176  0.035955 -0.020408   \n",
+       "2000-01-10  0.040351 -0.012000  0.052529 -0.010730  0.029284 -0.010417   \n",
+       "...              ...       ...       ...       ...       ...       ...   \n",
+       "2022-12-23  0.000621  0.000319  0.009238  0.011061  0.009905  0.004521   \n",
+       "2022-12-27  0.007758 -0.009938 -0.001548  0.006269  0.002002  0.006910   \n",
+       "2022-12-28 -0.004542 -0.023565 -0.018537 -0.020645 -0.021374 -0.015865   \n",
+       "2022-12-29  0.005259  0.034195  0.016277  0.013347  0.022658 -0.002815   \n",
+       "2022-12-30 -0.014694 -0.006645  0.006217 -0.012678 -0.004391 -0.008596   \n",
+       "\n",
+       "PERMNO         87055     92655  \n",
+       "date                            \n",
+       "2000-01-04 -0.054775 -0.012791  \n",
+       "2000-01-05  0.017088 -0.002356  \n",
+       "2000-01-06  0.020088  0.036600  \n",
+       "2000-01-07  0.066237  0.117312  \n",
+       "2000-01-10  0.020819 -0.017329  \n",
+       "...              ...       ...  \n",
+       "2022-12-23  0.008589  0.008006  \n",
+       "2022-12-27 -0.008970  0.001280  \n",
+       "2022-12-28 -0.012017 -0.006654  \n",
+       "2022-12-29  0.007815  0.002706  \n",
+       "2022-12-30 -0.000066  0.000566  \n",
+       "\n",
+       "[5786 rows x 200 columns]"
+      ]
+     },
+     "execution_count": 36,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "returns.clip(lower=returns, upper=returns)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 32,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from cvx.covariance.ewma import iterated_ewma\n",
+    "\n",
+    "iewma2 = iterated_ewma(returns.loc[:], vola_halflife=63, cov_halflife=125, min_periods_vola=21, min_periods_cov=250)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 54,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "iewma_no_clip = iterated_ewma(returns.loc['2010-01-01':], vola_halflife=63, cov_halflife=125, min_periods_vola=21, min_periods_cov=250)\n",
+    "\n",
+    "iewma_clip = iterated_ewma(returns.loc['2010-01-01':], vola_halflife=63, cov_halflife=125, min_periods_vola=21, min_periods_cov=250, clip_at=3)\n",
+    "\n",
+    "iewma_reg = iterated_ewma(returns.loc['2010-01-01':], vola_halflife=63, cov_halflife=123, min_periods_vola=21, min_periods_cov=250, low_rank=50)\n",
+    "\n",
+    "iewma_clip_reg = iterated_ewma(returns.loc['2010-01-01':], vola_halflife=63, cov_halflife=123, min_periods_vola=21, min_periods_cov=250, low_rank=50, clip_at=3)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Prescient predictor\n",
+    "prescient = {}\n",
+    "for t in returns.index:\n",
+    "    # get sample covariance matrix for corresponding year\n",
+    "    year = t.year\n",
+    "    cov = np.cov(returns.loc[returns.index.year == year].values, rowvar=False)\n",
+    "    prescient[t] = pd.DataFrame(cov, index=returns.columns, columns=returns.columns)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Log-likelihoods"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 38,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Computing No clipping log-likelihood...\n",
+      "Computing Clip at 3 sigma log-likelihood...\n",
+      "Computing Clip at 3 sigma, low rank 50 log-likelihood...\n",
+      "Computing Prescient log-likelihood...\n"
+     ]
+    }
+   ],
+   "source": [
+    "predictors = [iewma_no_clip, iewma_clip, iewma_reg, iewma_clip_reg, prescient]\n",
+    "\n",
+    "ll = {}\n",
+    "\n",
+    "names = [\"No clipping\", \"Clip at 3 sigma\", \"Low rank 50\" \"Clip at 3 sigma, low rank 50\", \"Prescient\"]\n",
+    "\n",
+    "for i, predictor in enumerate(predictors):\n",
+    "    print(\"Computing \" + names[i] + \" log-likelihood...\")\n",
+    "    returns_temp = returns.loc[pd.Series(predictor).index].values[1:]\n",
+    "    times = pd.Series(predictor).index[1:]\n",
+    "    Sigmas_temp = np.stack([predictor[t].values for t in predictor.keys()])[:-1]\n",
+    "\n",
+    "    ll[names[i]] = pd.Series(log_likelihood(returns_temp*100, Sigmas_temp*10000), index=times)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 59,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\n",
+      "No clipping\n",
+      "591.923 2002.672 13632.818\n",
+      "\n",
+      "Clip at 3 sigma\n",
+      "639.834 2046.641 13916.908\n",
+      "\n",
+      "Clip at 3 sigma, low rank 50\n",
+      "452.16 1217.32 8000.404\n",
+      "\n",
+      "Prescient\n",
+      "0.0 0.0 0.0\n",
+      "\n",
+      "Low rank (no clipping)\n",
+      "404.218 1146.903 7525.876\n"
+     ]
+    },
+    {
+     "data": {
+      "image/png": "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HXTt2hVRUVG48sor8fLLL6uiO3PnzsWQIUPw/vvvo1u3boiOjsbMmTPBcRwWLlyI9PR0pKamYt68eX5/BzpCEAqjNr/KjNnwTPFAqs7ULoISaQQl4iIokXV66kMrHxSAjwSjNk8t8PdOwdn3384CZnuzq5WVlWHlypWYN28e7PaG6/uTXlHi4YcfxmuvvYb09HT87W9/w5QpU3Dw4EGYTL4HcpZl8frrr6NHjx44evQoZs6ciUceeQRvvfUWLrroIrz66qt48sknceDAAQBAdHS0X8exY8cObNq0Cc8991yj68yaNQtutxs//fQT7HY79u7d2+j2N27ciBkzZuD555/HH//4R/zwww944oknGqx35MgRrFixAitXrsSRI0dw9dVX4+jRo8jKysK6deuwadMm/OUvf8HEiRNx4YUXNvsd6AhBKIza/IughK9IVhsDCUUVj57iCQ8wGolHVKW5mmyx5RA0Ep/IvXhYPcXTTjh8+DAEQUDfvn012d5TTz2FSZMmAQCWLl2KLl264L///S+uueYan+vfd9990vPMzEw899xzmDFjBt566y2YzWbExcWBYRi/0y1dunRBcXExvF4v5s6di9tvv73RdU+ePImpU6di4MCBAICePXs2uu4bb7yBSy65BA899BAAICsrC5s2bcK3336rWo/nebz//vuIiYlBv379MG7cOBw4cADLly8Hy7Lo06cPnn/+eaxdu1YiKE19BzpCEJzbvzJjNrydZAVxZNeiPwsjRlAi4MZTgcgjKBrPu7LhW/DUsnIDRG168QDBs+3XFKYoEskI1r79gNbfc05OjvQ8MTERffr0wb59+xpd/4cffsD8+fOxf/9+VFVVwev1wul0ora2FlFR/n0GJdavXw+Hw4Gff/4Zjz76KHr16oXrr7/e57r33HMP7rrrLqxevRoTJ07E1KlTMWjQIJ/rHjhwAFdeeaVq2fDhwxsQlMzMTMTExEiv09LSYDAYwLKsallRUVHAvgMdAYYyxeNHmbEnTH1QxF48Wo4QehVPuCCCfFA0K3FWbCYiIoEMQ9IswfjnZ4Sud+/eYBjGpxA20Dh+/Dguv/xyDBo0CF988QW2bduGRYsWAQDc7tYN6D169MDAgQMxffp03H///Y1qVgDg9ttvx9GjR3HTTTdh9+7dGDZsGN54441W7VdE/VQWwzA+l4lN0wLxHegI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",
+      "text/plain": [
+       "<Figure size 640x480 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "for i, name in enumerate(ll):\n",
+    "    regret = (ll[\"Prescient\"] - ll[name]).resample(\"Q\").mean()\n",
+    "    plt.plot(regret, label=name)\n",
+    "\n",
+    "    print(\"\\n\" + name)\n",
+    "    print(np.round(regret.mean(),3), np.round(regret.std(),3), np.round(regret.max(),3))\n",
+    "plt.legend()\n",
+    "plt.title(\"Log-likelihood regret\")\n",
+    "plt.ylim(0,500)\n",
+    "plt.xlim([*predictors[0].keys()][0], returns.index[-1]);"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'No clipping'"
+      ]
+     },
+     "execution_count": 31,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "names[i]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 28,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Computing Prescient log-likelihood...\n"
+     ]
+    }
+   ],
+   "source": [
+    "predictor = prescient\n",
+    "print(\"Computing \" + names[i] + \" log-likelihood...\")\n",
+    "returns_temp = returns.loc[pd.Series(predictor).index].values[1:]\n",
+    "times = pd.Series(predictor).index[1:]\n",
+    "Sigmas_temp = np.stack([predictor[t].values for t in predictor.keys()])[:-1]\n",
+    "\n",
+    "ll[names[i]] = log_likelihood(returns_temp*100, Sigmas_temp*10000)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "r_temp = returns.loc[pd.Series(iewma).index].values[1:]\n",
+    "times = pd.Series(iewma).index[1:]\n",
+    "Sigmas_temp = np.stack([iewma[t].values for t in iewma.keys()])[:-1]\n",
+    "\n",
+    "ll = log_likelihood(r_temp*100, Sigmas_temp*10000, means=None)\n",
+    "ll = pd.Series(ll, index=times)"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "covariance",
+   "language": "python",
+   "name": "covariance"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.12"
+  },
+  "orig_nbformat": 4,
+  "vscode": {
+   "interpreter": {
+    "hash": "9d86e0b57fa6e6389561eff3b1ed41f041ef9c8aa5c477b83c0f13b592ecdc7c"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/notebooks/playground.ipynb b/notebooks/playground.ipynb
index 2f68a04e..5cb14eac 100644
--- a/notebooks/playground.ipynb
+++ b/notebooks/playground.ipynb
@@ -2,18 +2,9 @@
  "cells": [
   {
    "cell_type": "code",
-   "execution_count": 386,
+   "execution_count": 2,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "The autoreload extension is already loaded. To reload it, use:\n",
-      "  %reload_ext autoreload\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "import cvxpy as cp\n",
     "import numpy as np\n",
@@ -23,17 +14,98 @@
     "from cvx.covariance.iterated_ewma import iterated_ewma, ewma\n",
     "from cvx.covariance.predictors import *\n",
     "from cvx.covariance.covariance_combination import CovarianceCombination\n",
-    "from cvx.covariance.ewma import ewma_cov, ewma_mean\n",
+    "# from cvx.covariance.ewma import ewma_cov, ewma_mean\n",
     "from cvx.covariance.log_likelihood import log_likelihood\n",
     "\n",
-    "\n",
     "%load_ext autoreload\n",
     "%autoreload 2"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 387,
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]]\n"
+     ]
+    }
+   ],
+   "source": [
+    "import numpy as np\n",
+    "import scipy.sparse as sp\n",
+    "\n",
+    "def _get_realized_vars(returns):\n",
+    "    \"\"\"\n",
+    "    param returns: numpy array where rows are vector of asset returns for t=0,1,...\n",
+    "        returns has shape (T, n) where T is the number of days and n is the number of assets\n",
+    "\n",
+    "    returns: (numpy array) list of diag(r_t^2) for all days, i.e,\\\n",
+    "        \"daily realized variances\"\n",
+    "    \"\"\"\n",
+    "\n",
+    "    T, n = returns.shape\n",
+    "    variances = []\n",
+    "    \n",
+    "    for t in range(T):\n",
+    "        r_t = returns[t, :].reshape(-1,)\n",
+    "        diagonal_elements = r_t ** 2\n",
+    "        diagonal_matrix = sp.diags(diagonal_elements, 0, shape=(n, n), format=\"csr\")\n",
+    "        variances.append(diagonal_matrix)\n",
+    "        \n",
+    "    return sp.vstack(variances)\n",
+    "\n",
+    "# Example usage\n",
+    "returns = np.array([[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9]])\n",
+    "variances = _get_realized_vars(returns)\n",
+    "\n",
+    "# Take the element-wise square root of the variances\n",
+    "sqrt_variances = sp.csr_matrix(np.sqrt(variances.data))\n",
+    "\n",
+    "# Print the square root of the variances\n",
+    "print(sqrt_variances.toarray())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "R = np.vstack([np.array([[1, 0.5, 0.5], [0.5, 1, 0.5], [0.5, 0.5, 1]]), np.array([[1, 0.5, 0.5], [0.5, 1, 0.5], [0.5, 0.5, 1]])]).reshape(2, 3, 3)\n",
+    "\n",
+    "D = np.array([[1,2,3], [3,4,5]]).reshape(2,1,3)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[1., 0., 0., 0.],\n",
+       "       [0., 2., 0., 0.],\n",
+       "       [0., 0., 3., 0.],\n",
+       "       [0., 0., 0., 4.]])"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "diagonal_matrix.toarray()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -42,34 +114,344 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 592,
+   "execution_count": 3,
    "metadata": {},
    "outputs": [],
    "source": [
     "returns = pd.read_csv('../data/ff5_no_rf.csv', index_col=0, parse_dates=True)\n",
     "# Get quarterly returns\n",
-    "returns = returns.resample('Q').apply(lambda x: (1+x).prod()-1)"
+    "# returns = returns.resample('Q').apply(lambda x: (1+x).prod()-1)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 463,
+   "execution_count": 2,
    "metadata": {},
    "outputs": [],
    "source": [
-    "# returns = pd.read_csv('../data/49_industries.csv', index_col=0, parse_dates=True).dropna()\n",
-    "# # Get quarterly returns\n",
+    "returns = pd.read_csv('../data/49_industries.csv', index_col=0, parse_dates=True).dropna()\n",
+    "# Get quarterly returns\n",
     "# returns = returns.resample('M').apply(lambda x: (1+x).prod()-1)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 593,
+   "execution_count": 28,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "data = pd.read_csv(\"/Users/kasper/Documents/Stanford/Research/Data/SP500/asset_data_2000_to_2023.csv\", index_col=0, parse_dates=True)\n",
+    "\n",
+    "data = data.drop([\"TICKER\", \"PERMCO\"], axis=1)\n",
+    "prices = pd.pivot_table(data, values='PRC', index='date', columns='PERMNO', fill_value=None)\n",
+    "prices.index = pd.to_datetime(prices.index, format=\"%Y-%m-%d\")\n",
+    "returns = prices.pct_change().dropna(axis=0, how=\"all\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# from cvx.covariance.iterated_ewma import iterated_ewma, ewma\n",
+    "# iewma = iterated_ewma(returns, vola_halflife=125, cov_halflife=250, mean=False, min_periods=20)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# from cvx.covariance.ewma import iterated_ewma\n",
+    "\n",
+    "# iewma2 = iterated_ewma(returns, vola_halflife=125, cov_halflife=250, min_periods_vola=1, min_periods_cov=20)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "7"
+      ]
+     },
+     "execution_count": 7,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "(returns.iloc[0] ==0).sum()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "TypeError",
+     "evalue": "iterated_ewma() got an unexpected keyword argument 'low_rank'",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
+      "Cell \u001b[0;32mIn[4], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m iewma_reg \u001b[38;5;241m=\u001b[39m \u001b[43miterated_ewma\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreturns\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvola_halflife\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m125\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcov_halflife\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m250\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmean\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmin_periods\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m20\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlow_rank\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m20\u001b[39;49m\u001b[43m)\u001b[49m\n",
+      "\u001b[0;31mTypeError\u001b[0m: iterated_ewma() got an unexpected keyword argument 'low_rank'"
+     ]
+    }
+   ],
+   "source": [
+    "iewma_reg = iterated_ewma(returns, vola_halflife=125, cov_halflife=250, min_periods=20, low_rank=20)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 40,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[0.1, 0.2, 0.3],\n",
+       "       [0.4, 0.5, 0.6],\n",
+       "       [0.7, 0.8, 0.9]])"
+      ]
+     },
+     "execution_count": 40,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "import "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 111,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "keys = [*Sigmas[\"10-10\"].keys()]\n",
+    "Sigs = np.array([Sigmas[\"10-10\"][key] for key in keys])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 122,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "iewma = iterated_ewma(returns.loc['2010-01-01':], vola_halflife=63, cov_halflife=125, min_periods_vola=21, min_periods_cov=250, clip_at=3)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 124,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "iewma2 = iterated_ewma(returns.loc['2010-01-01':], vola_halflife=63, cov_halflife=125, min_periods_vola=21, min_periods_cov=250)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 102,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "iewma_reg = iterated_ewma(returns.loc['2010-01-01':], vola_halflife=63, cov_halflife=123, min_periods_vola=21, min_periods_cov=250, low_rank=50, clip_at=3)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# LL"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 125,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "r_temp = returns.loc[pd.Series(iewma).index].values[1:]\n",
+    "times = pd.Series(iewma).index[1:]\n",
+    "Sigmas_temp = np.stack([iewma[t].values for t in iewma.keys()])[:-1]\n",
+    "\n",
+    "ll = log_likelihood(r_temp*100, Sigmas_temp*10000, means=None)\n",
+    "ll = pd.Series(ll, index=times)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 126,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "r_temp = returns.loc[pd.Series(iewma2).index].values[1:]\n",
+    "times = pd.Series(iewma2).index[1:]\n",
+    "Sigmas_temp = np.stack([iewma2[t].values for t in iewma2.keys()])[:-1]\n",
+    "\n",
+    "ll2 = log_likelihood(r_temp*100, Sigmas_temp*10000, means=None)\n",
+    "ll2 = pd.Series(ll2, index=times)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 133,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(-2000.0, 0.0)"
+      ]
+     },
+     "execution_count": 133,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "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",
+      "text/plain": [
+       "<Figure size 640x480 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(ll.resample(\"Q\").mean(), label=\"No cutoff\")\n",
+    "plt.plot(ll2.resample(\"Q\").mean(), label=\"Cutoff\")\n",
+    "plt.plot(ll_reg.resample(\"Q\").mean(), label=\"Cutoff and regularization\")\n",
+    "plt.legend();\n",
+    "plt.ylim(-2000,0)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 104,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "r_temp = returns.loc[pd.Series(iewma_reg).index].values[1:]\n",
+    "times = pd.Series(iewma_reg).index[1:]\n",
+    "Sigmas_temp = np.stack([iewma_reg[t].values for t in iewma_reg.keys()])[:-1]\n",
+    "\n",
+    "ll_reg = log_likelihood(r_temp*100, Sigmas_temp*10000)\n",
+    "ll_reg = pd.Series(ll_reg, index=times)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 107,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(-2000.0, 0.0)"
+      ]
+     },
+     "execution_count": 107,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "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HXUU7dq1Y8OGDWHLuN3uoAeoIjp27MjSpUs5cOBA8LHvvvsOXddp3759TPtdU0ma4Fm1ahWBQIDnnnuO5cuX8/jjjzNlyhRuv/32Mst+/vnnbN26NXjr3bt38Ln58+dz7rnncumll/Lzzz8zYsQIRowYwbJly6rz7QiCIAg1gJEjR+JwOHjuuee4+eabufHGG5k+fTq///47ixcv5qmnnmL69OkAXHnllaxatYpbb72VNWvWMGvWrLBKJoBBgwaxY8cOHn74YX7//XeeeeYZPvnkkwpfv169ejRo0IDnn3+etWvX8sUXXzB27Nio30dRURGnnXYaPXv25IorriA/Pz94A2jXrh0bN25kxowZ/P777zz55JP897//DdtGq1atWLduHUuWLGHnzp2UlJSUeZ3zzz+f1NRURo8ezbJly4IRpQsvvDCYzjpsMGoQDz/8sNG6devg/XXr1hmA8fPPP1e4ztlnn22ccsopYY/17dvXuPLKKyN+3YKCAgMwCgoKot5nQRCE2kxRUZGxYsUKo6ioKNm7EjWjR482Tj/99DKPT5w40cjJyTH2799vTJ482Wjfvr3hcrmMnJwcY9iwYcZXX30VXPb999832rZta6SkpBiDBg0y/vOf/xhA2Ofxn//8x8jLyzPq1KljXHTRRcb9999vtGzZssL9mDNnjtGxY0cjJSXF6Natm/Hll18agPHf//7XMIyKz20vv/yykZWVFbZMeTeLW265xWjQoIFRt25dY9SoUcbjjz8eXN8wDKO4uNg488wzjezsbAMwXn75ZcMwjLB9MQzD+OWXX4zBgwcbqampRv369Y3LL7/c2LdvX6Wf8/XXX28MHDiwzGefKCr6nkZz/tYMI4bGBwnijjvuYPbs2cEQ4/r162ndujV5eXkUFxdz5JFHMm7cOP7+978H12nRogVjx47lhhtuCD5255138t5777F06dJyX6ekpCRM6RYWFpKXl0dBQUHUhi9BEITaTHFxMevWraN169akpqYme3eSzv3338+UKVPYtGlTsndFCKGi72lhYSFZWVkRnb9rTOPBtWvX8tRTT3HllVcGH6tbty6TJk3irbfe4qOPPuLYY49lxIgRfPDBB8Fl8vPzy4TdcnNzg2G/8pg4cSJZWVnBm5XPFQRBEP5aPPvss/z444/88ccfvPrqqzzyyCOMHj062bslJADbq7TG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",
+      "text/plain": [
+       "<Figure size 640x480 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(ll.resample(\"Q\").mean(), label=\"No regularization\")\n",
+    "plt.plot(ll_reg.resample(\"Q\").mean(), label=\"Regularization\")\n",
+    "plt.legend();\n",
+    "plt.ylim(-2000,0)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 75,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(-2000.0, 0.0)"
+      ]
+     },
+     "execution_count": 75,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAAGiCAYAAADjixw0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACSPUlEQVR4nO3dd3xT9frA8U+SNuluoRsoULbsJVhUBEWL4sCBXCfgHnhFcIByAScuFJzoFQSvA5xcfxdEkeEARDYyZe+W0T3TJuf3x0lOE5qWjpykLc/79cqryclpzkkoyZPn+3yfr0FRFAUhhBBCiAbM6O8TEEIIIYTQmwQ8QgghhGjwJOARQgghRIMnAY8QQgghGjwJeIQQQgjR4EnAI4QQQogGTwIeIYQQQjR4EvAIIYQQosGTgEcIIYQQDZ4EPEIIIYRo8BpUwPPuu+/SsmVLgoKC6Nu3L3/++ae/T0kIIYQQdUCDCXjmz5/P2LFjmTx5Mhs2bKBbt26kpqZy4sQJf5+aEEIIIfzM0FAWD+3bty/nn38+77zzDgB2u52kpCQeeeQRxo8f7+ezE0IIIYQ/Bfj7BLzBarWyfv16JkyYoG0zGo0MGjSI1atXl9u/uLiY4uJi7bbdbicjI4Po6GgMBoNPzlkIIYQQtaMoCrm5uTRp0gSjsfJBqwYR8Jw6dQqbzUZ8fLzb9vj4eHbu3Flu/6lTp/Lss8/66vSEEEIIoaPDhw/TrFmzSvdpEAFPdU2YMIGxY8dqt7Ozs2nevDmHDx8mIiLCj2cmhBBCiKrKyckhKSmJ8PDws+7bIAKemJgYTCYT6enpbtvT09NJSEgot7/FYsFisZTbHhERIQGPEEIIUc9UpRylQczSMpvN9OrVi6VLl2rb7HY7S5cuJSUlxY9nJoQQQoi6oEFkeADGjh3LiBEj6N27N3369GH69Onk5+czatQof5+aEEIIIfyswQQ8w4cP5+TJk0yaNIm0tDS6d+/O4sWLyxUyCyGEEOLc02D68NRGTk4OkZGRZGdnSw2PEOKcpCgKpaWl2Gw2f5+KEG5MJhMBAQEe63Sq8/ndYDI8QgghasZqtXL8+HEKCgr8fSpCeBQSEkJiYiJms7nGjyEBjxBCnMPsdjv79+/HZDLRpEkTzGazNGAVdYaiKFitVk6ePMn+/ftp27btWRsMVkQCHiGEOIdZrVZtKZ6QkBB/n44Q5QQHBxMYGMjBgwexWq0EBQXV6HEaxLR0IYQQtVPTb81C+II3/j7lL1wIIYQQDZ4EPEIIIYRo8CTgEUIIIeqQli1bMn369Fo/zsiRIxk6dGitH6cyK1aswGAwkJWVpetxvEECHiGEEPXOyJEjMRgMvPzyy27bFyxYILPMHGbMmMGcOXO89ngDBgxgzJgxbtv69evH8ePHiYyM9Npx9CIBjxBCiHopKCiIV155hczMTF2PY7VadX18b7PZbNjtdiIjI4mKitL1WGazmYSEhHoRZErAI4QQQqMoCgXWUr9cqtv4f9CgQSQkJDB16tRK9/vmm2/o1KkTFouFli1bMm3atEr3nzJlCt27d+ejjz4iOTlZmwadlZXFPffcQ2xsLBEREVx66aVs3rzZ7XdfeOEF4uLiCA8P55577mH8+PF0795du99TlmTo0KGMHDmywvN544036NKlC6GhoSQlJfHQQw+Rl5en3T9nzhyioqL4/vvv6dixIxaLhUOHDrkNaR04cACDwVDuMmDAAABOnz7NLbfcQtOmTQkJCaFLly588cUX2jFGjhzJL7/8wowZM7TfPXDggMchrbO93i1btuSll17irrvuIjw8nObNm/Phhx9W+m/iDdKHRwghhKawxEbHST/65djbn0slxFz1jyWTycRLL73Erbfeyj//+U+aNWtWbp/169dz8803M2XKFIYPH86qVat46KGHiI6OrjTI2LNnD9988w3ffvstJpMJgGHDhhEcHMwPP/xAZGQkH3zwAZdddhl///03jRs35rPPPuPFF1/kvffe48ILL2TevHlMmzaN5OTkar8WroxGI2+99RbJycns27ePhx56iCeffJL33ntP26egoIBXXnmFjz76iOjoaOLi4tweIykpiePHj2u309LSGDRoEP379wegqKiIXr168dRTTxEREcHChQu54447aN26NX369GHGjBn8/fffdO7cmeeeew6A2NhYDhw44Hacqr7e06ZN4/nnn+fpp5/m66+/5sEHH+SSSy6hffv2tXqtKiMBjxBCiHrr+uuvp3v37kyePJlZs2aVu/+NN97gsssu41//+hcA7dq1Y/v27bz22muVBjxWq5VPPvmE2NhYAH7//Xf+/PNPTpw4gcViAeD1119nwYIFfP3119x33328/fbb3H333YwaNQqASZMm8dNPP7llY2rCNSPUsmVLXnjhBR544AG3gKekpIT33nuPbt26eXwMk8lEQkICoAY3Q4cOJSUlhSlTpgDQtGlTHn/8cW3/Rx55hB9//JEvv/ySPn36EBkZidlsJiQkRHscT6r6el911VU89NBDADz11FO8+eabLF++XAIeIYQQvhEcaGL7c6l+O3ZNvPLKK1x66aVuH9hOO3bs4LrrrnPbduGFFzJ9+nRsNpuWvTlTixYttGAHYPPmzeTl5REdHe22X2FhIXv37gVg165d2oe4U58+fVi2bFmNnpfTzz//zNSpU9m5cyc5OTmUlpZSVFREQUGB1h3bbDbTtWvXKj3eXXfdRW5uLkuWLNEa+tlsNl566SW+/PJLjh49itVqpbi4uNrdt6v6erueq8FgICEhgRMnTlTrWNUlAY8QQgiNwWCo1rBSXdC/f39SU1OZMGFCpVmb6ggNDXW7nZeXR2JiIitWrCi3b3UKg41GY7lapZKSkgr3P3DgAFdffTUPPvggL774Io0bN+b333/n7rvvxmq1agFJcHBwlQqHX3jhBX788Uf+/PNPwsPDte2vvfYaM2bMYPr06Vq90JgxY3Qr2A4MDHS7bTAYsNvtuhzLqX79VQshhBAevPzyy3Tv3r3ckMh5553HypUr3batXLmSdu3aVZjd8aRnz56kpaUREBBAy5YtPe7Tvn171q5dy5133qltW7t2rds+sbGxbrU0NpuNrVu3MnDgQI+PuX79eux2O9OmTdOyMV9++WWVz9vVN998w3PPPccPP/xA69at3e5buXIl1113HbfffjugLir7999/07FjR20fs9mMzWar9Bjeer31ILO0hBBC1HtdunThtttu46233nLbPm7cOJYuXcrzzz/P33//zdy5c3nnnXc8Dn9VZtCgQaSkpDB06FB++uknDhw4wKpVq3jmmWdYt24doNa9zJo1i7lz57J7925eeOEFtmzZ4pZ5ufTSS1m4cCELFy5k586dPPjgg5U27WvTpg0lJSW8/fbb7Nu3j//85z/MnDmzWucOsHXrVu68806eeuopOnXqRFpaGmlpaWRkZADQtm1blixZwqpVq9ixYwf3338/6enpbo/RsmVL1qxZw4EDBzh16pTHjIy3Xm89SMAjhBCiQXjuuefKfQj37NmTL7/8knnz5tG5c2cmTZrEc889V+2hL4PBwKJFi+jfvz+jRo2iXbt2/OMf/+DgwYPEx8cDcNtttzFhwgQef/xxevbsyf79+xk5cqTb6t533XUXI0aM4M477+SSSy6hVatWFWZ3ALp168Ybb7zBK6+8QufOnfnss8/OOg3fk3Xr1lFQUMALL7xAYmKidrnhhhsAmDhxIj179iQ1NZUBAwaQkJBQrkvz448/jslkomPHjsTGxnLo0KFyx/HW660Hg1LdxgcNUE5ODpGRkWRnZxMREeHv0xFCCJ8pKipi//79bv1mhPdcfvnlJCQk8J///Mffp1KvVfR3Wp3Pb6nhEUIIIbygoKCAmTNnkpqaislk4osvvuDnn39myZIl/j41gQQ8QgghhFc4h71efPFFioqKaN++Pd988w2DBg3y96kJJOARQgghvCI4OJiff/7Z36chKiBFy0IIIYRo8CTgEUIIIUSDJwGPEEIIIRo8CXiEEEII0eBJwCOEEEKIBk8CHiGEEEI0eBLwCCGEELUwcuTIcssw1MScOXOqtfJ6TRkMBhYsWKD7ceoaCXiEEELUSyNHjsRgMGAwGAgMDCQ5OZknn3ySoqIif59ajQwfPpy///7ba483ZcoUunfvXm778ePHufLKK712nPpCGg8KIYSotwYPHszHH39MSUkJ69evZ8SIERgMBl555RV/n1q1lJSUEBwcTHBwsO7HSkhI0P0YdZFkeIQQQpRRFLDm++dSg7WsLRYLCQkJJCUlMXToUAYNGqStXWW325k6dSrJyckEBwfTrVs3vv76a7ff//7772nbti1BQUEMHDiQuXPnYjAYyMrKAjxnSaZPn07Lli0rPKfFixdz0UUXERUVRXR0NFdffTV79+7V7j9w4AAGg4H58+dzySWXEBQUxGeffVZuSKtly5ZaBsv14vTUU0/Rrl07QkJCaNWqFf/6178oKSkB1OGxZ599ls2bN2u/N2fOHKD8kNZff/3FpZdeSnBwMNHR0dx3333k5eVp9zuH7F5//XUSExOJjo7m4Ycf1o5VX0iGRwghRJmSAnipiX+O/fQxMIfW+Ne3bt3KqlWraNGiBQBTp07l008/ZebMmbRt25Zff/2V22+/ndjYWC655BL279/PTTfdxKOPPso999zDxo0befzxx2v9NPLz8xk7dixdu3YlLy+PSZMmcf3117Np0yaMxrI8w/jx45k2bRo9evQgKCiIH3/80e1x1q5di81mA8Bms3HTTTcRGBio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c/R+el5VlddqwIAB5f62HnjgAbd9zoXX6v3336dr165ap+SUlBR++OEH7f568Td11tW2RI3NmzdPMZvNyuzZs5Vt27Yp9957rxIVFaWkp6f7+9R8ZvLkyUqnTp2U48ePa5eTJ09q9z/wwANKUlKSsnTpUmXdunXKBRdcoPTr10+7v7S0VOncubMyaNAgZePGjcqiRYuUmJgYZcKECf54Ol61aNEi5ZlnnlG+/fZbBVC+++47t/tffvllJTIyUlmwYIGyefNm5dprr1WSk5OVwsJCbZ/Bgwcr3bp1U/744w/lt99+U9q0aaPccsst2v3Z2dlKfHy8cttttylbt25VvvjiCyU4OFj54IMPfPU0veJsr9WIESOUwYMHu/2dORcgdjpXXqvU1FTl448/VrZu3aps2rRJueqqq5TmzZsreXl52j7e+H+3b98+JSQkRBk7dqyyfft25e2331ZMJpOyePFinz7f2qjKa3XJJZco9957r9vfVnZ2tnb/ufJaff/998rChQuVv//+W9m1a5fy9NNPK4GBgcrWrVsVRakff1MS8OioT58+ysMPP6zdttlsSpMmTZSpU6f68ax8a/LkyUq3bt083peVlaUEBgYqX331lbZtx44dCqCsXr1aURT1g85oNCppaWnaPu+//74SERGhFBcX63ruvnTmh7jdblcSEhKU1157TduWlZWlWCwW5YsvvlAURVG2b9+uAMratWu1fX744QfFYDAoR48eVRRFUd577z2lUaNGbq/VU089pbRv317nZ6SfigKe6667rsLfOVdfK0VRlBMnTiiA8ssvvyiK4r3/d08++aTSqVMnt2MNHz5cSU1N1fsp6ebM10pR1IDn0UcfrfB3ztXXSlEUpVGjRspHH31Ub/6mZEhLJ1arlfXr1zNo0CBtm9FoZNCgQaxevdqPZ+Z7u3fvpkmTJrRq1YrbbruNQ4cOAbB+/XpKSkrcXqMOHTrQvHlz7TVavXo1Xbp0IT4+XtsnNTWVnJwctm3b5tsn4kP79+8nLS3N7bWJjIykb9++bq9NVFQUvXv31vYZNGgQRqORNWvWaPv0798fs9ms7ZOamsquXbvIzMz00bPxjRUrVhAXF0f79u158MEHOX36tHbfufxaZWdnA9C4cWPAe//vVq9e7fYYzn3q8/vbma+V02effUZMTAydO3dmwoQJFBQUaPedi6+V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",
+      "text/plain": [
+       "<Figure size 640x480 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(ewma(ll,63), label=\"No regularization\")\n",
+    "plt.plot(ewma(ll_reg,63), label=\"Regularization\")\n",
+    "plt.legend();\n",
+    "plt.ylim(-2000,0)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 37,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "test = _regularize_correlation(Rs, 3)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "R_hat = _regularize_correlation(corr, 3)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
    "metadata": {},
    "outputs": [],
    "source": [
-    "iewma = iterated_ewma(returns, vola_halflife=10, cov_halflife=21, mean=False, min_periods=20)\n",
-    "iewma_mean = iterated_ewma(returns, vola_halflife=10, cov_halflife=21, mean=True, min_periods=20)"
+    "V = np.sqrt(np.diagonal(Sigma))\n",
+    "outer_V = np.outer(V,V)\n",
+    "corr2 = Sigma.values / outer_V"
    ]
   },
   {


Test patch:
diff --git a/tests/test_combinator.py b/tests/test_combinator.py
index 47aa67b6..4842ccf7 100644
--- a/tests/test_combinator.py
+++ b/tests/test_combinator.py
@@ -2,7 +2,7 @@
 import pandas as pd
 
 from cvx.covariance.covariance_combination import CovarianceCombination
-from cvx.covariance.iterated_ewma import iterated_ewma
+from cvx.covariance.ewma import iterated_ewma
 
 
 @pytest.fixture()
@@ -12,6 +12,7 @@ def prices(prices):
 
 @pytest.fixture()
 def returns(prices):
+
     return prices.pct_change().dropna(axis=0, how="all")
 
 
diff --git a/tests/test_extensions.py b/tests/test_extensions.py
new file mode 100644
index 00000000..dd49254d
--- /dev/null
+++ b/tests/test_extensions.py
@@ -0,0 +1,63 @@
+import pandas as pd
+import pytest
+
+from cvx.covariance.ewma import iterated_ewma as iterated_ewma_1
+from cvx.covariance.iterated_ewma import iterated_ewma as iterated_ewma_2
+
+
+@pytest.fixture
+def returns(prices):
+    return 100*prices.pct_change().fillna(0.0)
+
+def _evaluate_nonzero_mean(iewma1, iewma2):
+    # Test mean 
+    mean1 = iewma1.mean
+    mean2 = iewma2.mean
+    assert mean1.keys() == mean2.keys()
+    for time in mean1.keys():
+        pd.testing.assert_series_equal(mean1[time], mean2[time], check_names=False)
+    
+    # Test covariance
+    covariance1 = iewma1.covariance
+    covariance2 = iewma2.covariance
+    assert covariance1.keys() == covariance2.keys()
+    for time in covariance1.keys():
+        pd.testing.assert_frame_equal(covariance1[time], covariance2[time])
+
+def test_cov_zero_mean(returns):
+    iewma1 = iterated_ewma_1(returns, vola_halflife=10, cov_halflife=21, min_periods_vola=20, min_periods_cov=20, lower=-4.2, upper=4.2, mean=False, clip_at=3)
+
+    iewma2 = iterated_ewma_2(returns, vola_halflife=10, cov_halflife=21, min_periods_vola=20, min_periods_cov=20, lower=-4.2, upper=4.2, clip_at=3)
+
+    assert iewma1.keys() == iewma2.keys()
+    for time in iewma1.keys():
+        pd.testing.assert_frame_equal(iewma1[time], iewma2[time])
+
+def test_cov_nonzero_mean(returns):
+
+    iewma1 = iterated_ewma_1(returns, vola_halflife=10, cov_halflife=21, min_periods_vola=20, min_periods_cov=20, lower=-4.2, upper=4.2, mean =True)
+
+    iewma2 = iterated_ewma_2(returns, vola_halflife=10, cov_halflife=21, min_periods_vola=20, min_periods_cov=20, lower=-4.2, upper=4.2, mean=True)
+
+    _evaluate_nonzero_mean(iewma1, iewma2)
+
+def test_regularization_zero_mean(returns):
+
+    iewma1 = iterated_ewma_1(returns, vola_halflife=10, cov_halflife=21, min_periods_vola=20, min_periods_cov=20, lower=-4.2, upper=4.2, clip_at=3,
+    low_rank=5)
+
+    iewma2 = iterated_ewma_2(returns, vola_halflife=10, cov_halflife=21, min_periods_vola=20, min_periods_cov=20, lower=-4.2, upper=4.2, clip_at=3,
+    low_rank=5)
+
+    assert iewma1.keys() == iewma2.keys()
+    for time in iewma1.keys():
+        pd.testing.assert_frame_equal(iewma1[time], iewma2[time])
+
+def test_regularization_nonzero_mean(returns):
+    iewma1 = iterated_ewma_1(returns, vola_halflife=10, cov_halflife=21, min_periods_vola=20, min_periods_cov=20, lower=-4.2, upper=4.2, mean =True, clip_at=3, low_rank=5)
+
+    iewma2 = iterated_ewma_2(returns, vola_halflife=10, cov_halflife=21, min_periods_vola=20, min_periods_cov=20, lower=-4.2, upper=4.2, mean=True,
+    clip_at=3, low_rank=5)
+
+    _evaluate_nonzero_mean(iewma1, iewma2)
+
diff --git a/tests/test_iterated_ewma_vec.py b/tests/test_iterated_ewma_vec.py
index 0fc00d7b..4dacbf7c 100644
--- a/tests/test_iterated_ewma_vec.py
+++ b/tests/test_iterated_ewma_vec.py
@@ -14,7 +14,7 @@ def returns(prices):
     return prices.pct_change().dropna(axis=0, how="all")
 
 def test_iterated_ewma(returns, Sigma_test_iewma):
-    iewma = iterated_ewma(returns, vola_halflife=10, cov_halflife=21, min_periods=40, lower=-4.2, upper=4.2)
+    iewma = iterated_ewma(returns, vola_halflife=10, cov_halflife=21, min_periods_vola=20, min_periods_cov=20, lower=-4.2, upper=4.2)
 
     Sigma_hat = iewma[returns.index[-1]]