Mathematical Statistics

The Poisson Probability Distribution

Samir Orujov, PhD

ADA University, School of Business

Information Communication Technologies Agency, Statistics Unit

2025-11-10

๐ŸŽฏ Learning Objectives

By the end of this lecture, you will be able to:

  • Understand the conditions under which the Poisson distribution applies, using finance and economics examples

  • Derive the Poisson distribution from the binomial, and apply the formula to compute probabilities

  • Interpret the parameters and properties of Poisson random variables in financial modeling contexts

  • Calculate mean and variance of Poisson-distributed variables

  • Model and solve investment, risk, and event frequency problems using the Poisson distribution

๐Ÿ“‹ Overview

๐Ÿ“š Topics Covered Today

  • Poisson Probability Distribution โ€“ Definition and derivation
  • Poisson Experiments โ€“ Identifying conditions in finance and economics
  • Probability Calculations โ€“ Using formula and statistical tables
  • Mean and Variance โ€“ Expected value and risk measures
  • Applications โ€“ Credit risk, insurance, financial event modeling
  • Poisson Approximation to Binomial โ€“ When and why

๐Ÿ“– Definition: Poisson Experiment

๐Ÿ“ Definition 1: Poisson Experiment

A Poisson experiment meets the following requirements:

  1. Random events occur independently in a fixed interval of time/space (e.g., defaults per month, trades per hour)

  2. Average event rate (\(\lambda\)) is constant over intervals (e.g., 3 defaults/month on average)

  3. Probability of more than one event in a tiny subinterval is negligible

  4. Interval split into \(n\) subintervals:

    • \(P\)(one event in subinterval) = \(p\)
    • \(P\)(no event in subinterval) = \(1-p\)
    • \(P\)(>1 event in subinterval) = \(0\)

๐Ÿงฎ Deriving the Poisson Distribution (Part 1)

๐ŸŽฏ Motivation: From Binomial to Poisson

The Poisson distribution models rare events in finance and economics: - Credit defaults in large portfolios - Insurance claims arriving over time - High-frequency trading events - Customer arrivals at service centers

These occur when \(n\) is very large and \(p\) is very small.

๐Ÿ”‘ Key Insight

When \(n \to \infty\) and \(p \to 0\) such that \(np = \lambda\) (constant), the binomial distribution converges to the Poisson distribution.

Intuition: Many trials with rare success โ†’ counting rare events in an interval

๐Ÿงฎ Deriving the Poisson Distribution (Part 2)

Starting Point: Binomial probability mass function

\[ p(y) = \binom{n}{y} p^y (1-p)^{n-y} \]

Substitution: Let \(p = \frac{\lambda}{n}\) where \(\lambda = np\) is constant

\[ p(y) = \binom{n}{y} \left(\frac{\lambda}{n}\right)^y \left(1-\frac{\lambda}{n}\right)^{n-y} \]

Expand the binomial coefficient:

\[ p(y) = \frac{n!}{y!(n-y)!} \cdot \frac{\lambda^y}{n^y} \cdot \left(1-\frac{\lambda}{n}\right)^{n-y} \]

๐Ÿงฎ Deriving the Poisson Distribution (Part 3)

Rewrite the factorial:

\[ p(y) = \frac{n(n-1)(n-2)\cdots(n-y+1)}{y!} \cdot \frac{\lambda^y}{n^y} \cdot \left(1-\frac{\lambda}{n}\right)^{n-y} \]

Rearrange:

\[ p(y) = \frac{\lambda^y}{y!} \cdot \frac{n(n-1)(n-2)\cdots(n-y+1)}{n^y} \cdot \left(1-\frac{\lambda}{n}\right)^{n} \cdot \left(1-\frac{\lambda}{n}\right)^{-y} \]

Factor out \(n^y\) from numerator:

\[ \frac{n(n-1)\cdots(n-y+1)}{n^y} = \left(1\right)\left(1-\frac{1}{n}\right)\left(1-\frac{2}{n}\right)\cdots\left(1-\frac{y-1}{n}\right) \]

๐Ÿงฎ Deriving the Poisson Distribution (Part 4)

Take the limit as \(n \to \infty\):

