Utility tokens: discussion, economic model and simulation in R

This post has been originally published in HackerNoon. Click here to read the original.

Last fall I was hired to build an economic model for token-curated registries as part of my consulting job. Since then, I encountered many people who expressed interest in this model, so I decided to share the basic theory and implementation.


1. Philosophical introduction

To skip to the model click here

The great expositive summary of Token economy can be found on Wikipedia, so I will dive into my points straight away.

As I see it, a token economy is an attempt to quantify life and give a price to everything. This aligns perfectly with classical economic thinking, where even externalities, such as air pollution, can be compensated by sufficient taxes.

Wikipedia says that tokens have been successfully used at schools and psychiatric hospitals, but the recent resurgence in interest has begun with the cryptocurrency rush. Since the creation of universally accepted token was problematic before, nobody tried to tie all services to some price. However, the open source blockchain algorithms made this process really easy and suddenly many people decided that it is a good idea to tokenize (read monetize) literally everything.

Being an economist myself, I believe that this thinking is terribly wrong. I understand where it comes from — everybody took Econ 101 at some point and was inspired by elegance of invisible hand models. But I also know that free market is not the only mechanism out there. Centralized matching mechanisms, social planner’s problem, lotteries all exist for a reason. Not every equilibrium is efficient. Sadly, not everybody takes advanced econ courses, while almost everybody wants to profit from ICO’s.

Not every equilibrium is efficient

Of course, tokens can be justified in appropriate cases. Actually, the great working area for tokens is online games, where every crystal is given a price and has an obvious value to players. In general, whenever any kind of labor is involved, a money making procedure is good. Otherwise, it is some kind of rent seeking.

Ryan Selkis of Messari greatly summarized the difference between bubble and utility tokens, and explained why he believes the former will be worthless in the long run. I will go even further and claim that most so-called utility tokens are as well bubbles and don’t give any extra utility.


Below I reviewed a couple of examples that appear in the first results page when you google utility tokens.

Datum claims to help users to prevent social networks from collecting their data “for free” and sell it for money instead, i.e. “take control” of their information. This certainly sounds fun, but it totally neglects the fact that Facebook or Youtube are already providing a great service for free in exchange for collecting users’ data, moreover they offer all kinds of privacy settings for all their users. It is a fair trade. What Datum wants is to take those services for granted and try to profit from that, providing no utility whatsoever.

Talenthon wants to make another LinkedIn but to replace reputational structure with token structure and give tokens for truthful references. That’s wrong on many levels, including:

  • impossibility to quantify references
  • possibility that worker can change, making references obsolete
  • the assumption that businessmen would care about tokens more than they care about their reputation

This is exactly what I meant above, when I said that monetary relationships are not always efficient. And finally, these people hypocritically encourage openness and decentralization while using proprietary algorithms.

The right decision is to only decentralize those services that actually support the decentralization.

Another issue with token-backed decentralization is that historically every decentralization was tightly related to disruption, hippie philosophy, anarchy. All examples of successful decentralization used to be altruistic and didn’t involve monetary goals. Decentralized apps (DAPPs) I care for are BitTorrent, Wikipedia, Linux, GNU Project, OpenStreetMap etc.

Decentralized projects used to be the very definitions of trust-based systems, where corporations like Apple would be put to shame by the community for not contributing code back to BSD but still get away with it, and nobody would attempt to financially incentivize them to do so.

These old days, which most of us still remember, should raise everyone’s concerns about the longevity of trustless structures.

There are, however, appropriate use cases for tokens and some developers get this.

AdChain does this well by aiming at a peculiar area — ranking ads services. This is compatible with token system and is not something that has already been done on a massive scale.

Filecoin does even better job by providing a service of renting storage space, which works at the same time as a mining tool via proof-of-storage. They have problems with modelling incentives but at the end of the day they provide legit utility and thus are not bubbles.

In this article I will try to build an economic model for exactly those utility tokens.

2. Model summary

This economic model of tokens is very generic, so that it can work as a blueprint for future token creators and as a reasonable abstraction for applied economists.

Ideally, this model can also serve as a guideline for writing whitepapers.

