Unlike fungible tokens, NFTs lack real-time pricing due to their non-fungibility and illiquidity. Prices are typically referenced to the floor price, which lacks item-level granularity. This makes it difficult to price non-floor-valued NFTs for trading or lending.
Specifically, in these applications:
There is a lack of a credibly neutral and fair price at the item level.
Many applications try to provide pricing services via ML models, but the complexity and lack of transparency make it hard to gain trust and consensus.
This article attempts to provide real-time NFT pricing with a simple and interpretable algorithm. It also proposes an oracle mechanism for stakeholders to participate fairly in price discovery. It follows principles of credible neutrality 5 with minimal objective data and simple, understandable, and robust models for easy adoption.
Through observations of large amounts of blue-chip NFT transaction data, we find that the value of traits is roughly constant relative to the floor price. When the floor price rises and falls, the absolute premium of each trait will fluctuate accordingly, but the ratio to floor price remains stable. This means the relative premium relationships between traits are stable. We refer to premium of a NFT trait over floor price as the trait premium. We therefore hypothesize:
Thus, we propose the Premium Model. The core formula underpinning the Premium Model is expressed as:
Here:
After a simple transformation, (1) yields
We used:
to train a separate model for each collection.
Whenever a transaction occurs, we record the on-chain sale price, as well as the model’s predicted price at that moment. We compiled the latest 100 transactions, and calculated the average accuracy. We tested the model on blue-chip collections and employed Mean Absolute Percentage Error (MAPE) as evaluation metric. Here is the test result.
The fact that time range selected for training data spans two years and a high accuracy rate is obtained on the lastest 100 transactions, indicates the assumption that the average premium ratio between different traits represents the value well holds true for most blue chip collections.
The following list is the trait weights for trait Fur of the collection BAYC.
It can be seen that the trait weights of the most valuable, Solid Gold Fur and Trippy Fur, are 9.3 times and 3.3 times the floor price, respectively, which are significantly higher than all other weights, while many ordinary traits have a weight of 0. These results are very consistent with our understanding of trait value.
Due to the low liquidity of rare NFTs and insufficient data collected, it is currently impossible to provide accurate accuracy data for rare NFTs. However, we can give a specific example to illustrate.
On October 15 2023, a transaction of Cryptopunks #8998 occurred. The transaction price was 57 ETH, and the floor price at that time was 44.95 ETH. We recorded the trait weights of #8998 at that time as follows:
The intercept of Cryptopunks was -0.03270.
So the valuation can be calculated from:
It is close to the transaction price, with an error within 5%.
However, not all rare NFTs can be priced so accurately. Due to unclear value, people often overestimate or underestimate when giving prices for rare NFTs, which introduces bias that objectively exists. Therefore, no matter how the NFT pricing algorithm is designed, there is always an upper limit on accuracy.
However, from the above data, we can see that the trait premiums calculated by this algorithm are significant in two aspects:
Although the algorithm aims to be as credibly neutral as possible, some issues remain:
To provide a credibly neutral on-chain price resistant to centralized manipulation, we design an oracle mechanism to achieve consensus.
It consists of a decentralized network of nodes:
As trait value ratios remain stable over time, it is unnecessary for trait weights to update frequently. Periodic weight updates from oracle nodes, combined with real-time floor pricing, maintain accurate real-time item-level NFT pricing.
However, if we choose not to use this model with weights, and instead only reach consensus on the final generated price, would it still work? Different pricing models can have a significant impact on the pricing results. The same rare NFT could be estimated at 120 ETH or 450 ETH. Taking the average or median in the presence of such a large bias would still introduce tremendous errors. However, the introduction of weights can largely ensure that the price fluctuation range remains small and provide logical explanations for the pricing origin.
We strongly believe that this pricing process should be as credibly neutral as possible; otherwise, it cannot become a consensus for all NFT traders. Throughout the entire design process, we have tried to adhere to the four basic principles of credible neutrality 5:
The introduction of trait weights is important. Most machine learning models are black boxes, lacking strong transparency, making it difficult to trust the resulting prices and impossible to reach a consensus. However, the introduction of trait weights makes prices easy to understand, giving each parameter a clear meaning: trait weights represent the ratio of trait premium to floor price, and intercept corrects the floor price and provides a base value for the collection. Trait weights are shared among each NFT price, just like traits are shared among each NFT.
Despite its strengths, some limitations exist:
The NFT price oracle has numerous applications, particularly in NFT lending, leasing, Automated Market Makers (AMMs), fractionalization, and other NFTfi applications. It can also serve as a reliable reference for peer-to-peer transactions.
The feature of linearity enables proportional fragmentation. Currently, NFT AMMs or fractionalization protocols use multiple pools for different NFT values, leading to fragmented liquidity. With stable price ratios, a new fragmentation approach can consolidate an entire collection into a single vault. In this setup, the collection’s ERC20 uniquely represents the entire collection.
For example, in the case of Bored Ape Yacht Club (BAYC):
When the BAYC floor price drops from 25 ETH to 12.5 ETH, 1 xBAYC drops in value from 0.1 ETH to 0.05 ETH. But their value ratio remains unchanged at 1044:255.
Price ratios remain constant despite changes in the floor price, allowing for fair fragmentation and redemption.
This work is greatly inspired by two articles written by @vbuterin . The article Credible Neutrality As A Guiding Principle 5 provides us with direction in establishing credibly neutral mechanisms. The article What do I think about Community Notes shows a concrete example on designing an algorithm following principles of credible neutrality.
But NFT pricing is different from Community Notes in that, since the price data in trading scenarios must be real-time and have zero risk of manipulation, open-sourcing the code alone is insufficient for true credible neutrality. An effective on-chain consensus mechanism must be established.
Unlike fungible tokens, NFTs lack real-time pricing due to their non-fungibility and illiquidity. Prices are typically referenced to the floor price, which lacks item-level granularity. This makes it difficult to price non-floor-valued NFTs for trading or lending.
Specifically, in these applications:
There is a lack of a credibly neutral and fair price at the item level.
Many applications try to provide pricing services via ML models, but the complexity and lack of transparency make it hard to gain trust and consensus.
This article attempts to provide real-time NFT pricing with a simple and interpretable algorithm. It also proposes an oracle mechanism for stakeholders to participate fairly in price discovery. It follows principles of credible neutrality 5 with minimal objective data and simple, understandable, and robust models for easy adoption.
Through observations of large amounts of blue-chip NFT transaction data, we find that the value of traits is roughly constant relative to the floor price. When the floor price rises and falls, the absolute premium of each trait will fluctuate accordingly, but the ratio to floor price remains stable. This means the relative premium relationships between traits are stable. We refer to premium of a NFT trait over floor price as the trait premium. We therefore hypothesize:
Thus, we propose the Premium Model. The core formula underpinning the Premium Model is expressed as:
Here:
After a simple transformation, (1) yields
We used:
to train a separate model for each collection.
Whenever a transaction occurs, we record the on-chain sale price, as well as the model’s predicted price at that moment. We compiled the latest 100 transactions, and calculated the average accuracy. We tested the model on blue-chip collections and employed Mean Absolute Percentage Error (MAPE) as evaluation metric. Here is the test result.
The fact that time range selected for training data spans two years and a high accuracy rate is obtained on the lastest 100 transactions, indicates the assumption that the average premium ratio between different traits represents the value well holds true for most blue chip collections.
The following list is the trait weights for trait Fur of the collection BAYC.
It can be seen that the trait weights of the most valuable, Solid Gold Fur and Trippy Fur, are 9.3 times and 3.3 times the floor price, respectively, which are significantly higher than all other weights, while many ordinary traits have a weight of 0. These results are very consistent with our understanding of trait value.
Due to the low liquidity of rare NFTs and insufficient data collected, it is currently impossible to provide accurate accuracy data for rare NFTs. However, we can give a specific example to illustrate.
On October 15 2023, a transaction of Cryptopunks #8998 occurred. The transaction price was 57 ETH, and the floor price at that time was 44.95 ETH. We recorded the trait weights of #8998 at that time as follows:
The intercept of Cryptopunks was -0.03270.
So the valuation can be calculated from:
It is close to the transaction price, with an error within 5%.
However, not all rare NFTs can be priced so accurately. Due to unclear value, people often overestimate or underestimate when giving prices for rare NFTs, which introduces bias that objectively exists. Therefore, no matter how the NFT pricing algorithm is designed, there is always an upper limit on accuracy.
However, from the above data, we can see that the trait premiums calculated by this algorithm are significant in two aspects:
Although the algorithm aims to be as credibly neutral as possible, some issues remain:
To provide a credibly neutral on-chain price resistant to centralized manipulation, we design an oracle mechanism to achieve consensus.
It consists of a decentralized network of nodes:
As trait value ratios remain stable over time, it is unnecessary for trait weights to update frequently. Periodic weight updates from oracle nodes, combined with real-time floor pricing, maintain accurate real-time item-level NFT pricing.
However, if we choose not to use this model with weights, and instead only reach consensus on the final generated price, would it still work? Different pricing models can have a significant impact on the pricing results. The same rare NFT could be estimated at 120 ETH or 450 ETH. Taking the average or median in the presence of such a large bias would still introduce tremendous errors. However, the introduction of weights can largely ensure that the price fluctuation range remains small and provide logical explanations for the pricing origin.
We strongly believe that this pricing process should be as credibly neutral as possible; otherwise, it cannot become a consensus for all NFT traders. Throughout the entire design process, we have tried to adhere to the four basic principles of credible neutrality 5:
The introduction of trait weights is important. Most machine learning models are black boxes, lacking strong transparency, making it difficult to trust the resulting prices and impossible to reach a consensus. However, the introduction of trait weights makes prices easy to understand, giving each parameter a clear meaning: trait weights represent the ratio of trait premium to floor price, and intercept corrects the floor price and provides a base value for the collection. Trait weights are shared among each NFT price, just like traits are shared among each NFT.
Despite its strengths, some limitations exist:
The NFT price oracle has numerous applications, particularly in NFT lending, leasing, Automated Market Makers (AMMs), fractionalization, and other NFTfi applications. It can also serve as a reliable reference for peer-to-peer transactions.
The feature of linearity enables proportional fragmentation. Currently, NFT AMMs or fractionalization protocols use multiple pools for different NFT values, leading to fragmented liquidity. With stable price ratios, a new fragmentation approach can consolidate an entire collection into a single vault. In this setup, the collection’s ERC20 uniquely represents the entire collection.
For example, in the case of Bored Ape Yacht Club (BAYC):
When the BAYC floor price drops from 25 ETH to 12.5 ETH, 1 xBAYC drops in value from 0.1 ETH to 0.05 ETH. But their value ratio remains unchanged at 1044:255.
Price ratios remain constant despite changes in the floor price, allowing for fair fragmentation and redemption.
This work is greatly inspired by two articles written by @vbuterin . The article Credible Neutrality As A Guiding Principle 5 provides us with direction in establishing credibly neutral mechanisms. The article What do I think about Community Notes shows a concrete example on designing an algorithm following principles of credible neutrality.
But NFT pricing is different from Community Notes in that, since the price data in trading scenarios must be real-time and have zero risk of manipulation, open-sourcing the code alone is insufficient for true credible neutrality. An effective on-chain consensus mechanism must be established.