\[ p(y) = \frac{\lambda^y}{y!} \cdot \lim_{n\to\infty}\left[\left(1-\frac{1}{n}\right)\cdots\left(1-\frac{y-1}{n}\right)\right] \cdot \lim_{n\to\infty}\left(1-\frac{\lambda}{n}\right)^{n} \cdot \lim_{n\to\infty}\left(1-\frac{\lambda}{n}\right)^{-y} \]

Evaluate each limit:

  1. \(\lim_{n\to\infty}\left(1-\frac{k}{n}\right) = 1\) for fixed \(k\) โ†’ First limit = 1

  2. \(\lim_{n\to\infty}\left(1-\frac{\lambda}{n}\right)^{n} = e^{-\lambda}\) (fundamental limit) โ†’ Second limit = \(e^{-\lambda}\)

  3. \(\lim_{n\to\infty}\left(1-\frac{\lambda}{n}\right)^{-y} = 1\) for fixed \(y\) โ†’ Third limit = 1

๐Ÿงฎ Deriving the Poisson Distribution (Part 5)

Combine all the limits:

\[ p(y) = \frac{\lambda^y}{y!} \cdot 1 \cdot e^{-\lambda} \cdot 1 \]

โœ… Final Result: The Poisson Probability Distribution

\[ \boxed{p(y) = \frac{\lambda^y e^{-\lambda}}{y!}, \quad y = 0, 1, 2, \ldots, \quad \lambda > 0} \]

Where: - \(y\) = number of events (defaults, claims, arrivals, etc.) - \(\lambda\) = average rate (expected number of events per interval) - \(e \approx 2.71828\) (Eulerโ€™s number)

๐Ÿ’ก Financial Interpretation

This formula gives the probability of observing exactly \(y\) rare events when the average rate is \(\lambda\) per time/space interval.

๐Ÿ“ˆ Poisson Probability Distribution

๐Ÿ“ Definition 2: Poisson Probability Distribution

A random variable \(Y\) is Poisson-distributed if: \[ p(y) = \frac{\lambda^y}{y!} e^{-\lambda}, \quad y = 0, 1, 2, ... \]

Where \(\lambda\) is the average rate (mean number of events per interval).

Key Properties

  • Probabilities are always \(0 \leq p(y) \leq 1\)
  • Sum of all probabilities \(= 1\) (series for \(e^{\lambda}\))

๐Ÿ“Œ Example 1: Credit Risk Event Modeling

A loan portfolio averages 2 defaults per month (\(\lambda = 2\)). What is the probability that there are exactly 3 defaults next month?

Solution: \[ p(3) = \frac{2^3}{3!} e^{-2} = \frac{8}{6} e^{-2} = 1.333 \times 0.135 = 0.180 \]

๐Ÿ“Œ Example 2: Insurance Claims

An insurer receives 5 claims per day on average (\(\lambda = 5\)). What is the probability of receiving at least 2 claims tomorrow?

Solution: \[ P(Y \geq 2) = 1 - p(0) - p(1) \]

\[ p(0) = \frac{5^0}{0!} e^{-5} = e^{-5} = 0.0067 \]

\[ p(1) = \frac{5^1}{1!} e^{-5} = 5 \times 0.0067 = 0.0337 \]

\[ P(Y \geq 2) = 1 - 0.0067 - 0.0337 = 0.9596 \]

โœ… Proving the Poisson is a Valid Distribution

๐Ÿ“ What We Need to Prove

For the Poisson distribution to be valid, we must verify two properties:

  1. Non-negativity: \(0 \le p(y) \le 1\) for all \(y\)
  2. Total probability: \(\sum_{y=0}^{\infty} p(y) = 1\)

โœ“ Property 1: Non-negativity

Since \(\lambda > 0\), \(y! > 0\), and \(e^{-\lambda} > 0\) for all values:

\[ p(y) = \frac{\lambda^y e^{-\lambda}}{y!} > 0 \quad \text{for all } y = 0, 1, 2, \ldots \]

Also, \(p(y) = 0\) for negative \(y\) (since weโ€™re counting events). โœ“

โœ… Proving Total Probability Equals 1

๐Ÿ“ Property 2: Sum of All Probabilities

We need to show that: \[ \sum_{y=0}^{\infty} p(y) = \sum_{y=0}^{\infty} \frac{\lambda^y e^{-\lambda}}{y!} = 1 \]

Step 1: Factor out the constant \(e^{-\lambda}\)

\[ \sum_{y=0}^{\infty} \frac{\lambda^y e^{-\lambda}}{y!} = e^{-\lambda} \sum_{y=0}^{\infty} \frac{\lambda^y}{y!} \]

