How We Do Things
We continuously fetch transactions and events in order to determine NFT movements and sales across supported marketplace(s) and collections' smart contracts (currently via Etherscan). We collect data on transactions, current prices, NFT properties, etc. and store them in our systems. We try to add additional properties such as rarity rank or additional properties that are not on the smart contracts (where possible).
Our in-house developed Machine Learning (ML) pipeline pre-processes, engineers new features and optimizes model hyper-parameters to deliver fine-tuned models, based on the sales' patterns and accompanying metadata of each individual collection.
We are actively looking into adding new collections to our website. Our statistic and valuations are based on what we currently support and show and not representative of the whole NFT space out there. Please note that even with supported collections, some data may be incomplete as we do not support every marketplace right now (please see Supported Marketplace(s) for more)
NFTi (Powered by an ensemble of ML models)
We serve NFTi valuations at least at a daily rate by combining the outputs of multiple ML models in an ensemble, in order to capture any edge cases not covered by individual models. Each collections employs such an ensemble, leading to a multitude of models being trained and served daily, at a massive scale. Specifically, a set of these models is allowed to extrapolate, i.e. value tokens beyond their observed sale prices within groups (metadata-driven) and individually. Another set employs interpolation, i.e. is constrained within the observed sales prices. This allows us the flexibility to more reliably value highly sought after tokens (1/1s or w/ high property rarity) with the latter approach, while also being able to value less desirable tokens closer to the floor with the former.
NFTi is updated in two schedules to maintain highly relvenat valuations across the site.
The first update cycle runs daily at 12AM UTC and considers all collections unconditionally. The second cycle runs at a bi-hourly basis, but filters out low trading activity collections in regards to the total volume traded. Specifically, we compare the trading volume generated within bi-hourly windows and the previous day for a given collection. If the former accounts for at least 5% of the latter, we consider this collection for an NFTi update.
Scheduled model re-training on Mondays will disrupt the second cycle, with at least one bi-hourly update being missed. This is because of the immutability of models while deployed, to avoid any unexpected behaviour. We work towards eliminating any disruptions to this by maintaining multiple model replicas and implementing model updates that will not interfere with ML pipelines during runtime.
Adjusted Floor Market Capitalization (AF Market Cap)
AF Market Cap is the sum of each token’s Adjusted Floor in a given collection. The adjusted floor for each token is the highest value of its properties’ adjusted floor which can be calculated as follows:
For each property, find the cheapest token that is currently on sale:
- If no token with a given property is available for sale, then take the higher of “last sale for that property” and “last sale for the collection” (Note: this addresses cases like rare properties so the collection is not undervalued)
- If a property’s adjusted floor value is more than 5 times the higher of “last sale for that property” and “last sale for the collection”, it will be set to this value instead.
The prices are fetched from the Supported Marketplace(s).
NFTi Market Capitalization (NFTi Market Cap)
NFTi is primarily served as is. There are rare edge cases where our models exceed AF manyfold, in which case they are equated to AF to avoid erroneous Market Cap reporting. The Market Cap is the sum of tokens’ NFTi.
Significant Discrepancies between Adjusted Floor and NFTi
Conceptually, adjusted floor and NFTi are not designed to come to result in the exact same valuation as they are very different from the other. So it is expected for these two valuations to be different however ideally they should not be in a complete disagreement.
A notable discrepancy between the two valuation methods may exist in some cases. This means that the two methods do not agree and provide a valuation very different to the other method. In some instances, this is not a problem or a "bug" since it is simply the methods doing what they are designed to do. However, in other instances, this could in fact be a bug and we would be looking into improvements.
First, let's explore the instances where this discrepancy is acceptable. As explained above, the adjusted floor method values NFTs based on their most valuable trait based on the floor places at the time. This can result in the algorithm over-valuing an NFT if the trait has an unreasonable floor price. An example of this can be seen in the Meridian by Matt DesLauriers collection from Art Blocks Factory. At the time of writing, if we look at the Charcoal Meridians we can see that they're all valued at Ξ999.00 by the adjusted floor method while the NFTi method values them at around Ξ65.00. Altough the two methods are in major disagremeent with eachother regarding what the value of these NFTs are, they are simply providing valuations based on how they were designed. We can confirm this by looking at the cheapest available Charcoal Meridian which at the time of writing is Ξ999.00.
The above instance typically happens with smaller collections or NFTs that are unique in the sense that they have a trait which is a 1/1 or has a very small supply. (i.e. There are only 9 Charcoal Meridians in existence)
On the other hand, there are cases where such discrepancy is not acceptable and adjustments must be made from our side to improve it. We automatically flag these cases and are continuously working on improvements for both valuation methods. An example of this is the valuation for Chromie Squiggle #9394 where NFTi is Ξ5.51 and adjusted floor is Ξ300.00. This particular squiggle is not a rare or unique one, in fact, it is ranked #8962 based on rarity. However, the adjusted floor is significantly over-valuing it. This was an issue regarding numerical properties that would influence the valuations negatively. Some NFTs have numerical properties such as the "End Color" of Chromie Squiggles which is a value between 0 and 255 indicating what color the squiggle ends at. Since this property category has so many values (256 of them), it ends up confusing adjusted floor as it creates the illusion that the NFT has a rare property. (i.e. Squiggle #9394 has "End Color" 78 which has a rarity of 0.48%) This problem was fixed by identifying property categories that are numerical and ignoring them for valuations.
Percentage For Sale (% For Sale)
This is the proportion of tokens currently offered for sale relative to the total number of available tokens in a collection.
Example: CryptoPunks has 10,000 NFTs in total. If at this point in time, there are 2,000 punks for sale, the “% For Sale” of CryptoPunks is 20%.
Some may look at the complement of the sale percentage ( 100% - SalePercentage ) as the ‘Believer Ratio’ as an indicator of owners’ willingness to sell or belief that the current market is undervalued for their tokens.
The floor of a collection is the cheapest NFT that can be purchased from that collection at that point in time. The floor is derived only from their current sale price (asking price) which is what current owners are asking to sell their NFT which is currently fetched from the Supported Marketplace(s).
Example: If in a collection, the lowest sale price is 10 Ethereum and a rare property’s lowest price is 32 Ethereum, then the Collection Floor is 10 Ethereum and that rare property’s floor is 32 Ethereum.
Once we have imported a collection, we calculate the Historic AF and Historic Floor prices for the collection's lifetime. The calculations are done hourly based on the active listings of the given period for the supported Marketplaces.
Currently Floor data are being updated in near-real time. Please note that Floor data are syncing with a 15 minute delay. This was necessary to account for the blockchain block reorganization
There are cases where some listings remain active even though they should have ended, either by Sale, Transfer or any other action. This might happen for several reasons, i.e. blockchain block re-organization, sale events out of order etc. In these cases, the floor values and charts on our website will have long flat lines for the floor values. We are aware of it and are continuously working on improving these values.
Volume is a measure of how much a collection has traded in a specific period of time. With NFTs, the volume is more often than not measured in Ethereum. Volume can be a great indicator of market strength.
The typical time periods that you will see for volume are:
- 24 Hours
- 7 Days
- 30 Days
- All time
These periods help provide an insight into the state of the collection over time.
Another great metric with volume is the Volume Change which is measured in percentage. This metric helps understand how the collection has changed over specific periods.
- 24 Hours (Comparing the last 24 hours with the 24 hours before that)
- 7 Days (Comparing the last week to the week before that)
- 30 Days (Comparing the last month to the month before that)
Transactions are currently derived from original contracts as well as the Supported Marketplace(s). Currently there are 4 possible types of transactions:
- Transfer: Transferring ownership of token(s) from current owner to the new one
- Sale: Registered sale of token(s) (commonly on marketplace and in some cases the contract) for a price
- Note: All non-Ethereum transactions are converted to Ethereum based on their exchange rate at the time of transactions. In some cases where the exchange ratio is not available, no conversion is done and there is no equivalent value in Ethereum.
- Mint: Initial ownership claim over token(s)
- External Transfer: These are transactions that took place on a contract other than the token’s original contract or Supported Marketplace(s). They can be potential sales, swaps, or transfers.
Currently we get our pricing information from OpenSea, except for CryptoPunks where the pricing data come from their contract.