Spaces:
Build error
Build error
anaucoin commited on
Commit ·
883ff01
1
Parent(s): f7a5396
app updates and fees update
Browse files
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 = "
|
| 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['
|
| 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)*(
|
| 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':'
|
| 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 |
-
|
| 552 |
-
|
| 553 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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:
|