Step 2: Recognize the Taylor series expansion of \(e^{\lambda}\)

๐Ÿ”‘ Key Mathematical Fact: Taylor Series for \(e^x\)

\[ e^x = \sum_{k=0}^{\infty} \frac{x^k}{k!} = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdots \]

For \(x = \lambda\): \[ e^{\lambda} = \sum_{y=0}^{\infty} \frac{\lambda^y}{y!} \]

โœ… Final Result

Step 3: Substitute the Taylor series

\[ \sum_{y=0}^{\infty} \frac{\lambda^y e^{-\lambda}}{y!} = e^{-\lambda} \cdot \sum_{y=0}^{\infty} \frac{\lambda^y}{y!} = e^{-\lambda} \cdot e^{\lambda} \]

Step 4: Simplify using exponent rules

\[ e^{-\lambda} \cdot e^{\lambda} = e^{-\lambda + \lambda} = e^{0} = 1 \]

โœ… Conclusion

\[ \boxed{\sum_{y=0}^{\infty} p(y) = 1 \quad \checkmark} \]

The Poisson distribution is a valid probability distribution satisfying all required properties!

๐Ÿ’ก Why This Matters

This proof guarantees that when we model financial events (defaults, claims, trades) with a Poisson distribution, all possible outcomes have probabilities that sum to 100% โ€” ensuring our risk calculations are mathematically sound.

๐Ÿ“Œ Example 3: Financial Trading Volume

Suppose a stock exchange sees 60 trades per hour (\(\lambda = 60\)) on average. What is the probability there are exactly 55 trades in the next hour?

Solution: \[ p(55) = \frac{60^{55}}{55!} e^{-60} \] Can compute using software (R, Python)

๐Ÿ“Œ Example 4: Poisson Approximation to Binomial

Suppose a bank has a portfolio of n = 1000 loans, each with default probability p = 0.002, so \(\lambda = np = 2\). Find \(P(Y \leq 3)\) exactly using binomial and approximately using Poisson.

Binomial: \(P(Y \leq 3) = \sum_{y=0}^{3} \binom{1000}{y} p^y (1-p)^{1000-y}\)

Poisson Approximation: \[ P(Y \leq 3) = \sum_{y=0}^{3} \frac{2^y}{y!} e^{-2} = p(0) + p(1) + p(2) + p(3) \]

๐ŸŽฎ Interactive: Poisson vs Binomial Comparison

Explore the Approximation: Use the sliders to see how well the Poisson distribution approximates the Binomial when \(n\) is large and \(p\) is small (with \(\lambda = np\) constant).

Observations:
When \(n\) is large and \(p\) is small, the distributions overlap closely.

๐ŸŽฎ Interactive: Error Analysis

Quantifying Approximation Quality: Compare the absolute difference between Binomial and Poisson probabilities.

Financial Application:
In credit risk modeling with large portfolios (\(n > 1000\)) and low default probabilities (\(p < 0.01\)), the Poisson approximation maintains accuracy within 0.001 probability units!

๐Ÿ“Š Poisson Cumulative Distribution Table

Cumulative Poisson Probabilities: \(P(Y \leq a) = \sum_{y=0}^{a} \frac{\lambda^y e^{-\lambda}}{y!}\)

This table shows how cumulative probabilities increase toward 1 as we consider larger values.

\[ \begin{array}{c|ccccccccc} \lambda \setminus a & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 \\ \hline 0.02 & 0.980 & 1.000 & & & & & & & \\ 0.04 & 0.961 & 0.999 & 1.000 & & & & & & \\ 0.06 & 0.942 & 0.998 & 1.000 & & & & & & \\ 0.10 & 0.905 & 0.995 & 1.000 & & & & & & \\ \hline 0.20 & 0.819 & 0.982 & 0.999 & 1.000 & & & & & \\ 0.30 & 0.741 & 0.963 & 0.996 & 1.000 & & & & & \\ 0.40 & 0.670 & 0.938 & 0.992 & 0.999 & 1.000 & & & & \\ 0.50 & 0.607 & 0.910 & 0.986 & 0.998 & 1.000 & & & & \\ \hline 0.60 & 0.549 & 0.878 & 0.977 & 0.997 & 1.000 & & & & \\ 0.75 & 0.472 & 0.827 & 0.959 & 0.993 & 0.999 & 1.000 & & & \\ 0.85 & 0.427 & 0.791 & 0.945 & 0.989 & 0.998 & 1.000 & & & \\ 1.00 & 0.368 & 0.736 & 0.920 & 0.981 & 0.996 & 0.999 & 1.000 & & \\ \hline 1.20 & 0.301 & 0.663 & 0.879 & 0.966 & 0.992 & 0.998 & 1.000 & & \\ 1.50 & 0.223 & 0.558 & 0.809 & 0.934 & 0.981 & 0.996 & 0.999 & 1.000 & \\ 1.80 & 0.165 & 0.463 & 0.731 & 0.891 & 0.964 & 0.990 & 0.997 & 0.999 & 1.000 \\ 2.00 & 0.135 & 0.406 & 0.677 & 0.857 & 0.947 & 0.983 & 0.995 & 0.999 & 1.000 \\ \end{array} \]

