Esempio n. 1
0
index = TI.index
TI.index = range(len(TI))
Turbulence = pd.DataFrame(index = TI.index)
Turbulence['TI'] = np.NaN

for i in xrange(20,len(TI)):
    mean = TI.ix[:i-1].mean().values
    cov = np.matrix(np.cov(TI.ix[:i-1].T))
    rets = TI.ix[i].values
    d = rets - mean 
    Turbulence.ix[i,'TI'] = d.dot(cov.I).dot(d.T)
    
Turbulence.index = index
Turbulence = Turbulence.dropna()

Turbulence['MA'] = efa(Turbulence.TI,1,30)
Turbulence.MA.ix[:29] = np.NaN

def get_weight(interval, q, method = 'continuous'):
    if not q:
        return np.NaN
    pc = sum(interval <= q)/np.float64(len(interval))
    if method == 'continuous':
        if pc <= 0.2:
            return 1.0
        elif pc <= 0.4:
            return 0.8
        elif pc <= 0.6:
            return 0.6
        elif pc <= 0.8:
            return 0.4
Esempio n. 2
0
import numpy as np
import pandas as pd
import scipy as stats
import foundation as fd
from functions import efa

fxData=fd.getFxRates()
fxData = fxData[fxData.Currency!='USD']
fxData = fxData.reset_index()
fxData = fxData[['Date','Currency', 'SPOT']].set_index(['Currency','Date'])
fxData = fxData.groupby(level = 0).apply(lambda x: x.fillna(method = 'ffill',limit = 30 ))

emafxData = fxData.groupby(level = 0).SPOT.apply(lambda x: efa(x,0.97,300))
fxData = fxData.groupby(level = 0).SPOT.values

signal = fxData - emafxData
print signal