liveBook · Manning

Cumulative distribution function

As explained in Build a Robo-Advisor with Python (From Scratch)

A cumulative distribution function gives the probability that a random variable is less than or equal to a specified value.

A cumulative distribution function (CDF) gives the probability that a random variable is less than or equal to a chosen value. In financial planning, evaluating the CDF at adjacent wealth-state midpoints converts a continuous return model into transition probabilities. section 6.2.1

From wealth ranges to transition probabilities

For each possible next-period wealth state, calculate its lower and upper midpoint CDF values. Subtracting adjacent values gives the probability of landing in that wealth interval, including zero-wealth and infinite-wealth boundary states. section 6.2.1

Listing 6.2 Computing transition probabilities
from scipy.stats import norm
import warnings
warnings.filterwarnings('ignore')

def compute_mu_sigma(a):
    mu = a/(nA-1)*mu_stock + (1-a/(nA-1))*mu_bond
    sig = a/(nA-1)*sig_stock
    return mu, sig

def compute_midpoints(W):
    W_midpts = np.zeros((nW+1,T+1))
    W_midpts[0,:] = 0.000001
    W_midpts[nW,:] = np.inf
    W_midpts[1:nW,:] = (W[:nW-1,:]+W[1:nW,:])/2
    return W_midpts

def compute_transition_probs(w, t, a, W_midpts):
    mu, sig = compute_mu_sigma(a)
    W_tplus1_dist = np.zeros(nW)
    cdfs = norm.cdf(np.float64((np.log(W_midpts[:,t+1]/w) 
                                - (mu-0.5*sig**2))/sig))  #1
    W_tplus1_dist = cdfs[1:nW+1] - cdfs[0:nW]  #2
    return W_tplus1_dist

Inspect the Python implementation using SciPy's normal CDF, portfolio mean and volatility, midpoint boundaries, and adjacent-CDF differences. section 6.2.1

The calculation assumes normally distributed stock returns, while allowing replacement with fat-tailed distributions. The resulting transition probabilities feed dynamic programming for goals-based investing. section 6.2.1

How Build a Robo-Advisor with Python (From Scratch) covers it

How deep it goes
Explains interval probabilities and implements adjacent CDF differences, while deferring alternative distribution implementations.
Examples
Uses wealth-state midpoints, zero and infinite boundary values, and a normal-return transition calculation.
What it assumes
Assumes asset allocations, portfolio mean and volatility, discrete wealth states, and normally distributed stock returns.
What you can do after
Apply it via SciPy to convert modeled wealth distributions into transition probabilities.
How it connects
Connects cumulative distribution functions with transition probabilities, normal distributions, wealth states, and dynamic programming.

Also explained in

Compare how 4 books explain cumulative distribution function →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Build a Robo-Advisor with Python (From Scratch). The section links point to the parts of the book it draws on.