๐Ÿ’ก Key Insight

As \(\lambda\) increases, you need larger values of \(a\) before \(P(Y \leq a) \approx 1\). This reflects that higher event rates require considering more potential outcomes.

๐ŸŽฏ Key Theorem: Mean and Variance

๐Ÿ“ Theorem 1: Mean and Variance

If \(Y \sim \text{Poisson}(\lambda)\), then \[ E(Y) = \mu = \lambda \] \[ Var(Y) = \sigma^2 = \lambda \] \[ SD(Y) = \sigma = \sqrt{\lambda} \]

๐Ÿ“Œ Example 5: Modeling Rare Economic Events

Industrial losses (insurance claims) average 3 per month. In the last 2 months, 10 claims occurred. Is this highly improbable?

Let \(\lambda = 2\times3=6\). Probability \(Y \geq 10\):

\[ P(Y \geq 10) = \sum_{y=10}^{\infty} \frac{6^y}{y!} e^{-6} \]

Empirical Rule: \(\mu+2\sigma = 6+2\times2.45=10.90\). Since 10 is not much above this threshold, itโ€™s not โ€œhighlyโ€ improbable but may warrant investigation.

๐Ÿค” Activity: Financial Applications

Brainstorm

Suggest other finance/economics scenarios where the Poisson distribution applies:

  • Call arrivals at a customer service center

  • Insurance claims per day

  • Defaults in a loan portfolio

  • Credit card fraud events per month

  • Large trades in FX market

  • Blockchain transaction times

๐Ÿ“ Quiz #1: Poisson Calculations

A bond analyst observes \(\lambda=1\) default per month. What is the probability of 0 defaults?

  • 0.368
  • 0.135
  • 0.600
  • 0.500

๐Ÿ“Š Using Statistical Software

Binomial and Poisson formulas can be tedious for large \(n\) or \(y\)! Financial professionals use software:

  • R: dpois(y, lambda)

  • Python: scipy.stats.poisson.pmf(y, lambda)

  • Excel: =POISSON.DIST(y, lambda, FALSE)

๐Ÿ’ฐ Case Study: Bitcoin Crash Event Modeling (Real Data)

โ‚ฟ Investment Problem

Crypto Portfolio Managers need to understand and quantify risk from sudden Bitcoin crashes (>10% daily drops). Historical data shows crashes occur randomly but with predictable frequency patterns.

Key Questions:

  1. How often do extreme crashes occur? (Can we model with Poisson?)

  2. Whatโ€™s the probability of multiple crashes in a month?

  3. How should risk management capital be allocated?

๐Ÿ“Š Data Source: Real Market Data

This case study uses REAL historical data from:

  • Yahoo Finance API via yfinance package

  • Period: 2019-2025 (6 years of actual trading data)

  • Data Quality: OHLCV (Open, High, Low, Close, Volume)

  • Verification: Cross-checked against CoinMarketCap and CryptoDataDownload

๐Ÿ’ฐ Step 1: Download Real Bitcoin Data

Code
#Install if needed: install.packages("quantmod")
library(tidyverse)
library(lubridate)
library(quantmod)
library(knitr)
#Get data for 6 years (2019-2025)
#Download REAL Bitcoin data from Yahoo Finance
#BTC-USD is the official Bitcoin/USD trading pair
getSymbols("BTC-USD", src = "yahoo", 
           from = "2019-01-01", to = Sys.Date(),
           auto.assign = TRUE)
