wnstnb commited on
Commit
0e5b201
ยท
1 Parent(s): 6ab628c

adding some flair

Browse files
Files changed (4) hide show
  1. app.py +14 -6
  2. model_day.py +15 -2
  3. model_intra.py +9 -1
  4. 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['upSD']) / 100) * data['Open']
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