#--------------------
# import packages
#--------------------
import numpy as np
import pandas as pd
from sas7bdat import SAS7BDAT as sas
from math import pi, log, isnan, isinf
from matplotlib import pyplot as plt
from scipy.optimize import minimize
from scipy.linalg import inv
import datetime

#--------------------------
# read in the data;
#--------------------------
data = sas('sp500.sas7bdat')
data = data.to_data_frame()
data = data.set_index(data['date'])
# subset the data
sp500_rtn = np.asarray(
    data[datetime.date(1955, 01, 03):datetime.date(2004, 12, 31)]['return'])


#------------------------
# determine the spline
#------------------------
def spline(tau_parms, T, knots):

    trend = np.array([t for t in xrange(1, T + 1)])
    tau = np.resize(np.repeat(trend, knots), (T, knots))
    pts = np.array([round(T / knots * i, 0) for i in xrange(knots)])
#--------------------
# import packages
#--------------------
import numpy as np
import pandas as pd
from sas7bdat import SAS7BDAT as sas
from math import pi, log, isnan, isinf
from matplotlib import pyplot as plt
from scipy.optimize import minimize
from scipy.linalg import inv
import datetime

#--------------------------
# read in the data;
#--------------------------
data = sas('sp500.sas7bdat')
data = data.to_data_frame()
data = data.set_index(data['date'])
# subset the data
sp500_rtn = np.asarray(data[datetime.date(1955,01,03):datetime.date(2004,12,31)]['return'])

#------------------------
# determine the spline
#------------------------
def spline(tau_parms, T, knots):

    trend = np.array([t for t in xrange(1,T+1)])
    tau = np.resize(np.repeat(trend,knots),(T,knots))
    pts = np.array([round(T/knots*i,0) for i in xrange(knots)])
    factors = 1.0*(tau - pts > 0)
    tau = np.hstack(((trend*tau_parms[1]/T)[np.newaxis].T, tau_parms[2:]*factors*((tau - pts)/T)**2)) # scaled spline from Oxmetrics
from matplotlib import pyplot as plt
from sas7bdat import SAS7BDAT as sas
from scipy.optimize import minimize
from math import pi, isnan, isinf, sqrt
from scipy.linalg import inv
from scipy import stats

# read in a date helper function
# modeled on sas intnx function
execfile("intnx.py")

#------------------
# read in the data
#------------------
# S&P 500 returns
daily = sas('sp500.sas7bdat')
daily = daily.to_data_frame()
daily = daily[1:]

#----------------------
# lag helper function
#----------------------
def lag_array(series, lag, c=1):
    
    # begin buildinglags
    T = series.size

    final = np.array([])
    
    if type(lag)==int:
        for i in xrange(1,lag+1):