[1] "BTC-USD"
Code
#Extract the data
btc_raw <- get("BTC-USD")
#Convert to data frame
btc_data <- data.frame(
  Date = index(btc_raw),
  Open = as.numeric(btc_raw[, 1]),
  High = as.numeric(btc_raw[, 2]),
  Low = as.numeric(btc_raw[, 3]),
  Close = as.numeric(btc_raw[, 4]),
  Volume = as.numeric(btc_raw[, 5]),
  Adjusted = as.numeric(btc_raw[, 6])
) %>%
  mutate(
    Daily_Return = ((Close - Open) / Open) * 100,
    Daily_Return_Adj = ((Adjusted - lag(Adjusted)) / lag(Adjusted)) * 100
  ) %>%
  filter(!is.na(Daily_Return_Adj))
#Display summary
cat("โœ“ Successfully downloaded REAL Bitcoin data!")
โœ“ Successfully downloaded REAL Bitcoin data!
Code
cat("Date range:", format(min(btc_data$Date), "%Y-%m-%d"), "to", 
    format(max(btc_data$Date), "%Y-%m-%d"))
Date range: 2019-01-02 to 2025-11-09
Code
cat("Total trading days:", nrow(btc_data))
Total trading days: 2504
First 5 records:


|Date       |    Open|   Close| Daily_Return_Adj|
|:----------|-------:|-------:|----------------:|
|2019-01-02 | 3849.22| 3943.41|             2.60|
|2019-01-03 | 3931.05| 3836.74|            -2.70|
|2019-01-04 | 3832.04| 3857.72|             0.55|
|2019-01-05 | 3851.97| 3845.19|            -0.32|
|2019-01-06 | 3836.52| 4076.63|             6.02|
Last 5 records:


|     |Date       |     Open|    Close| Daily_Return_Adj|
|:----|:----------|--------:|--------:|----------------:|
|2500 |2025-11-05 | 101579.2| 103891.8|             2.27|
|2501 |2025-11-06 | 103893.7| 101301.3|            -2.49|
|2502 |2025-11-07 | 101286.2| 103372.4|             2.04|
|2503 |2025-11-08 | 103371.7| 102282.1|            -1.05|
|2504 |2025-11-09 | 102287.4| 104628.2|             2.29|

๐Ÿ’ฐ Step 2: Identify Crash Events in Real Data

Code
# Define crash as >10% daily drop
crash_threshold <- -10

# Identify crashes
crashes <- btc_data %>%
  filter(Daily_Return_Adj < crash_threshold) %>%
  mutate(
    Crash_Magnitude = Daily_Return_Adj,
    Crash_Type = case_when(
      Daily_Return_Adj < -30 ~ "Extreme (>30%)",
      Daily_Return_Adj < -20 ~ "Severe (20-30%)",
      Daily_Return_Adj < -15 ~ "Major (15-20%)",
      TRUE ~ "Significant (10-15%)"
    )
  )

cat("CRASH EVENT ANALYSIS")
CRASH EVENT ANALYSIS
Code
cat(paste(rep("=", 50), collapse = ""))
==================================================
Code
cat("Total trading days:", nrow(btc_data), "\n")
Total trading days: 2504 
Code
cat("Crash days (>10% drop):", nrow(crashes))
Crash days (>10% drop): 16
Crash frequency: 0.64 % of all days
Average crash magnitude: -13.78 %
Crashes by severity:


|Crash_Type           | Count| Avg_Magnitude|    Min|    Max|
|:--------------------|-----:|-------------:|------:|------:|
|Extreme (>30%)       |     1|        -37.17| -37.17| -37.17|
|Major (15-20%)       |     1|        -15.97| -15.97| -15.97|
|Significant (10-15%) |    14|        -11.95| -14.35| -10.01|

๐Ÿ’ฐ Visual: Real Bitcoin Price with Actual Crashes

๐Ÿ’ฐ Step 3: Monthly Crash Counts (Poisson Data)

Code
# Group real data by month and count crashes
monthly_crashes <- btc_data %>%
  mutate(YearMonth = floor_date(Date, "month")) %>%
  group_by(YearMonth) %>%
  summarise(
    Crashes_in_Month = sum(Daily_Return_Adj < -10, na.rm = TRUE),
    Trading_Days = n(),
    Avg_Return = mean(Daily_Return_Adj),
    Volatility = sd(Daily_Return_Adj),
    Min_Return = min(Daily_Return_Adj),
    Max_Return = max(Daily_Return_Adj),
    .groups = "drop"
  ) %>%
  filter(!is.na(YearMonth))

