← Back to list

Identifying network congestion with a simple Probit model

This is an application (small part of my PhD thesis) to show how to use a simple statistical tool such as Probit model to Identify…

Amin Mohazab · 2025-06-16 08:15 · 0 claps · 4.3 min read
#congestion #bitcoin-payment-system #probit
Open on Medium ↗
Wiki topics: CRY · Crypto & Web3 FIN · Fintech & Banking

Identifying network congestion with a simple Probit model

This is an application (small part of my PhD thesis) to show how to use a simple statistical tool such as Probit model to Identify congestion in a system such as Bitcoin Payment System (from now on BPS). There is no need to provide a definition for the Probit model here. There are plenty of references with comprehensive intros such as here, or in case of using it in python here. I only want to use it in an interesting application and show the driven results.

Network congestion in BPS:

hot bitcoin works briefly

Bitcoin Payment System, in the most general form, is a decentralized protocol to send monetary transactions, where there is no pre determined fee mechanism is in place. It is a two-sided market where at one side users send transactions and on the other side miners process the transactions, confirm them and include them in the next blocks to come. It is important to note that the capacity of the protocol is very limited, so there is a trade-off between the amount one pays and the waiting time for the transaction to be transmitted.

Following figure shows the effect of congestion in practice. I collected the data from October 24, 2020 to November 1, 2020. The goal was to look at an specific period when the mempool is getting congested. To identify congestion I derived the market clearing price for each block. It is simply the lowest accepted bid for the transactions included in the block (taking into account 5% outlier). As it is obvious, by increasing the size of the mempool, the market clearing price increases as well, and the effect does not seem to be linear. Though, we are interested to model congestion not the market clearing price. In other words, I want to simply look at the mempool size and determine if the system is congested with transactions, and this seems to be a hard task by just looking at the following figure.

Figure 1: market clearing price vs mempool size

Figure 1: market clearing price vs mempool size

I used a simple Probit model to solve this. To make the analysis more manageable, I assume that there are two states of the mempool: either the system is congested and bidders bid according to their valuations of the transaction or the system is clear and the bidders bid marginally. It is also assumed that there is a threshold for the market-clearing price. If the lowest accepted price is higher than the threshold, the system is considered to be congested and vice versa. When I increase the threshold, the probability function increases more rapidly around the higher mempool sizes. This aligns with the main assumption about dividing the mempool into only congested and clear states. Nevertheless, by choosing a very high threshold I might end up with a low number of observations for congested blocks which will affect the final estimation for the marginal valuation. Note that in my thesis, I also estimated the marginal valuations of the bidders so it is important to have enough observations to get satisfactory results. Though it is way out of scope here and will not be discussed.

To better specify the threshold selection, lets sketch the number of congested blocks vs the threshold for the market clearing price (Figure 2). Note that for prices more than 11, there is no congested blocks since. Following table 1, we consider threshold of 8$, since the higher values would decrease the share of the congested blocks to less than 10%. This could affect the representativness of the estimation sample.

Figure 2: Number of congested blocks vs threshold of market clearing price

Figure 2: Number of congested blocks vs threshold of market clearing price

table 1: Market clearing price vs number/ratio of congested blocks

table 1: Market clearing price vs number/ratio of congested blocks

Now that we defined a binary variable to determine if an observation is congested (based on the market clearing price more than 8$), we can use a probit model to Identify it. Fihure 3 shows the estimation result and figure 4 demonstrate the probability of the market clearing price being more than 8$ (congested market). The results are as expected. The coefficient of the mempool size is positive and significant. It shows that by increasing the size of the mempool (number of transactions waiting to be confirmed), the probability of the system getting congested is increasing. It is technically equivalent to the definition that we had in the beginning of this article.

Figure 3: Probit estimation result

Figure 3: Probit estimation result

Figure 4: probability of market clearing price as a function of mempool size

Figure 4: probability of market clearing price as a function of mempool size

The next step could be to use some statistical tests to determine if we actually have a good estimate. There have been plenty of “implicit” assumptions that we have made so far:

  • Is it a good idea to only consider 2 states for the system? maybe we can define another state “super congested” to specify cases of market shocks.
  • How do we know if the mempool size has linear relation to the probability of the congested market. To be more clear, we might need to add another term like a + b.x + c.x*2, and check if it has better statistical results.
  • Maybe the model makes sense, but how can we make sure if it has “enough” predictive power? AUC/ROC curves might be suitable options here.
  • Use multi collinearity test to check if the observations are too much correlated to each other.
  • Heteroskedasticity test to check if the variance of the observations changes over the estimation sample.

As I said in the beginning, this was just an application of simple Probit model to identify congestion of BPS, and it is part of the second chapter of my thesis. It is not published yet, but I’m working on it.

Let me know if you have any specific thoughts on this or something related this matter.


메타데이터
post_id
dafd3d1a4a15
slug
identifying-network-congestion-with-a-simple-probit-model-dafd3d1a4a15
url
https://medium.com/@amin.mohazab/identifying-network-congestion-with-a-simple-probit-model-dafd3d1a4a15
canonical_url
https://medium.com/@amin.mohazab/identifying-network-congestion-with-a-simple-probit-model-dafd3d1a4a15
author_url
https://medium.com/@amin.mohazab
status
ok
fetched_at
2026-07-19 10:44:43