Spaces:
Sleeping
Sleeping
adding some flair
Browse files- app.py +14 -6
- model_day.py +15 -2
- model_intra.py +9 -1
- troubleshoot_day_model.ipynb +0 -0
app.py
CHANGED
@@ -150,6 +150,10 @@ with st.form("choose_model"):
|
|
150 |
new_pred['L2BreakPct'] = new_pred['L2BreakPct'].astype(float)
|
151 |
new_pred['H1BreakPct'] = new_pred['H1BreakPct'].astype(float)
|
152 |
new_pred['H2BreakPct'] = new_pred['H2BreakPct'].astype(float)
|
|
|
|
|
|
|
|
|
153 |
|
154 |
seq_proba = seq_predict_proba(new_pred, xgbr, seq2)
|
155 |
|
@@ -210,8 +214,12 @@ with st.form("choose_model"):
|
|
210 |
new_pred['L2BreakPct'] = new_pred['L2BreakPct'].astype(float)
|
211 |
new_pred['H1BreakPct'] = new_pred['H1BreakPct'].astype(float)
|
212 |
new_pred['H2BreakPct'] = new_pred['H2BreakPct'].astype(float)
|
|
|
|
|
|
|
|
|
213 |
new_pred['GreenProbas'] = new_pred['GreenProbas'].astype(float)
|
214 |
-
|
215 |
seq_proba = seq_predict_proba(new_pred, xgbr)
|
216 |
|
217 |
st.info(f'as of {option} on {curr_date} ๐๐ฝ', icon="๐ฎ")
|
@@ -404,12 +412,12 @@ with st.form("choose_model"):
|
|
404 |
|
405 |
df_levels = pd.DataFrame(
|
406 |
index=['H2','H1','L1','L2'],
|
407 |
-
columns=['Level','BreakPct(100)','TouchPct(100)'],
|
408 |
data=[
|
409 |
-
[f"{data['H2'].iloc[-1]:.2f}",f"{data['H2BreakPct'].iloc[-2]:.1%}",f"{data['H2TouchPct'].iloc[-2]:.1%}"],
|
410 |
-
[f"{data['H1'].iloc[-1]:.2f}",f"{data['H1BreakPct'].iloc[-2]:.1%}",f"{data['H1TouchPct'].iloc[-2]:.1%}"],
|
411 |
-
[f"{data['L1'].iloc[-1]:.2f}",f"{data['L1BreakPct'].iloc[-2]:.1%}",f"{data['L1TouchPct'].iloc[-2]:.1%}"],
|
412 |
-
[f"{data['L2'].iloc[-1]:.2f}",f"{data['L2BreakPct'].iloc[-2]:.1%}",f"{data['L2TouchPct'].iloc[-2]:.1%}"]
|
413 |
]
|
414 |
)
|
415 |
|
|
|
150 |
new_pred['L2BreakPct'] = new_pred['L2BreakPct'].astype(float)
|
151 |
new_pred['H1BreakPct'] = new_pred['H1BreakPct'].astype(float)
|
152 |
new_pred['H2BreakPct'] = new_pred['H2BreakPct'].astype(float)
|
153 |
+
new_pred['H1BreakTouchPct'] = new_pred['H1BreakTouchPct'].astype(float)
|
154 |
+
new_pred['H2BreakTouchPct'] = new_pred['H2BreakTouchPct'].astype(float)
|
155 |
+
new_pred['L1BreakTouchPct'] = new_pred['L1BreakTouchPct'].astype(float)
|
156 |
+
new_pred['L2BreakTouchPct'] = new_pred['L2BreakTouchPct'].astype(float)
|
157 |
|
158 |
seq_proba = seq_predict_proba(new_pred, xgbr, seq2)
|
159 |
|
|
|
214 |
new_pred['L2BreakPct'] = new_pred['L2BreakPct'].astype(float)
|
215 |
new_pred['H1BreakPct'] = new_pred['H1BreakPct'].astype(float)
|
216 |
new_pred['H2BreakPct'] = new_pred['H2BreakPct'].astype(float)
|
217 |
+
new_pred['H1BreakTouchPct'] = new_pred['H1BreakTouchPct'].astype(float)
|
218 |
+
new_pred['H2BreakTouchPct'] = new_pred['H2BreakTouchPct'].astype(float)
|
219 |
+
new_pred['L1BreakTouchPct'] = new_pred['L1BreakTouchPct'].astype(float)
|
220 |
+
new_pred['L2BreakTouchPct'] = new_pred['L2BreakTouchPct'].astype(float)
|
221 |
new_pred['GreenProbas'] = new_pred['GreenProbas'].astype(float)
|
222 |
+
|
223 |
seq_proba = seq_predict_proba(new_pred, xgbr)
|
224 |
|
225 |
st.info(f'as of {option} on {curr_date} ๐๐ฝ', icon="๐ฎ")
|
|
|
412 |
|
413 |
df_levels = pd.DataFrame(
|
414 |
index=['H2','H1','L1','L2'],
|
415 |
+
columns=['Level','BreakPct(100)','TouchPct(100)','BreakGivenTouch(100)'],
|
416 |
data=[
|
417 |
+
[f"{data['H2'].iloc[-1]:.2f}",f"{data['H2BreakPct'].iloc[-2]:.1%}",f"{data['H2TouchPct'].iloc[-2]:.1%}",f"{data['H2BreakTouchPct'].iloc[-2]:.1%}"],
|
418 |
+
[f"{data['H1'].iloc[-1]:.2f}",f"{data['H1BreakPct'].iloc[-2]:.1%}",f"{data['H1TouchPct'].iloc[-2]:.1%}",f"{data['H1BreakTouchPct'].iloc[-2]:.1%}"],
|
419 |
+
[f"{data['L1'].iloc[-1]:.2f}",f"{data['L1BreakPct'].iloc[-2]:.1%}",f"{data['L1TouchPct'].iloc[-2]:.1%}",f"{data['L1BreakTouchPct'].iloc[-2]:.1%}"],
|
420 |
+
[f"{data['L2'].iloc[-1]:.2f}",f"{data['L2BreakPct'].iloc[-2]:.1%}",f"{data['L2TouchPct'].iloc[-2]:.1%}",f"{data['L2BreakTouchPct'].iloc[-2]:.1%}"]
|
421 |
]
|
422 |
)
|
423 |
|
model_day.py
CHANGED
@@ -73,7 +73,11 @@ model_cols = [
|
|
73 |
'L1BreakPct',
|
74 |
'L2BreakPct',
|
75 |
'H1BreakPct',
|
76 |
-
'H2BreakPct'
|
|
|
|
|
|
|
|
|
77 |
]
|
78 |
|
79 |
def walk_forward_validation_seq(df, target_column_clf, target_column_regr, num_training_rows, num_periods):
|
@@ -126,7 +130,7 @@ def walk_forward_validation_seq(df, target_column_clf, target_column_regr, num_t
|
|
126 |
|
127 |
greenprobas = []
|
128 |
meanprobas = []
|
129 |
-
for i, pct in tqdm(enumerate(df_results['Predicted'], desc='Calibrating Probas')
|
130 |
try:
|
131 |
df_q = get_quantiles(df_results.iloc[:i], 'Predicted', 7)
|
132 |
for q in df_q.index:
|
@@ -339,6 +343,11 @@ def get_data():
|
|
339 |
for col in level_cols:
|
340 |
data[col+'Pct'] = data[col].rolling(100).mean()
|
341 |
|
|
|
|
|
|
|
|
|
|
|
342 |
# Target -- the next day's low
|
343 |
data['Target'] = (data['OHLC4'] / data['PrevClose']) - 1
|
344 |
data['Target'] = data['Target'].shift(-1)
|
@@ -412,6 +421,10 @@ def get_data():
|
|
412 |
'L2BreakPct',
|
413 |
'H1BreakPct',
|
414 |
'H2BreakPct',
|
|
|
|
|
|
|
|
|
415 |
'Target',
|
416 |
'Target_clf'
|
417 |
]]
|
|
|
73 |
'L1BreakPct',
|
74 |
'L2BreakPct',
|
75 |
'H1BreakPct',
|
76 |
+
'H2BreakPct',
|
77 |
+
'H1BreakTouchPct',
|
78 |
+
'H2BreakTouchPct',
|
79 |
+
'L1BreakTouchPct',
|
80 |
+
'L2BreakTouchPct'
|
81 |
]
|
82 |
|
83 |
def walk_forward_validation_seq(df, target_column_clf, target_column_regr, num_training_rows, num_periods):
|
|
|
130 |
|
131 |
greenprobas = []
|
132 |
meanprobas = []
|
133 |
+
for i, pct in tqdm(enumerate(df_results['Predicted']), desc='Calibrating Probas'):
|
134 |
try:
|
135 |
df_q = get_quantiles(df_results.iloc[:i], 'Predicted', 7)
|
136 |
for q in df_q.index:
|
|
|
343 |
for col in level_cols:
|
344 |
data[col+'Pct'] = data[col].rolling(100).mean()
|
345 |
|
346 |
+
data['H1BreakTouchPct'] = data['H1Break'].rolling(100).sum() / data['H1Touch'].rolling(100).sum()
|
347 |
+
data['H2BreakTouchPct'] = data['H2Break'].rolling(100).sum() / data['H2Touch'].rolling(100).sum()
|
348 |
+
data['L1BreakTouchPct'] = data['L1Break'].rolling(100).sum() / data['L1Touch'].rolling(100).sum()
|
349 |
+
data['L2BreakTouchPct'] = data['L2Break'].rolling(100).sum() / data['L2Touch'].rolling(100).sum()
|
350 |
+
|
351 |
# Target -- the next day's low
|
352 |
data['Target'] = (data['OHLC4'] / data['PrevClose']) - 1
|
353 |
data['Target'] = data['Target'].shift(-1)
|
|
|
421 |
'L2BreakPct',
|
422 |
'H1BreakPct',
|
423 |
'H2BreakPct',
|
424 |
+
'H1BreakTouchPct',
|
425 |
+
'H2BreakTouchPct',
|
426 |
+
'L1BreakTouchPct',
|
427 |
+
'L2BreakTouchPct',
|
428 |
'Target',
|
429 |
'Target_clf'
|
430 |
]]
|
model_intra.py
CHANGED
@@ -45,6 +45,10 @@ model_cols = [
|
|
45 |
'H1BreakPct',
|
46 |
'H2BreakPct',
|
47 |
'GreenProbas',
|
|
|
|
|
|
|
|
|
48 |
# 'GapFillGreenProba'
|
49 |
]
|
50 |
|
@@ -342,7 +346,7 @@ def get_data(periods_30m = 1):
|
|
342 |
data['downSD'] = data['down'].rolling(30).std(ddof=0)
|
343 |
data['aveDown'] = data['down'].rolling(30).mean()
|
344 |
data['L1'] = data['Open'] - (data['aveDown'] / 100) * data['Open']
|
345 |
-
data['L2'] = data['Open'] - ((data['aveDown'] + data['
|
346 |
|
347 |
data = data.assign(
|
348 |
L1Touch = lambda x: x['Low'] < x['L1'],
|
@@ -387,6 +391,10 @@ def get_data(periods_30m = 1):
|
|
387 |
data[col+'Pct'] = data[col].rolling(100).mean()
|
388 |
# data[col+'Pct'] = data[col+'Pct'].shift(-1)
|
389 |
|
|
|
|
|
|
|
|
|
390 |
|
391 |
def get_quintiles(df, col_name, q):
|
392 |
return df.groupby(pd.qcut(df[col_name], q))['GreenDay'].mean()
|
|
|
45 |
'H1BreakPct',
|
46 |
'H2BreakPct',
|
47 |
'GreenProbas',
|
48 |
+
'H1BreakTouchPct',
|
49 |
+
'H2BreakTouchPct',
|
50 |
+
'L1BreakTouchPct',
|
51 |
+
'L2BreakTouchPct'
|
52 |
# 'GapFillGreenProba'
|
53 |
]
|
54 |
|
|
|
346 |
data['downSD'] = data['down'].rolling(30).std(ddof=0)
|
347 |
data['aveDown'] = data['down'].rolling(30).mean()
|
348 |
data['L1'] = data['Open'] - (data['aveDown'] / 100) * data['Open']
|
349 |
+
data['L2'] = data['Open'] - ((data['aveDown'] + data['downSD']) / 100) * data['Open']
|
350 |
|
351 |
data = data.assign(
|
352 |
L1Touch = lambda x: x['Low'] < x['L1'],
|
|
|
391 |
data[col+'Pct'] = data[col].rolling(100).mean()
|
392 |
# data[col+'Pct'] = data[col+'Pct'].shift(-1)
|
393 |
|
394 |
+
data['H1BreakTouchPct'] = data['H1Break'].rolling(100).sum() / data['H1Touch'].rolling(100).sum()
|
395 |
+
data['H2BreakTouchPct'] = data['H2Break'].rolling(100).sum() / data['H2Touch'].rolling(100).sum()
|
396 |
+
data['L1BreakTouchPct'] = data['L1Break'].rolling(100).sum() / data['L1Touch'].rolling(100).sum()
|
397 |
+
data['L2BreakTouchPct'] = data['L2Break'].rolling(100).sum() / data['L2Touch'].rolling(100).sum()
|
398 |
|
399 |
def get_quintiles(df, col_name, q):
|
400 |
return df.groupby(pd.qcut(df[col_name], q))['GreenDay'].mean()
|
troubleshoot_day_model.ipynb
CHANGED
The diff for this file is too large to render.
See raw diff
|
|