# Fit Poisson to REAL data
lambda_hat <- mean(monthly_crashes$Crashes_in_Month)
variance <- var(monthly_crashes$Crashes_in_Month)

cat("POISSON MODEL FIT (Real Data)")
POISSON MODEL FIT (Real Data)
Code
cat("Mean crashes per month (ฮป):", round(lambda_hat, 3), "\n")
Mean crashes per month (ฮป): 0.193 
Code
cat("Variance of crashes:", round(variance, 3))
Variance of crashes: 0.206
Code
cat("Ratio (variance/mean):", round(variance / lambda_hat, 3))
Ratio (variance/mean): 1.07
Code
cat("Poisson goodness of fit:", 
    ifelse(abs(variance - lambda_hat) < 1, "โœ“ GOOD fit", "โœ— Poor fit"))
Poisson goodness of fit: โœ“ GOOD fit
Code
#Display monthly summary
print(head(monthly_crashes, 10) %>% kable(digits = 2))


|YearMonth  | Crashes_in_Month| Trading_Days| Avg_Return| Volatility| Min_Return| Max_Return|
|:----------|----------------:|------------:|----------:|----------:|----------:|----------:|
|2019-01-01 |                0|           30|      -0.32|       2.56|      -8.83|       6.02|
|2019-02-01 |                0|           28|       0.42|       2.70|      -8.02|       7.86|
|2019-03-01 |                0|           31|       0.21|       1.16|      -2.23|       3.58|
|2019-04-01 |                0|           30|       0.95|       3.67|      -4.88|      17.36|
|2019-05-01 |                0|           31|       1.63|       4.68|      -6.86|      12.95|
|2019-06-01 |                1|           30|       0.92|       5.35|     -14.09|      10.95|
|2019-07-01 |                1|           31|      -0.09|       5.19|     -13.01|      10.74|
|2019-08-01 |                0|           31|      -0.10|       3.30|      -7.75|       7.62|
|2019-09-01 |                1|           30|      -0.46|       2.85|     -11.40|       6.03|
|2019-10-01 |                0|           31|       0.40|       3.80|      -6.98|      15.58|

๐Ÿ’ฐ Visual: Real Monthly Crash Distribution

๐Ÿ’ฐ Visual: Monthly Crashes Timeline (Real Data)

Combined plot with a secondary y-axis for volatility.

๐Ÿ’ฐ Risk Calculations from Real Data

Code
# Calculate risk metrics
q50 <- qpois(0.50, lambda = lambda_hat)
q90 <- qpois(0.90, lambda = lambda_hat)
q95 <- qpois(0.95, lambda = lambda_hat)
q99 <- qpois(0.99, lambda = lambda_hat)

cat("RISK QUANTILES (Based on Real Data Fitted Model)\n")
RISK QUANTILES (Based on Real Data Fitted Model)
Code
cat(paste(rep("=", 50), collapse = ""), "\n")
================================================== 
Code
cat("Median (50th percentile):", q50, "crashes\n")
Median (50th percentile): 0 crashes
Code
cat("Normal month (90%):", q90, "or fewer crashes\n")
Normal month (90%): 1 or fewer crashes
Code
cat("Value at Risk 95% (VaR):", q95, "crashes/month\n")
Value at Risk 95% (VaR): 1 crashes/month
Code
cat("Extreme scenario 99%:", q99, "crashes/month\n\n")
Extreme scenario 99%: 2 crashes/month
KEY PROBABILITIES
================================================== 
P(0 crashes next month): 82.5 %
P(exactly 1 crash): 15.9 %
P(exactly 2 crashes): 1.5 %
P(โ‰ฅ3 crashes): 0.1 %

๐Ÿ’ฐ Visual: Risk Metrics Dashboard (Real Data)

๐Ÿ’ฐ Business Recommendations (Real Data)

๐Ÿ“Š Key Findings from Real Data

  • Average monthly crashes: ฮป = 0.19 extreme events
  • Data period: 2019-2025 (6 years of actual trading)
  • Total crashes observed: 16 days with >10% drops
  • Model validation: Poisson fits real data reasonably well
  • Normal month: Expect โ‰ค 1 crashes
  • 95% Risk: Up to 1 crashes
  • Extreme case: Up to 2 crashes

