import pandas as pd
from binance.client import Client
client = Client()
info = client.get_exchange_info()
filtered = ['WBTCBUSD']
symbols = [x["symbol"] for x in info['symbols'] if x['status'] == 'TRADING' and not x['symbol'] in filtered]
relevant = [symbol for symbol in symbols if symbol.endswith('BUSD')]
print(f"Number of relevant symbols: {len(relevant)}")
Number of relevant symbols: 320
def getdailydata(symbol):
frame = pd.DataFrame(client.get_historical_klines(symbol, '1d', '450 days ago UTC'))
if len(frame) > 0:
frame = frame.iloc[:,:5]
frame.columns = ['DateTime', 'Open', 'High', 'Low', 'Close']
frame = frame.set_index('DateTime')
frame.index = pd.to_datetime(frame.index, unit='ms')
frame = frame.astype('float')
return frame
dfs = []
for coin in relevant:
dfs.append(getdailydata(coin))
mergeddf = pd.concat(dict(zip(relevant,dfs)), axis=1)
high_close_df = mergeddf.loc[:, mergeddf.columns.get_level_values(1).isin(['High', 'Close'])]
df1 = high_close_df.idxmax(numeric_only=True).drop(labels='Close', level=1).droplevel(1).rename('Date')
df2 = high_close_df.max(numeric_only=True).drop(labels='Close', level=1).droplevel(1).rename('High').round(2)
highdf = pd.merge(df1, df2, right_index=True, left_index=True)
closedf = mergeddf.loc[:, mergeddf.columns.get_level_values(1).isin(['Close'])]
closedf.columns = closedf.columns.droplevel(1)
df1 = (((closedf.iloc[-1] - highdf['High']) / highdf['High']) * 100).round(2).rename('drawdown %')
df2 = (mergeddf.iloc[-1].name - highdf['Date']).dt.days.rename('days since ath')
df3 = highdf['High'].rename('high')
df4 = closedf.iloc[-1].round(2).rename('last')
df5 = pd.merge(df1, df2, right_index=True, left_index=True)
df6 = pd.merge(df5, df3, right_index=True, left_index=True)
df7 = pd.merge(df6, df4, right_index=True, left_index=True)
print(f"Unfiltered length: {len(df7)}")
max_drawdown = 95
min_drawdown = 15
df8 = df7[df7['drawdown %'] > -max_drawdown]
df9 = df8[df8['drawdown %'] < -min_drawdown]
pd.set_option('display.max_rows', None)
summarydf = df9.sort_values(by=['drawdown %'])
summarydf.index.name = 'coin/token'
print(f"Filtered length: {len(summarydf)}")
import os
os.makedirs('data', exist_ok=True)
summarydf.to_csv('data/ath-drawdown.csv')
summarydf
#.nsmallest(20, columns=['drawdown %'])
Unfiltered length: 320 Filtered length: 248
| drawdown % | days since ath | high | last | |
|---|---|---|---|---|
| coin/token | ||||
| DODOBUSD | -94.91 | 439 | 2.20 | 0.11 |
| FTMBUSD | -94.89 | 387 | 3.49 | 0.18 |
| TVKBUSD | -94.85 | 359 | 0.55 | 0.03 |
| SKLBUSD | -94.82 | 429 | 0.50 | 0.03 |
| JOEBUSD | -94.62 | 326 | 2.75 | 0.15 |
| XVGBUSD | -94.55 | 372 | 0.04 | 0.00 |
| RENBUSD | -94.46 | 413 | 1.37 | 0.08 |
| WAXPBUSD | -94.41 | 367 | 0.98 | 0.05 |
| OMGBUSD | -94.40 | 379 | 20.13 | 1.13 |
| CELRBUSD | -94.36 | 419 | 0.20 | 0.01 |
| BAKEBUSD | -94.33 | 439 | 3.09 | 0.18 |
| PYRBUSD | -94.31 | 353 | 50.40 | 2.87 |
| ALPHABUSD | -94.26 | 439 | 1.50 | 0.09 |
| RNDRBUSD | -94.24 | 357 | 7.99 | 0.46 |
| SXPBUSD | -94.23 | 439 | 4.09 | 0.24 |
| ICXBUSD | -94.22 | 369 | 2.72 | 0.16 |
| FETBUSD | -94.18 | 374 | 1.03 | 0.06 |
| PLABUSD | -94.09 | 361 | 3.40 | 0.20 |
| CTSIBUSD | -94.06 | 373 | 1.73 | 0.10 |
| GTCBUSD | -94.04 | 357 | 29.00 | 1.73 |
| CVXBUSD | -93.91 | 327 | 63.88 | 3.89 |
| TKOBUSD | -93.75 | 448 | 3.47 | 0.22 |
| ADXBUSD | -93.70 | 386 | 1.94 | 0.12 |
| ENJBUSD | -93.68 | 359 | 4.85 | 0.31 |
| LRCBUSD | -93.62 | 374 | 3.86 | 0.25 |
| ORNBUSD | -93.51 | 427 | 13.19 | 0.86 |
| LINABUSD | -93.51 | 377 | 0.09 | 0.01 |
| POLSBUSD | -93.47 | 347 | 5.28 | 0.34 |
| CKBBUSD | -93.40 | 357 | 0.04 | 0.00 |
| 1INCHBUSD | -93.39 | 388 | 8.00 | 0.53 |
| CELOBUSD | -93.36 | 386 | 6.87 | 0.46 |
| OGNBUSD | -93.28 | 373 | 1.50 | 0.10 |
| SANDBUSD | -93.26 | 359 | 8.49 | 0.57 |
| RSRBUSD | -93.25 | 352 | 0.06 | 0.00 |
| BTCSTBUSD | -93.21 | 408 | 90.59 | 6.15 |
| MOBBUSD | -93.20 | 204 | 8.50 | 0.58 |
| DENTBUSD | -93.18 | 382 | 0.01 | 0.00 |
| OMBUSD | -93.18 | 427 | 0.45 | 0.03 |
| SCRTBUSD | -93.16 | 387 | 10.80 | 0.74 |
| RUNEBUSD | -93.13 | 382 | 17.28 | 1.19 |
| FIOBUSD | -93.11 | 351 | 0.44 | 0.03 |
| MANABUSD | -93.10 | 359 | 5.91 | 0.41 |
| AUCTIONBUSD | -93.04 | 393 | 63.79 | 4.44 |
| ZENBUSD | -93.02 | 358 | 138.00 | 9.63 |
| API3BUSD | -92.99 | 302 | 20.00 | 1.40 |
| LPTBUSD | -92.94 | 375 | 101.88 | 7.19 |
| BNTBUSD | -92.89 | 374 | 5.01 | 0.36 |
| WRXBUSD | -92.84 | 382 | 2.10 | 0.15 |
| STXBUSD | -92.79 | 353 | 3.26 | 0.24 |
| COMPBUSD | -92.70 | 439 | 528.90 | 38.60 |
| SUSHIBUSD | -92.68 | 429 | 16.17 | 1.18 |
| CHRBUSD | -92.67 | 364 | 1.50 | 0.11 |
| DFBUSD | -92.51 | 437 | 0.49 | 0.04 |
| FARMBUSD | -92.41 | 448 | 387.60 | 29.40 |
| TOMOBUSD | -92.40 | 439 | 3.93 | 0.30 |
| ROSEBUSD | -92.34 | 308 | 0.60 | 0.05 |
| REEFBUSD | -92.33 | 382 | 0.04 | 0.00 |
| APTBUSD | -92.30 | 31 | 59.39 | 4.57 |
| HOTBUSD | -92.22 | 380 | 0.02 | 0.00 |
| FRONTBUSD | -92.19 | 438 | 2.27 | 0.18 |
| DYDXBUSD | -92.19 | 415 | 27.87 | 2.18 |
| EGLDBUSD | -92.17 | 361 | 544.65 | 42.66 |
| BURGERBUSD | -92.06 | 408 | 6.75 | 0.54 |
| CRVBUSD | -92.00 | 319 | 6.81 | 0.55 |
| SCBUSD | -91.97 | 357 | 0.03 | 0.00 |
| DUSKBUSD | -91.92 | 306 | 1.08 | 0.09 |
| MINABUSD | -91.80 | 373 | 6.68 | 0.55 |
| QUICKBUSD | -91.77 | 448 | 638.90 | 52.60 |
| HBARBUSD | -91.74 | 429 | 0.58 | 0.05 |
| SUNBUSD | -91.62 | 395 | 0.06 | 0.01 |
| NEARBUSD | -91.59 | 309 | 20.60 | 1.73 |
| MLNBUSD | -91.57 | 423 | 234.10 | 19.74 |
| SYSBUSD | -91.56 | 321 | 1.33 | 0.11 |
| TROYBUSD | -91.50 | 400 | 0.03 | 0.00 |
| REQBUSD | -91.47 | 344 | 1.00 | 0.09 |
| FLUXBUSD | -91.42 | 344 | 5.43 | 0.47 |
| STMXBUSD | -91.40 | 441 | 0.06 | 0.01 |
| IMXBUSD | -91.40 | 307 | 4.72 | 0.41 |
| ELFBUSD | -91.34 | 428 | 1.40 | 0.12 |
| AVAXBUSD | -91.34 | 363 | 146.74 | 12.71 |
| DEXEBUSD | -91.31 | 350 | 27.32 | 2.38 |
| COSBUSD | -91.24 | 337 | 0.05 | 0.00 |
| DEGOBUSD | -91.20 | 359 | 14.43 | 1.27 |
| DGBBUSD | -91.20 | 439 | 0.08 | 0.01 |
| ERNBUSD | -91.17 | 442 | 20.80 | 1.84 |
| OCEANBUSD | -91.12 | 353 | 1.44 | 0.13 |
| KDABUSD | -91.07 | 253 | 10.00 | 0.89 |
| TBUSD | -91.00 | 262 | 0.23 | 0.02 |
| LTOBUSD | -90.99 | 363 | 0.82 | 0.07 |
| STORJBUSD | -90.91 | 357 | 3.54 | 0.32 |
| THETABUSD | -90.91 | 438 | 9.75 | 0.89 |
| XVSBUSD | -90.82 | 439 | 42.94 | 3.94 |
| LITBUSD | -90.82 | 356 | 7.77 | 0.71 |
| IOSTBUSD | -90.71 | 436 | 0.09 | 0.01 |
| BSWBUSD | -90.71 | 231 | 2.18 | 0.20 |
| WINGBUSD | -90.60 | 113 | 62.85 | 5.91 |
| ZILBUSD | -90.54 | 232 | 0.23 | 0.02 |
| ARPABUSD | -90.48 | 381 | 0.28 | 0.03 |
| FISBUSD | -90.45 | 440 | 2.85 | 0.27 |
| GMTBUSD | -90.40 | 205 | 4.18 | 0.40 |
| IOTXBUSD | -90.35 | 371 | 0.26 | 0.03 |
| KAVABUSD | -90.35 | 446 | 9.22 | 0.89 |
| AUTOBUSD | -90.31 | 438 | 1770.70 | 171.50 |
| ACHBUSD | -90.28 | 313 | 0.10 | 0.01 |
| HIVEBUSD | -90.22 | 358 | 3.42 | 0.33 |
| NEOBUSD | -90.09 | 439 | 66.82 | 6.62 |
| VETBUSD | -89.98 | 375 | 0.19 | 0.02 |
| CTXCBUSD | -89.93 | 337 | 0.82 | 0.08 |
| LEVERBUSD | -89.92 | 126 | 0.01 | 0.00 |
| DOTBUSD | -89.91 | 380 | 55.13 | 5.56 |
| INJBUSD | -89.87 | 439 | 16.61 | 1.68 |
| FORBUSD | -89.83 | 428 | 0.14 | 0.01 |
| COTIBUSD | -89.81 | 384 | 0.69 | 0.07 |
| ALGOBUSD | -89.81 | 366 | 2.95 | 0.30 |
| UNFIBUSD | -89.79 | 165 | 41.84 | 4.27 |
| FXSBUSD | -89.76 | 230 | 44.00 | 4.51 |
| KNCBUSD | -89.70 | 205 | 5.76 | 0.59 |
| ANKRBUSD | -89.68 | 357 | 0.21 | 0.02 |
| ADABUSD | -89.53 | 443 | 3.10 | 0.32 |
| HARDBUSD | -89.49 | 439 | 1.42 | 0.15 |
| IOTABUSD | -89.44 | 441 | 2.09 | 0.22 |
| AVABUSD | -89.41 | 439 | 5.40 | 0.57 |
| ASTRBUSD | -89.38 | 223 | 0.34 | 0.04 |
| XTZBUSD | -89.36 | 411 | 9.18 | 0.98 |
| PEOPLEBUSD | -89.29 | 331 | 0.22 | 0.02 |
| QTUMBUSD | -89.22 | 383 | 19.23 | 2.07 |
| ZRXBUSD | -89.20 | 384 | 1.68 | 0.18 |
| SNXBUSD | -89.17 | 429 | 15.89 | 1.72 |
| DOCKBUSD | -89.12 | 443 | 0.13 | 0.01 |
| ENSBUSD | -89.08 | 374 | 120.00 | 13.11 |
| ARBUSD | -89.07 | 379 | 91.24 | 9.97 |
| OXTBUSD | -89.03 | 374 | 0.79 | 0.09 |
| DATABUSD | -88.95 | 406 | 0.22 | 0.02 |
| BELBUSD | -88.88 | 401 | 3.58 | 0.40 |
| APEBUSD | -88.76 | 205 | 27.60 | 3.10 |
| BATBUSD | -88.46 | 356 | 1.93 | 0.22 |
| DIABUSD | -88.37 | 434 | 2.58 | 0.30 |
| PROMBUSD | -88.17 | 442 | 34.56 | 4.09 |
| MDTBUSD | -88.07 | 329 | 0.18 | 0.02 |
| STPTBUSD | -87.61 | 402 | 0.24 | 0.03 |
| RVNBUSD | -87.51 | 441 | 0.17 | 0.02 |
| UMABUSD | -87.49 | 263 | 13.35 | 1.67 |
| AAVEBUSD | -87.37 | 388 | 457.50 | 57.80 |
| NEXOBUSD | -87.29 | 204 | 5.65 | 0.72 |
| MULTIBUSD | -87.28 | 227 | 25.78 | 3.28 |
| ZECBUSD | -87.25 | 359 | 305.20 | 38.90 |
| NULSBUSD | -87.25 | 330 | 1.41 | 0.18 |
| FORTHBUSD | -87.20 | 384 | 22.35 | 2.86 |
| ONTBUSD | -87.08 | 439 | 1.33 | 0.17 |
| WOOBUSD | -87.04 | 284 | 0.96 | 0.12 |
| BCHBUSD | -87.01 | 439 | 804.00 | 104.40 |
| BIFIBUSD | -86.91 | 277 | 2702.50 | 353.80 |
| DASHBUSD | -86.90 | 440 | 269.10 | 35.25 |
| MASKBUSD | -86.87 | 357 | 22.60 | 2.97 |
| PHABUSD | -86.74 | 429 | 1.24 | 0.16 |
| TRIBEBUSD | -86.61 | 354 | 1.52 | 0.20 |
| CITYBUSD | -86.35 | 374 | 34.95 | 4.77 |
| EOSBUSD | -86.11 | 439 | 6.43 | 0.89 |
| STRAXBUSD | -86.01 | 440 | 3.23 | 0.45 |
| TRBBUSD | -85.96 | 371 | 80.04 | 11.24 |
| COCOSBUSD | -85.93 | 351 | 3.28 | 0.46 |
| YFIBUSD | -85.93 | 440 | 43887.68 | 6173.00 |
| IQBUSD | -85.87 | 407 | 0.03 | 0.00 |
| UFTBUSD | -85.67 | 437 | 1.72 | 0.25 |
| CAKEBUSD | -85.51 | 448 | 26.21 | 3.80 |
| MTLBUSD | -85.43 | 438 | 4.79 | 0.70 |
| ANTBUSD | -85.26 | 322 | 14.30 | 2.11 |
| AGIXBUSD | -84.85 | 36 | 0.26 | 0.04 |
| ATMBUSD | -84.80 | 442 | 19.94 | 3.03 |
| PHBBUSD | -84.77 | 67 | 2.56 | 0.39 |
| POWRBUSD | -84.77 | 363 | 0.96 | 0.15 |
| ALPACABUSD | -84.59 | 447 | 1.44 | 0.22 |
| BALBUSD | -84.58 | 441 | 35.68 | 5.50 |
| LINKBUSD | -84.07 | 374 | 38.32 | 6.10 |
| BANDBUSD | -83.87 | 439 | 11.44 | 1.84 |
| LTCBUSD | -83.70 | 375 | 389.00 | 63.39 |
| PSGBUSD | -83.55 | 447 | 39.57 | 6.51 |
| UTKBUSD | -83.40 | 350 | 0.55 | 0.09 |
| VIBBUSD | -83.26 | 64 | 0.28 | 0.05 |
| BARBUSD | -83.20 | 422 | 24.65 | 4.14 |
| LSKBUSD | -83.12 | 352 | 4.59 | 0.78 |
| ACMBUSD | -83.09 | 430 | 16.62 | 2.81 |
| GBPBUSD | -82.58 | 304 | 6.85 | 1.19 |
| MKRBUSD | -82.43 | 449 | 3791.00 | 666.00 |
| AERGOBUSD | -82.43 | 440 | 0.60 | 0.11 |
| XNOBUSD | -82.40 | 248 | 3.33 | 0.59 |
| TFUELBUSD | -82.36 | 282 | 0.25 | 0.04 |
| JUVBUSD | -82.25 | 408 | 20.56 | 3.65 |
| JSTBUSD | -82.22 | 233 | 0.12 | 0.02 |
| NMRBUSD | -82.10 | 427 | 62.81 | 11.24 |
| UNIBUSD | -81.64 | 443 | 31.42 | 5.77 |
| XLMBUSD | -79.84 | 374 | 0.44 | 0.09 |
| AMBBUSD | -79.64 | 67 | 0.05 | 0.01 |
| SFPBUSD | -79.03 | 401 | 3.16 | 0.66 |
| FIROBUSD | -78.93 | 126 | 7.45 | 1.57 |
| ATOMBUSD | -77.97 | 425 | 44.78 | 9.86 |
| PUNDIXBUSD | -77.60 | 176 | 1.67 | 0.37 |
| SNMBUSD | -77.50 | 68 | 0.90 | 0.20 |
| OPBUSD | -77.04 | 171 | 3.88 | 0.89 |
| USTCBUSD | -77.04 | 143 | 0.10 | 0.02 |
| CTKBUSD | -76.89 | 353 | 3.28 | 0.76 |
| MBLBUSD | -76.23 | 204 | 0.01 | 0.00 |
| BTCBUSD | -75.91 | 374 | 69020.00 | 16627.94 |
| DOGEBUSD | -75.25 | 387 | 0.34 | 0.08 |
| ETHBUSD | -75.17 | 374 | 4867.36 | 1208.34 |
| ETCBUSD | -75.11 | 439 | 77.38 | 19.26 |
| POLYXBUSD | -74.98 | 33 | 0.52 | 0.13 |
| BLZBUSD | -74.00 | 87 | 0.22 | 0.06 |
| QNTBUSD | -73.38 | 434 | 429.70 | 114.40 |
| XRPBUSD | -73.30 | 439 | 1.42 | 0.38 |
| ALPINEBUSD | -73.14 | 246 | 11.91 | 3.20 |
| AKROBUSD | -72.90 | 126 | 0.01 | 0.00 |
| LOOMBUSD | -72.77 | 68 | 0.17 | 0.05 |
| DREPBUSD | -72.20 | 176 | 0.96 | 0.27 |
| ASRBUSD | -72.12 | 164 | 9.95 | 2.77 |
| GTOBUSD | -70.97 | 124 | 0.04 | 0.01 |
| MATICBUSD | -70.50 | 327 | 2.92 | 0.86 |
| OGBUSD | -70.05 | 93 | 9.77 | 2.93 |
| GHSTBUSD | -69.49 | 359 | 3.33 | 1.02 |
| CVCBUSD | -69.45 | 96 | 0.31 | 0.09 |
| NKNBUSD | -67.04 | 91 | 0.23 | 0.08 |
| KEYBUSD | -66.94 | 135 | 0.01 | 0.00 |
| STEEMBUSD | -66.58 | 133 | 0.50 | 0.17 |
| LDOBUSD | -66.17 | 194 | 3.55 | 1.20 |
| STGBUSD | -64.31 | 85 | 1.15 | 0.41 |
| NEBLBUSD | -63.43 | 37 | 3.47 | 1.27 |
| CHZBUSD | -61.85 | 385 | 0.66 | 0.25 |
| REIBUSD | -61.83 | 149 | 0.06 | 0.02 |
| GLMBUSD | -61.73 | 68 | 0.55 | 0.21 |
| PROSBUSD | -61.72 | 64 | 2.68 | 1.03 |
| TRXBUSD | -60.21 | 369 | 0.13 | 0.05 |
| BNBBUSD | -59.55 | 377 | 669.70 | 270.90 |
| QKCBUSD | -59.29 | 22 | 0.02 | 0.01 |
| XMRBUSD | -58.65 | 439 | 321.90 | 133.10 |
| SANTOSBUSD | -55.33 | 55 | 22.66 | 10.12 |
| ARKBUSD | -54.95 | 72 | 0.60 | 0.27 |
| SSVBUSD | -53.34 | 67 | 20.79 | 9.70 |
| GASBUSD | -47.33 | 27 | 3.97 | 2.09 |
| BNXBUSD | -46.33 | 380 | 289.00 | 155.10 |
| LAZIOBUSD | -46.14 | 379 | 14.40 | 7.76 |
| SNTBUSD | -44.82 | 36 | 0.04 | 0.02 |
| OSMOBUSD | -40.64 | 22 | 1.87 | 1.11 |
| GMXBUSD | -37.82 | 45 | 66.89 | 41.59 |
| PORTOBUSD | -33.90 | 211 | 8.50 | 5.62 |
| BETHBUSD | -32.29 | 69 | 1729.99 | 1171.40 |
| VITEBUSD | -19.17 | 1 | 0.03 | 0.02 |
| TWTBUSD | -17.09 | 5 | 2.74 | 2.27 |
| PAXGBUSD | -16.04 | 256 | 2070.00 | 1738.00 |
import matplotlib
summarydf.reset_index().plot.bar(x='coin/token', y='drawdown %', figsize=(50,10))#, color=["#F699CD"]) # wanted to use red-isdh tone to indicate drawdown but too painful on the eye
<AxesSubplot: xlabel='coin/token'>