In case you have skipped the previous section, let me remind you that utility tokens are any tokens that produce a legit service for consumers and are not primarily tools for middlemen or speculators (although such agents do exist in our model).

Since tokens aim at trustless structures, we will need some kind of proof that every node corresponds to a single person instead of some botnet. Since I am a huge proof-of-work opposer and since most of the tokens are built on Ethereum platform, which is moving towards proof-of-stake anyway, I will use the latter in the model.

The service is paid for in fixed number of tokens, not in cash.

Pricing service in a fixed token rate will correctly capture the proportionate relationship between demand and price — the greater the demand for the service, the more people will buy tokens, the price of tokens will increase, and so will the cash equivalent of the service; and vice versa.

There are consumers, investors, and honest and malicious miners in our model, each having different motivations and types. Consumers and malicious miners want token price to depreciate, while honest miners and investors want token price to appreciate.

The incentives should be modelled in such a way that no player will want to deviate from the honest sutainable system as long as there is an honest majority (conditional equilibrium). We will assume the Ethereum Casper’s checkpoint tree voting model, as it satisfies the accountable safety and plausible liveness as long as 2/3 of votes are honest. We will model the resulting economy but not dig into the technicalities or revisit what Vitalik Buterin and Virgil Griffith have already spent some time to model.

3. Agents and motivations

In a general utility token economy there are four types of agents:

Honest miners

Honest miners are people with domain expertise, who actually do the job and create the utility. They are incentivized by a system to do the best job they can to earn more tokens as long as they constitute 51% of the active token holders.

They do not play any strategies, i.e. they naively vote for the correct version in every quorum. They earn (mine) rewards as long as malicious miners don’t take over, and at the same time they provide a utility to customers. Therefore the main quantitative feature of honest miners is their proportion among all miners.

Main quantitative feature of honest miners is their number.

The corresponding issue is that it is impossible to tell for certain which miners are honest and which are not. Therefore customers and investors choose their strategies based on the expectations. The prior probabilities which form these expectations are exogeneous in this model but can be endogenized. If you are a researcher interested in extending the model in this area, please contact me, so that we can discuss and share the ideas on that topic.


Customers are people who use and benefit from the service created by the honest miners and pay for it using tokens they bought for cash.

As mentioned in the introduction, utility tokens only work good in peculiar services like job referencing or ads ranking. Therefore, customers not only care about the quality of service, but also about its popularity/public acceptance. This can be modelled using the following version of Cobb-Douglas utility function:

Customer's utility function
Customer's utility function

where E[x] is the expected demand and E[z] is the expected number of experts (honest miners) in the system.

Note that even when there is zero demand but nonzero number of experts (E[x]=0; E[z]>0) the customer still receives a non-zero utility from the service. Conversely, when the service is very popular and has high demand but zero expert knowledge (E[x]>0; E[z]=0) the utility from the service is zero despite its popularity.

The demand for tokens is equal to the expected total number of customers

The customers are not uniform though — there are early adopters, late majority and laggards. They differ in reservation utility levels — each type of customer will only subscribe to the service if the utility U(x,z) will exceed Uearly, Ulate, Ulag respectively, where Uearly ≤ Ulate ≤ Ulag.

According to product adoption life cycle, the consumer types are distributed as 16% early adopters, 68% late majority and 16% laggards:

Customer type allocation
Modified Roger's curve

You can see that I have simplified the actual Roger’s curve. If you are interested in extending the model to use actual technology adoption lifecycle, you can contact me and I will share my ideas.


Investors are people who buy tokens for ICO/market value and hold them in expectation of value appreciation. We will assume that there are N identical investors with equal wealth level w, who are using a version of Markowitz’s mean-variance formula to choose between investing in stocks and our tokens.

Markowitz formula
Modified Markowitz's mean-variance formula

where μc and μs are coin and stock returns respectively, and γ and σc are risk-aversion coefficient and coin volatility.

