An open-source rarity model by NFTGo

Introducing GoRarity


As we all know, each NFT is irreplaceable and differs from one another. NFTs with different rarities are placed differently on the rarity ranking, which in turn affects their value in the market. In a collection, NFTs with different rarities often have different prices. Therefore, problems such as the determination of rarity and the evaluation of NFT value by rarity have become increasingly critical to solve.

There are many ways to calculate "NFT rarity" in the NFT industry, but these rarities have significant differences and algorithmic problems. In order to give a more objective and accurate rarity ranking to our users, NFTGo, in the spirit of openness and compatibility of Web3, will release GoRarity, an open source rarity calculation model based on numerical models.

Defining rarity

Before the advent of rarity scores, how was rarity generally rated? Some project creators provided subjective traits rating scales, which often had no uniform criteria because the subjective opinions of project creators were involved. That is, each project owner defined its own rarity model. For example, take a look at the following table of characteristics officially published by Doodles.


Doodles Traits & Rarities.

Later, models such as GoRarity emerged, which categorizes characteristics by code and then uses mathematical models to calculate rarity levels. This approach places more emphasis on the data aspects of an NFT and is much more objective and transparent.


Rarity of BAYC #9622. (Source: NFTGo)

Objectives of GoRarity

In terms of the determination of NFT rarity, GoRarity has the following characteristics:

Decentralized and automatic

A mathematical model that does not rely on a subjective scoring system has been developed using statistics and smart contracts, allowing the automatic generation of rarity rankings by plugin. By checking the GoRarity ranking, we can prevent malicious hype presented through the subjectivity of project creators and ensure a decentralized NFT valuation.

Objective and scientific

GoRarity is more true-to-data, this rarity determining process of "on-chain data - mathematical model - rating analysis" is able to eliminate the unreasonable rating gap caused by subjective impression. (We understand that users are entitled to their own aesthetic preferences, but in the Web3 space, we do still need a scientific valuation from the data aspect.)

An evaluation method more suitable for NFTs

The NFT market is dominated by PFP projects, such as 10k PFPs, which account for the majority of the NFT market share. The most important feature of these projects is that they are able to adopt common thematic beliefs to form a collection of 10,000 different NFTs, with each NFT being a unit of the whole. GoRarity uses algorithms such as Jaccard distance and normalization, which are better at reflecting the relevance of an individual NFT to its original collection.

Calculation of GoRarity

In general, other synonyms for rare are special and unique. Whether a thing is rare or not depends mainly on how different it is from other things in the group. The greater the difference, the more special and rare the thing is. This means that if we're able to quantify the difference between an item and the rest of its group, we will be able to tell its rarity. NFTGo has developed a more scientific way to evaluate the rarity of NFTs based on this principle — a Jaccard distance-based rarity scale.

What is Jaccard distance?

Jaccard distance is a statistical method used to measure dissimilarity between sample sets ranging from 0 to 1. Its mathematical formula is as below.


Jaccard distance is a common data science measure used to calculate the dissimilarity between objects. Its logic looks similar to that of a Venn diagram, measuring the size of the intersection between sample sets.

The calculation of GoRarity

NFTGo calculates the similarity of NFT traits based on Jaccard distance. As an example, let's calculate the rarity score of BAYC#1154:

  • Calculate the Jaccard distance between #1154 and the other 9999 NFTs in the collection.
  • Calculate the average of the Jaccard distances, which gives the initial data for the rarity score.
  • Process the data from the previous step using the normalization method. The mathematical formula used is:
  • Multiply the z-score by 100 to get the final rarity score for BAYC#1154. The score is then ranked in a set (rarity scores range from 0 to 100) to get the final rarity ranking for that NFT.

Why use GoRarity?

A more accurate reflection of true rarity

Many models for rarity calculation are available on the market. For example, OpenRarity chooses to use Information Content (IC) as a way to assess the probability of expression of rarity, while rarity.tools chooses to summarize the inversed percentage of the frequency in which each trait appears.

Experimental comparisons show that the rarity scores of other tools may overestimate or underestimate the rarity of an NFT, while GoRarity gives more reasonable results in these cases.

The following table shows the rarity evaluation models of GoRarity, OpenRarity, rarity.tools and NFTEXP, when calculating the rarity ranking of NFTs of the Bored Ape Yacht Club (BAYC) collection.


Comparison of rarity rankings across tools. (Source: NFTGo)

The fact that people have the same offer price for several NFTs in one collection often means that these NFTs are ranked close to each other in terms of rarity. We found that among the 15 BAYCs that share the same highest offer price, the ranking similarities of GoRarity and OpenRarity are considerably better than those of rarity.tools and NFTExp.io. Also in the comparison of some specific extreme values, GoRarity performs better.


Comparison of rarity rankings across tools. (Source: NFTGo)

Also in the comparison of some specific extreme values, GoRarity performs better. As shown in the chart above, GoRarity's rarity ranking is more advanced than OpenRarity's for #8027/#6583/#466, which have recently sold at the top price ranking.

To illustrate better, we will take rarity.tools as an example.

Taking BAYC #947 as an example, NFTGo ranks it as #9994, which is almost the least rare of all apes, with a rarity of 406. However, rarity.tools ranks it at #998, with a rarity score of 152.12. This is because rarity.tools simply summarizes each trait and the number of traits (yet it actually has no additional special traits). As shown in the figure below, this monkey has no special traits. According to the rarity formula provided by rarity.tools, apes with four traits would be relatively rarer than apes with six traits, which doesn't really make much sense.


rarity.tools and NFTGo's rarity score for BAYC #947.

Looking at BAYC #2832 and BAYC #8742, it is clear that BAYC #2832 should be rated higher because of its diverse traits. Also, BAYC #8742 has a higher top offer than BAYC #2832, so it might be more profitable to buy BAYC #2832, but its rarity is underestimated by rarity.tools.


Scoring details by rarity.tools for BAYC #2832 and BAYC #8742


Scoring details by NFTGo for BAYC #2832 and BAYC #8742

The chart above shows NFTGo's rarity ratings for BAYC #2832 and BAYC #8742. As you can see from the "Traits” section on the right side of the page, BAYC #2832's traits fluctuate between 1% and 3% (even rarer than BAYC #1154). On the other hand, the lowest value for BAYC #8742 is 12.42. Without a doubt, NFTGo's rarity score is more justifiable than rarity.tools’.

Moreover, the difference between the rarity scores of CryptoPunks given by rarity.tools and NFTGo is also able to reflect the accuracy. Among the top 20 CryptoPunks ranked by rarity.tools v2, nearly half of them are featureless. Conversely, NFTGo puts these NFTs in a lower ranking because these zero-trait Punks lack diversity and deserve a lower rarity score and ranking.


Top-ranking CryptoPunk NFTs on rarity.tools and NFTGo


Rarity scores are helpful when it comes to buying or selling NFTs. While the rarity model we use is statistically correct, different NFT project creators will give announcements about the greater importance of certain attributes. There are other ways to determine the value of an NFT asset, such as art appreciation value or liquidity premium. Furthermore, you may even prefer a green background to a red background, which is influenced by your subjective aesthetic preferences.

Calculating the collective difference of an NFT asset based on Jaccard distance helps users discover the collective difference of NFTs and actually quantifies the concept of "rarity" in a more fundamental way. You can now view the rarity rankings and rarity scores of all NFTs on NFTGo, and hopefully GoRarity will help you make more informed decisions when trading NFTs.

Our open source code: https://github.com/NFTGo/GoRarity
If you have any comments or suggestions about the GoRarity model, feel free to email us at [email protected] or submit your feedback on GitHub