๐Ÿ’ผ Portfolio Risk Actions

  1. Hedging: Protect against 1 monthly crashes
  2. Liquidity: Hold 15-20% stablecoin reserves
  3. Position Limits: Max 50% BTC if monthly VaR > 20%
  4. Monitoring: Track actual vs predicted monthly crashes
  5. Rebalance: Quarterly reviews using updated data
  6. Stop-Loss: Exit if 3+ crashes in 2 weeks or >15% monthly loss

๐Ÿ’ฐ Data Verification & Sources

โœ“ Real Data Confirmation

This analysis uses VERIFIED REAL DATA:

โœ… Source: Yahoo Finance API (yfinance package)
โœ… Ticker: BTC-USD (Bitcoin/USD official pair)
โœ… Period: 2019-01-01 to latest available date
โœ… Quality: OHLCV data (Open, High, Low, Close, Volume)
โœ… Cross-check: Matches CoinMarketCap and CryptoDataDownload historical prices

๐Ÿ”ง Reproduce This Analysis

Code
# Run this code to get the SAME real data
library(quantmod)
library(tidyverse)

# Download real data
getSymbols("BTC-USD", src = "yahoo",
           from = "2019-01-01", to = Sys.Date(),
           auto.assign = TRUE)

# Your data is now in the 'BTC-USD' object
head(BTC.USD)  # Check first 6 rows

# This is the EXACT same real data used in this case study!

๐Ÿ’ฐ Alternative Real Data Sources

๐Ÿ“ฅ Other Verified Real Data Options

Option 1: CryptoDataDownload (Free, Daily Data) - Website: https://www.cryptodatadownload.com/ - Format: CSV downloads - Coverage: Daily OHLCV data - Updated: Daily

Option 2: Kaggle Datasets (Free) - Search: โ€œBitcoin Historical Dataโ€ - BITCOIN Historical Datasets 2018-2025 Binance API - Bitcoin Daily Price (2017-2023) - Download as CSV

Option 3: CoinGecko API (Free, No Auth) - Website: https://www.coingecko.com/en/api - Format: JSON API responses - Coverage: Historical, current, market data - Rate limit: Generous free tier

Option 4: Python Code (Using yfinance)

import yfinance as yf
import pandas as pd

# Download real data
btc = yf.download("BTC-USD", start="2019-01-01", end="2025-01-01")
btc.to_csv("bitcoin_real_data.csv")
print(btc.head())

๐Ÿ“ Summary

โœ… Key Takeaways

  • Poisson models event frequencies in fixed intervals

  • Mean and variance both \(=\lambda\)

  • Excellent for default risk, insurance, arrivals, rare event modeling

  • Approximates binomial well for large \(n\), small \(p\)

๐Ÿ“š Practice Problems

๐Ÿ“ Homework Problems

  1. Loan Portfolio Default Modeling: If \(\lambda=4\) defaults/month, find \(P(\text{exactly 2 defaults})\) and \(P(D \geq 3)\)

  2. Insurance Claim Risk: For \(\lambda=8\) claims/month, whatโ€™s probability of 6 or fewer? Is 12 claims unusually high?

  3. Call Center Analysis: If \(\lambda=25\) calls/hour, probability of \(C\leq20\) calls?

  4. Trading Outliers: Stock returns see โ€œlarge moves (L)โ€ (\(>2\sigma\)) \(\lambda=1\)/week. In 10 weeks, find \(P(L\geq3)\).

๐Ÿ‘‹ Thank You!

๐Ÿ“ฌ Contact Information:

Samir Orujov
Assistant Professor
School of Business ADA University

๐Ÿ“ง Email: sorujov@ada.edu.az
๐Ÿข Office: D312 โฐ Office Hours: By appointment

๐Ÿ“… Next Class:

  • Topic: Continuous Random Variables

  • Reading: Chapter 3.7

  • Preparation: Review Poisson examples

โฐ Reminders:

  • โœ… Complete all homework problems

  • โœ… Practice with Poisson software

  • โœ… Work hard

โ“ Questions?

๐Ÿ’ฌ Open Discussion (5 minutes)

  • Applications to your research or work

  • Computational tips and tricks

  • Parameter estimation

  • Modeling rare risk events in portfolios