Which is More Suitable for Bottom Fishing, Low Market Value or Low Price?
Tags: market, trading, fmzquant, fishing
Published: 2024-05-28 06:47:04

The previous articles https://www.fmz.com/digest-topic/10286 and https://www.fmz.com/digest-topic/10292 discussed the correlation between cryptocurrency price fluctuations and Bitcoin, as well as the impact of launching perpetual contracts on prices. This article will continue to explore another important factor affecting coin prices - market value. Readers familiar with quantitative trading should know that there is a most effective factor in the A-share market - small market value. The performance of small-cap stock rotation is very counter-intuitive, far exceeding various indicators, those interested can find out for themselves. So how does the price performance of small-cap or low-priced digital currencies look?

### Data Processing and Collection
This section uses the same data as the previous few articles, so it won't be repeated here.

### Performance of Low-Priced Currencies
Low-priced currencies usually refer to digital currencies with lower unit prices. These currencies are more attractive to small investors due to their low prices. Most people only see many zeros in the price but don't care much about the market value. Each unit reduction (zero) means that the price is multiplied by 10, which is very attractive to some people, but it may also be accompanied by higher price volatility and risk.

As usual, let's first look at the performance of the index, with two bull markets at the beginning and end of the year. Every week we select the 20 lowest priced currencies, and the results are very close to those of indicators, indicating that low prices do not provide too much additional return.

```
h = 1
lower_index = 1
lower_index_list = [1]
lower_symbols = df_close.iloc[0].dropna().sort_values()[:20].index
lower_prices =  df_close.iloc[0][lower_symbols]
date_list = [df_close.index[0]]
for row in df_close.iterrows():
    if h % 42 == 0:
        date_list.append(row[0])
        lower_index = lower_index * (row[1][lower_symbols] / lower_prices).mean()
        lower_index_list.append(lower_index)
        lower_symbols = row[1].dropna().sort_values()[:20].index
        lower_prices = row[1][lower_symbols]
    h += 1
pd.DataFrame(data=lower_index_list,index=date_list).plot(figsize=(12,5),grid=True);
total_index.plot(figsize=(12,5),grid=True); #overall index
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nuh552uxjqyecrpa46cv.png)

### Performance of Small Market Cap Currencies
Due to the constantly changing circulation, the market value calculation here uses the total supply volume, with data sourced from Coincapmarket. Those who need it can apply for a key. A total of 1000 currencies with the highest market values were selected. Due to naming methods and unknown total supplies, we obtained 205 currencies that overlap with Binance perpetual contracts.
```
import requests

def get_latest_crypto_listings(api_key):
    url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?limit=1000"
    headers = {
        'Accepts': 'application/json',
        'X-CMC_PRO_API_KEY': api_key,
    }

    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        return response.json()
    else:
        return f"Error: {response.status_code}"

# Use your API key
api_key = "xxx"
coin_data = get_latest_crypto_listings(api_key)
supplys = {d['symbol']: d['total_supply'] for d in coin_data['data']}
include_symbols = [s for s in list(df_close.columns)  if s in supplys and supplys[s] > 0 ]
```
An index is drawn from the 10 cryptocurrencies with the lowest market value each week, and compared with the overall index. It can be seen that small-cap cryptocurrencies performed slightly better than the overall index in the bull market at the beginning of the year. However, they started to rise ahead of time during September-October's sideways movement, and their final increase far exceeded that of the total index.

Small-cap cryptocurrencies are often considered to have higher growth potential. Because their market values are low, even relatively small inflows of funds can cause significant price changes. This potential for high returns attracts investors and speculators' attention. When there is a stir at bottom markets, due to less resistance to rise, small-cap currencies often take off first and may even indicate that a general rising bull market is about to begin.

```
df_close_include = df_close[include_symbols]
df_norm = df_close_include/df_close_include.fillna(method='bfill').iloc[0] #Normalization
total_index = df_norm.mean(axis=1)
h = 1
N = 10
lower_index = 1
lower_index_list = [1]
lower_symbols = df_close_include.iloc[0].dropna().multiply(pd.Series(supplys)[include_symbols], fill_value=np.nan).sort_values()[:N].index
lower_prices =  df_close_include.iloc[0][lower_symbols]
date_list = [df_close_include.index[0]]
for row in df_close_include.iterrows():
    if h % 42 == 0:
        date_list.append(row[0])
        lower_index = lower_index * (row[1][lower_symbols] / lower_prices).mean()
        lower_index_list.append(lower_index)
        lower_symbols = row[1].dropna().multiply(pd.Series(supplys)[include_symbols], fill_value=np.nan).sort_values()[:N].index
        lower_prices = row[1][lower_symbols]
    h += 1
pd.DataFrame(data=lower_index_list,index=date_list).plot(figsize=(12,5),grid=True);
total_index.plot(figsize=(12,5),grid=True);
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jtn2bs84ksde3lpdexo5.png)

### Summary
This article, through data analysis, found that low-priced currencies did not provide additional returns and their performance was close to the market index. The performance of small market cap currencies significantly exceeded the overall index increase. Below is a list of contract currencies with a market value less than 100 million U for reference, even though we are currently in a bull market.

'HOOK': 102007225,
'SLP': 99406669,
'NMR': 97617143,
'RDNT': 97501392,
'MBL': 93681270,
'OMG': 89129884,
'NKN': 85700948,
'DENT': 84558413,
'ALPHA': 81367392,
'RAD': 80849568,
'HFT': 79696303,
'STMX': 79472000,
'ALICE': 74615631,
'OGN': 74226686,
'GTC': 72933069,
'MAV': 72174400,
'CTK': 72066028,
'UNFI': 71975379,
'OXT': 71727646,
'COTI': 71402243,
'HIGH': 70450329,
'DUSK': 69178891,
'ARKM': 68822057,
'HIFI': 68805227,
'CYBER': 68264478,
'BADGER': 67746045,
'AGLD': 66877113,
'LINA': 62674752,
'PEOPLE': 62662701,
'ARPA': 62446098,
'SPELL': 61939184,
'TRU': 60944721,
'REN': 59955266,
'BIGTIME': 59209269,
'XVG': 57470552,
'TLM': 56963184,
'BAKE': 52022509,
'COMBO': 47247951,
'DAR': 47226484,
'FLM': 45542629,
'ATA': 44190701,
'MDT': 42774267,
'BEL': 42365397,
'PERP': 42095057,
'REEF': 41151983,
'IDEX': 39463580,
'LEVER': 38609947,
'PHB': 36811258,
'LIT': 35979327,
'KEY': 31964126,
'BOND': 29549985,
'FRONT': 29130102,
'TOKEN': 28047786,
'AMB': 24484151

From: https://blog.mathquant.com/2023/12/04/which-is-more-suitable-for-bottom-fishing-low-market-value-or-low-price.html