Note that we simplify and consider stock returns deterministic, so the model can be extended here. You can also replace Markowitz with more complex and more realistic models like Merton, Munk, Bodie, Samuelson or Campbell or add other cryptocoins into the decision. Since our model aims to be as generic as possible, we leave out these options. If you are interested in financial economics and want to extend the model in this area, please contact me so that we can share ideas and/or collaborate.

We will also assume that all the investors are risk neutral.

For further simplicity, we will omit gamblers from our model — the investors who will strategically predict the quorum outcome and vote in that direction to mine extra tokens. Those, who are interested in that, can enhance on this model themselves and/or contact me for ideas and suggestions.

The more investors a system has, the more cash is in the system.

Malicious miners

Malicious miners are people who buy tokens for ICO/market value and vote at quorum to force their version of blockchain.

In this model we don’t consider hypothetical Jokers (i.e. system trolls who want to sabotage the honest blockchain just for the sake of it), so all malicious miners have a rational agenda — it’s almost always the profit maximization outside of the system.

Malicious miner's profit
Malicious miner's profit

where the first term is the initial profit a company makes by selling their good or service at price f to their initial consumers plus a share of total demand that comes from the token vote with probability α of winning the vote. The second term is the interference term which completes probability of demand from tokens to 1 at the cost of buying tokens necessary to win the majority vote at price pc per token. The second term is equal to zero in case of non-interference, i.e. no malicious token activity.

The more malicious miners a system has, the easier it is for them to influence the votes.

Malicious miners participate in the token economy only if spending cash on tokens and winning the votes will increase their outside profit. Otherwise, they won’t have any incentive to meddle with the blockchain.

In this model we assume that all malicious miners want to lobby the single version o the blockchain and not conflict among themselves. Moreover, malicious miners can preemptively buy tokens while they are cheap to increase profits in the future, even if this decision does not increase short-term profits. If you are interested in extending the model in this area, please feel free to contact me to discuss this and exchange ideas.

In the next section we will quickly see how these agents interact at a fixed point in time.

4. System statics

At any point in time, the agents solve their corresponding utility maximization problems from the previous section. The generalized static interactions can be visualized as follows:

Token economy system statics
System statics in a utility token economy

Note that we differentiate between active and passive tokens, where former participate in votes and the latter do not.

To model the price formation of a token we use a simplified version of quantity theory of money with money market equilibrium modelled in “Economics of Bitcoin Price Formation” (Ciaian et al. (2014)).

Price of token formula
Price formula of token

where PY is the dollar value of a token economy, r is the opportunity interest rate (in our case, μs), T is the size of token supply and η is an exogeneous stabilization parameter.

Note that in a proof-of-stake economy, the token supply T is fixed, so the token is deflationary.

To calculate the nominal GDP (PY) we add all the cash that customers and investors inject in the token economy.

If you are interested in more complicated pricing formulas, please read Ciaian’s paper, mentioned above, and/or contact me to exchange ideas.

4. System dynamics: simulation in R

Previous two sections summarize the economy at any fixed point in time. To see how this system works over time we need to perform a dynamic analysis. The system dynamics can be modelled to follow the timing described below:

  1. The economy begins when developers create the protocol and generate all the tokens (see Section 2). Without loss of generality, we assume that there is only one creator.

  2. Creator distributes a certain share of all tokens to early experts who agree to work for tokens instead of cash and not sell them for at least a certain period of time. We make a weak assumption that all these early experts are honest miners. She sells other tokens in an ICO.

    The decision how much to keep, how much to sell and how much to distribute involves a whole optimization process on its own, but we exogenize it for simplicity. As always, any extensions are welcome.

  3. Consumers decide whether to subscribe to the service by buying tokens or to opt for other service providers.

    Investors decide whether to buy tokens or stocks instead.

    Malicious miners decide whether buying tokens and joining the vote will increase their short-term profit.

  4. All market participants are determined and active tokens are bidden in a vote.

  5. Majority vote wins, and losers’ stakes are slashed — equally redistributed among winners.

  6. Consumers’ and investors’ cash injections are calculated and added to price formula. Token’s price is updated.

    Current token rate of return is calculated as (1 + Δpt/pt)

    Token’s attractiveness parameter η is updated.

    Current stock rates of returns r are observed.

  7. Loop steps 3 to 6.

