anaucoin commited on
Commit
883ff01
·
1 Parent(s): f7a5396

app updates and fees update

Browse files
Files changed (1) hide show
  1. app.py +17 -7
app.py CHANGED
@@ -281,7 +281,7 @@ def get_sd_df(sd_df, sd, bot_selections, dca1, dca2, dca3, dca4, dca5, dca6, fee
281
  return sd_df
282
 
283
  def runapp() -> None:
284
- bot_selections = "Pumpernickel"
285
  otimeheader = 'Exit Date'
286
  fmat = '%Y-%m-%d %H:%M:%S'
287
  fees = .075/100
@@ -295,6 +295,10 @@ def runapp() -> None:
295
  lev_cap = 5
296
  dollar_cap = 1000000000.00
297
  data = load_data('history.csv', 'Pumpernickel Test', 'Bybit Futures', otimeheader, fmat)
 
 
 
 
298
 
299
  df = data.copy(deep=True)
300
 
@@ -349,7 +353,7 @@ def runapp() -> None:
349
  if bot_selections == "Pumpernickel":
350
  dca_map = {1: 1/3, 2: 1/3, 3: 1/3}
351
  df['DCA %'] = df['DCA'].map(dca_map)
352
- df['Calculated Return %'] = df['Signal'].map(signal_map)*(df['DCA %'])*(1-fees)*((df['Sell Price']-df['Buy Price'])/df['Buy Price'] - fees) #accounts for fees on open and close of trade
353
  df['DCA'] = np.floor(df['DCA'].values)
354
 
355
  df['Return Per Trade'] = np.nan
@@ -363,7 +367,7 @@ def runapp() -> None:
363
  df.loc[df['DCA']==1.0,'New Balance'] = [min(dollar_cap/lev, bal*principal_balance) for bal in df.loc[df['DCA']==1.0,'Compounded Return']]
364
  df.loc[df['DCA']==1.0,'Balance used in Trade'] = np.concatenate([[principal_balance], df.loc[df['DCA']==1.0,'New Balance'].values[:-1]])
365
  else:
366
- df['Calculated Return %'] = df['Signal'].map(signal_map)*(1-fees)*((df['Sell Price']-df['Buy Price'])/df['Buy Price'] - fees) #accounts for fees on open and close of trade
367
  df['Return Per Trade'] = np.nan
368
  g = df.groupby('Exit Date').sum(numeric_only=True)['Calculated Return %'].reset_index(name='Return Per Trade')
369
  df['Return Per Trade'] = 1+lev*g['Return Per Trade'].values
@@ -542,15 +546,21 @@ def runapp() -> None:
542
  'Net P/L Per Trade': 'mean',
543
  'Calculated Return %' : lambda x: np.round(100*lev*x.sum(),2)})
544
  grouped_df.index = range(1, len(grouped_df)+1)
545
- grouped_df.rename(columns={'Buy Price':'Avg. Buy Price',
546
  'Net P/L Per Trade':'Net P/L',
547
  'Calculated Return %':'P/L %'}, inplace=True)
548
  st.subheader("Trade Logs")
549
  grouped_df['Entry Date'] = pd.to_datetime(grouped_df['Entry Date'])
550
  grouped_df['Exit Date'] = pd.to_datetime(grouped_df['Exit Date'])
551
- st.dataframe(grouped_df.style.format({'Entry Date':'{:%m-%d-%Y %H:%M:%S}','Exit Date':'{:%m-%d-%Y %H:%M:%S}','Avg. Buy Price': '${:.4f}', 'Sell Price': '${:.4f}', 'Net P/L':'${:.2f}', 'P/L %':'{:.2f}%'})\
552
- .applymap(my_style,subset=['Net P/L'])\
553
- .applymap(my_style,subset=['P/L %']), use_container_width=True)
 
 
 
 
 
 
554
 
555
  # st.subheader("Checking Status")
556
  # if submitted:
 
281
  return sd_df
282
 
283
  def runapp() -> None:
284
+ bot_selections = "Pure Bread"
285
  otimeheader = 'Exit Date'
286
  fmat = '%Y-%m-%d %H:%M:%S'
287
  fees = .075/100
 
295
  lev_cap = 5
296
  dollar_cap = 1000000000.00
297
  data = load_data('history.csv', 'Pumpernickel Test', 'Bybit Futures', otimeheader, fmat)
298
+ if bot_selections == "Pure Bread":
299
+ lev_cap = 5
300
+ dollar_cap = 1000000000.00
301
+ data = load_data('history.csv', 'Pure Bread Test', 'Bybit Futures', otimeheader, fmat)
302
 
303
  df = data.copy(deep=True)
304
 
 
353
  if bot_selections == "Pumpernickel":
354
  dca_map = {1: 1/3, 2: 1/3, 3: 1/3}
355
  df['DCA %'] = df['DCA'].map(dca_map)
356
+ df['Calculated Return %'] = (df['DCA %'])*(df['Signal'].map(signal_map)*(df['Sell Price']-df['Buy Price'])/df['Buy Price'])-2*fees #accounts for fees on open and close of trade
357
  df['DCA'] = np.floor(df['DCA'].values)
358
 
359
  df['Return Per Trade'] = np.nan
 
367
  df.loc[df['DCA']==1.0,'New Balance'] = [min(dollar_cap/lev, bal*principal_balance) for bal in df.loc[df['DCA']==1.0,'Compounded Return']]
368
  df.loc[df['DCA']==1.0,'Balance used in Trade'] = np.concatenate([[principal_balance], df.loc[df['DCA']==1.0,'New Balance'].values[:-1]])
369
  else:
370
+ df['Calculated Return %'] = (df['Signal'].map(signal_map)*(df['Sell Price']-df['Buy Price'])/df['Buy Price'])-2*fees #accounts for fees on open and close of trade
371
  df['Return Per Trade'] = np.nan
372
  g = df.groupby('Exit Date').sum(numeric_only=True)['Calculated Return %'].reset_index(name='Return Per Trade')
373
  df['Return Per Trade'] = 1+lev*g['Return Per Trade'].values
 
546
  'Net P/L Per Trade': 'mean',
547
  'Calculated Return %' : lambda x: np.round(100*lev*x.sum(),2)})
548
  grouped_df.index = range(1, len(grouped_df)+1)
549
+ grouped_df.rename(columns={'Buy Price':'Buy Price',
550
  'Net P/L Per Trade':'Net P/L',
551
  'Calculated Return %':'P/L %'}, inplace=True)
552
  st.subheader("Trade Logs")
553
  grouped_df['Entry Date'] = pd.to_datetime(grouped_df['Entry Date'])
554
  grouped_df['Exit Date'] = pd.to_datetime(grouped_df['Exit Date'])
555
+ if bot_selections == "Pumpernickel":
556
+ st.dataframe(grouped_df.style.format({'Entry Date':'{:%m-%d-%Y %H:%M:%S}','Exit Date':'{:%m-%d-%Y %H:%M:%S}','Avg. Buy Price': '${:.4f}', 'Sell Price': '${:.4f}', 'Net P/L':'${:.2f}', 'P/L %':'{:.2f}%'})\
557
+ .applymap(my_style,subset=['Net P/L'])\
558
+ .applymap(my_style,subset=['P/L %']), use_container_width=True)
559
+ else:
560
+ st.dataframe(grouped_df.style.format({'Entry Date':'{:%m-%d-%Y %H:%M:%S}','Exit Date':'{:%m-%d-%Y %H:%M:%S}','Buy Price': '${:.2f}', 'Sell Price': '${:.2f}', 'Net P/L':'${:.2f}', 'P/L %':'{:.2f}%'})\
561
+ .applymap(my_style,subset=['Net P/L'])\
562
+ .applymap(my_style,subset=['P/L %']), use_container_width=True)
563
+
564
 
565
  # st.subheader("Checking Status")
566
  # if submitted: