Skip to content

Commit

Permalink
condition set by median
Browse files Browse the repository at this point in the history
  • Loading branch information
birdalugur committed Sep 8, 2019
1 parent 30c8a22 commit bdaec76
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 21 deletions.
1 change: 0 additions & 1 deletion src/auxiliary_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,6 @@ def find_spread(mid_price,a_PNLTICK,a_TICKSIZE, b_PNLTICK,b_TICKSIZE):
try:
spread[i+1] = (((a_series[i+1] - a_series[i])*atick) - ((b_series[i+1] - b_series[i])*btick)) +spread[i]
except:
print("haata")
pass
#return pd.np.trim_zeros(pd.Series(data=spread,index=a_series.index,name='spread'))
return pd.Series(data=spread,index=a_series.index,name='spread')
Expand Down
32 changes: 20 additions & 12 deletions src/condition.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import pandas as pd
from datetime import time
import src.daily_data as dt

# In[ ]:

Expand Down Expand Up @@ -43,7 +44,7 @@ def get_conditon(df_line, min_duration=None, min_amplitude=None):
else:
return False
else:
if df_line['duration'] <= min_duration and abs(df_line['amplitude']) <= min_amplitude:
if df_line['duration'] <= min_duration and abs(df_line['amplitude']) <= abs(min_amplitude):
return True
else:
return False
Expand All @@ -52,7 +53,7 @@ def get_conditon(df_line, min_duration=None, min_amplitude=None):
# In[3]:


def _conditionally_scan(df,min_dur,min_amp=None):
def _conditionally_scan(df,medyan):
"""Bir dataframe'i verilen koşullara göre yeniden düzenler.
Parameters:
df (dataframe): pd.Dataframe nesnesi
Expand All @@ -67,6 +68,8 @@ def _conditionally_scan(df,min_dur,min_amp=None):
koşulu sağlayıp sağlamadığını kontrol eder. Sağlanıyorsa aynı işlem devam eder. Sağlanmıyorsa veriler kaydedilerek
bir sonraki dalga için işlemler tekrar yapılır ve diğer dalga hesaplanır.
"""
min_dur = None
min_amp=None
df=df[['duration','amplitude']].dropna()
index = 0
cout = 1
Expand All @@ -78,18 +81,19 @@ def _conditionally_scan(df,min_dur,min_amp=None):
first = True
second = True
while(cout<len(df)):
current_dur = df.iloc[index,:]['duration']
current_dur = df.iloc[index,:]['duration']
current_amp = df.iloc[index,:]['amplitude']
current_sign = find_sign(current_amp)
current_sign = find_sign(current_amp)

if current_sign==1:
min_dur = medyan['pozitive'].duration
min_amp = medyan['pozitive'].amplitude
else:
min_dur = medyan['negative'].duration
min_amp = medyan['negative'].amplitude

second = True
while(second and cout<len(df)+1):
if(current_sign==0):
# dur_list.append(df.iloc[index,:]['duration'])
# index = cout
# cout=cout+1
# second = False
continue
try:
next_sign = find_sign(df.iloc[cout,:]['amplitude'])

Expand All @@ -100,11 +104,14 @@ def _conditionally_scan(df,min_dur,min_amp=None):

else:
if get_conditon(df.iloc[cout,:],min_dur,min_amp):

dur_list.append(df.iloc[cout,:]['duration'])
amp_list.append(df.iloc[cout,:]['amplitude'])
cout+=1

else:
print("count: ", cout," -index: ",index)
print("d",min_dur,"a",min_amp)
dur_list.append(df.iloc[index,:]['duration'])
amp_list.append(df.iloc[index,:]['amplitude'])
index = cout
Expand All @@ -121,7 +128,7 @@ def _conditionally_scan(df,min_dur,min_amp=None):
dlist.append(sum(dur_list))
alist.append(sum(amp_list))
time_list.append(df.index[cout-1])
second = False
second = False

new_df = pd.DataFrame({'duration':dlist,'amplitude':alist},index=time_list)
return new_df
Expand All @@ -141,7 +148,8 @@ def scan(df):
main_index = df.index.levels[0].tolist()
for index in main_index:
current_df = df.loc[index]
df_list.append(_conditionally_scan(df=current_df,min_dur=current_df.duration.median()))
current_medyan = dt.divide(current_df)
df_list.append(_conditionally_scan(df=current_df,medyan=current_medyan))

combin_df = pd.concat(df_list,keys=main_index)
return combin_df
Expand Down
17 changes: 9 additions & 8 deletions src/daily_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,22 @@ class DailyData:
time: List[pd.Series] = field(default_factory=list)
spread: List[pd.Series] = field(default_factory=list)
change: List[pd.Series] = field(default_factory=list)
duration: List[pd.Series] = field(default_factory=list)
amplitude: List[pd.Series] = field(default_factory=list)
duramp: List[pd.DataFrame] = field(default_factory=list)
# duration: List[pd.Series] = field(default_factory=list)
# amplitude: List[pd.Series] = field(default_factory=list)
df: pd.DataFrame = field(default=pd.DataFrame)

def spread_hesapla(self):
for i in range(23):
self.time.append(self.mid_price_list[i]['time'])
self.spread.append(aux.find_spread((self.mid_price_list[i].iloc[:,1],self.mid_price_list[i].iloc[:,2]),a_PNLTICK=10,a_TICKSIZE=0.0001,b_PNLTICK=6.25,b_TICKSIZE=0.0001))
self.change.append(aux.find_change(self.spread[i]))
self.duration.append(aux.find_duration(self.change[i]))
self.amplitude.append(aux.find_amplitude(self.change[i],self.duration[i]))
self.duramp.append(aux.find_duramp(self.change[i]))
# self.amplitude.append(aux.find_amplitude(self.change[i],self.duration[i]))


def get_df(self,hour_slice):
return pd.DataFrame(data=[self.spread[hour_slice],self.change[hour_slice],self.duration[hour_slice],self.amplitude[hour_slice]]).transpose()
return pd.DataFrame(data=[self.spread[hour_slice],self.change[hour_slice],self.duramp.duration[hour_slice],self.duramp.amplitude[hour_slice]]).transpose()



Expand Down Expand Up @@ -103,8 +104,8 @@ def get_all_data(full_data):
part_amplitude = []

for data in full_data:
part_duration.extend(data.duration[hour])
part_amplitude.extend(data.amplitude[hour])
part_duration.extend(data.duramp[hour].duration)
part_amplitude.extend(data.duramp[hour].amplitude)

df_amp = pd.DataFrame(part_amplitude)
df_amp = df_amp.reset_index(drop=True)
Expand All @@ -124,4 +125,4 @@ def get_all_data(full_data):


def divide(df):
return {'pozitive':df[df['amplitude']>0],'negative':df[df['amplitude']<0]}
return {'pozitive':df[df['amplitude']>0].median(),'negative':df[df['amplitude']<0].median()}

0 comments on commit bdaec76

Please sign in to comment.