Beispiel #1
0
import datetime
from datetime import date, timedelta
from numpy.lib.stride_tricks import as_strided
import pandas as pd
import numpy as np
from pathlib import Path
from os import path
import shutil
import os
import pdb
from digfilters import filters
filt = filters()
k = pd.read_pickle('projdir/dailydata.pkl')
k1 = k[k.Symbol == k.Symbol.unique()[0]]
k = k1
k['ret'] = k.Close - k.Open
k['dec'] = filt.highpass2(k.Close, 10) - filt.highpass2(k.Close, 5)
k['avg'] = k.Close.rolling(10).mean() - k.Close.rolling(5).mean()
k['retm'] = 0
for i in range(1, 6):
    k['retm'] += k.ret.shift(-i)
Beispiel #2
0
    def attr4(self,p):
             global numvar
             filt =filters()
             print('in attr')#function for transformation of prices into required inputs
             def h(l):
                 s = compute_Hc(l)
                 return s[0]
             period=10
             bandwidth=0.3
             k = p.dropna()
             hp = np.zeros(len(k))
             bp = np.zeros(len(k))
             cl = np.array(k.Close)
             alpha2 =(np.cos(.25*bandwidth*2*np.pi/period)+np.sin(.25*bandwidth*2*np.pi/period)-1)/(np.cos(.25*bandwidth*2*np.pi)/period) 
             beta1 = np.cos(2*np.pi/period)
             gamma1 = 1/np.cos(2*np.pi*bandwidth/period)
             alpha1=gamma1-(gamma1**2-1)**0.5
             for i in range(1,len(k)):
                 hp[i] = (1+alpha2/2)*(cl[i]-cl[i-1])+(1-alpha2)*hp[i-1]
             peak=np.zeros(len(k)) 
             for i in range(2,len(k)):
                 bp[i] = .5*(1-alpha1)*(hp[i]-hp[i-2])+beta1*(1+alpha1)*bp[i-1]-alpha1*bp[i-2]
                 peak[i]=0.991*peak[i-1]
                 
             
             alpha2 =(np.cos(1.5*bandwidth*2*np.pi/period)+np.sin(1.5*bandwidth*2*np.pi/period)-1)/(np.cos(1.5*bandwidth*2*np.pi/period)) 
             signal=bp
             peak=np.zeros(len(k)) 

             trig = np.zeros(len(k))
             for i in range(1,len(k)):
                 trig[i]=(1+alpha2/2)*(signal[i]-signal[i-1])+(1-alpha2)*trig[i-1]

             k['bp']=filt.normalize(bp)
             k['trig'] = filt.normalize(trig)
             k['trig'] = filt.butterworth2(k.trig,3)
             k['bp'] = filt.butterworth2(k.bp,15)
             k['dec'] = filt.highpass2(k.Close,60)-filt.highpass2(k.Close,30)
             k['dec'] = filt.normalize(k.dec)
             k['dec'] = filt.butterworth2(k.dec,10)
             k['Close1'] = list(cl)
             k['mp'] = (k.High+k.Low)/2
             print('mp done')
             k['im'] = 1*(k.mp-(k.Low.rolling(window = 20).min()))/((k.High.rolling(window=20).max())-(k.Low.rolling(window = 20).min()))
             print('mp done')
             k['ft'] = 0.5*np.log((1+k.im)/(1-k.im))
             k['delta'] = k.Close.shift(-1)-k.Close
             k['du'] = ((k.delta/abs(k.delta)+1)/2)*k.delta#keeping only the positive k.delta
             k['dd'] = ((abs((k.delta/abs(k.delta))-1)/2))*abs(k.delta)#keeping only the negative delta
             k['rs'] = k.du.rolling(window=14).mean()/k.dd.rolling(window=14).mean()
             k['rs5'] = k.du.rolling(window=5).mean()/k.dd.rolling(window=5).mean()
             k['rsi'] = 100.0 - (100.0 / (1.0 + k.rs))
             k['rsi5'] = 100.0 - (100.0 / (1.0 + k.rs5))
             k['rsi'] = k.rsi/100
             k['rsi5'] = k.rsi5/100
             k['ft']= (k.ft-k.ft.min())/(k.ft.max()-k.ft.min())
             
             k['h'] = k.Close.rolling(150).apply(h)
             k['h']  = filt.butterworth2(k.h,10)
             var_cols=['bp','trig','dec','h']
             print(k[['bp','trig','dec']])
             numvar = len(var_cols)
             return k,var_cols