R simulation

We are ready to see how the economy will work in a simulation. First we will define the default parameters.

N <- 100      #number of time periods of interest

n_D <- 1000   #maximum potential subscription demand
n_I <- 200    #number of investors
n_H <- 100    #number of honest miners
n_M <- 30     #number of malicious miners
n_HB <- 50    #number of honest beneficiaries

mu_s <- 0.2   #stock rate of return (assume deterministic)
f <- 100      #unit price of malicious miner's side product
n_T <- 100000 #total number of tokens
distsh <- 0.5 #share distributed to experts
fee <- 5      #service fee in tokens

eta <- 1      #token's attractiveness
alpha <- 1    #Cobb-Douglas weight of popularity
beta <- 1     #Cobb-Douglas weight of expertise
U_early <- 0  #reservation utility for early adopters
U_late<-16000 #reservation utility for late majority
U_lag <-84000 #reservation utility for laggards

# customer distribution
n_Dearly <- 0.16*n_D #number of early adopters
n_Dlate <- 0.68*n_D  #number of late majority
n_Dlag <- 0.16*n_D   #number of laggards

n_B <- included * n_M + n_HB    #expected total beneficiaries

Then we initialize the main results matrix:

results <- data.frame(token_price=rep(1, N),

Assuming that 160 early adopters each bought 5 tokens in the first period for exchange rate 1 token = 1 $ and each of 200 investors also bought 10 tokens, we have the size of the token economy in the first period equal to 2800. Plugging that into price equation gives the real token value of 0.14, but we use this information in an unusual way and assign it as an appreciation in the first period:

results$cash_invested[1] <- 2000
results$token_price[2] <- 1.21 

What I just did, doesn’t really make any sense — I just had to arrive at a workable Markowitz solution somehow. So, if anyone wants to propose a good price appreciation mechanism, please contact me and I will correct that.

And finally, we run a simulation for N periods.

# run the simulation
for(t in 2:N){
  #calculate utility
  U = (1 + results$num_customers[t-1])^alpha * results$num_honest[t-1]^beta
  #decide whether to enter or not
    results$num_customers[t] <- n_Dearly + n_Dlate + n_Dlag
  }else if(U<U_lag & U>=U_late){
    results$num_customers[t] <- n_Dearly + n_Dlate
  }else if (U<U_late & U>=U_lag){
    results$num_customers[t] <- n_Dearly
  #calculate rate of return:
  token_rate <- results$token_price[t]/results$token_price[t-1] - 1
  #calculate sharpe ratio
  sharpe_ratio <- (token_rate - mu_s)/(5*0.01)
  #invest in the token
  results$cash_invested[t] <- n_I * 100 * sharpe_ratio
  prior_profit <- included * f * results$num_customers[t] / (n_B) 
  enter_profit <- 1 * f * results$num_customers[t] /  (n_HB + n_M) - results$token_price[t] * (0.51 - included) * (n_H + n_M) / n_M
  results$token_price[t+1] = eta * (results$num_customers[t] * fee + results$cash_invested[t]) / (mu_s * n_T)

This basic implementation gives rudimentary results, like price and demand dynamics etc.

Demand dynamics Token price
Token price and demand dynamics

6. Conclusion

In this article I have discussed my opinion on the current state of crypto-tokens and built a universal economic model of utility tokens. Since this model is very generic, the realistic results can only be obtained by tailoring it to your specific use case. However, this framework and the corresponding R script are the great start to model any utility token economy.

Whether you are a researcher or token developer, I believe this framework will be useful to you in analyzing token economies. I welcome every discussion on model extensions and/or improvements.

I strongly believe that open knowledge is the only way to the progress. You are free to use any of the components of the article, but I kindly ask you to cite the source and let other people read this article and contribute to the discussion. The publishable version of this paper is not ready yet, but I can send you a draft version on demand.

I kindly want to remind that economic consulting is my job, so I can provide any help with tailoring the model to your needs, but this will be a paid service. You can hire me via email or by filling the Hire Me form. Please be sure to include the estimated budget, the scope and the deadlines.