6  Chapter 3. One-Period Asset Pricing

6.1 Learning Goals

By the end of this chapter, students should be able to:

  • formulate a one-period financial market on a finite state space;
  • represent assets, portfolios, and derivative claims using vectors and matrices;
  • define arbitrage, no-arbitrage, attainable claims, and market completeness;
  • prove the law of one price from the no-arbitrage condition;
  • derive state prices as positive linear pricing weights;
  • convert state prices into risk-neutral probabilities when a riskless asset is present;
  • price one-period derivative claims by replication and by risk-neutral expectation;
  • distinguish physical probabilities from pricing probabilities;
  • compute no-arbitrage price bounds for unattainable claims in incomplete markets;
  • implement one-period asset-pricing calculations in Python;
  • use AI tools responsibly to check definitions, assumptions, algebra, and code.

One-period asset pricing is the finite-dimensional prototype of the whole book.

A market gives us prices today and payoffs tomorrow. The no-arbitrage principle asks whether these objects can coexist without creating a free profit. If they can, then prices can be represented by positive state prices, or equivalently by discounted expectation under a risk-neutral probability measure.

6.2 3.1 Why One-Period Models Matter

A one-period model has only two dates: today, denoted by \(0\), and tomorrow, denoted by \(1\). This may look too simple, but it contains the essential mathematical structure of derivative pricing.

At time \(0\), asset prices are known. At time \(1\), asset payoffs depend on which state of the world occurs. The basic question is:

\[ \text{What time-0 price is consistent with the possible time-1 payoffs?} \]

The word consistent is important. The price is not chosen by taking an ordinary average under the real-world probabilities. Instead, the price must be compatible with the prices of all other traded assets. If the price is not compatible, then a trader may be able to construct an arbitrage.

The one-period model is also the cleanest place to see the roles of linear algebra and probability:

  • a payoff is a vector;
  • a portfolio is a vector of holdings;
  • the payoff map is a matrix;
  • replication is a linear system;
  • no-arbitrage is a separation condition;
  • state prices are positive linear functionals;
  • risk-neutral probabilities are normalized state prices.

6.3 3.2 Finite State Space

Let the future state space be

\[ \Omega=\{\omega_1,\omega_2,\ldots,\omega_m\}. \]

Exactly one state occurs at time \(1\). A time-1 payoff is therefore a function

\[ X:\Omega\to \mathbb R. \]

Because \(\Omega\) has \(m\) states, we identify \(X\) with a vector in \(\mathbb R^m\):

\[ X=\begin{bmatrix} X(\omega_1)\\ X(\omega_2)\\ \vdots\\ X(\omega_m) \end{bmatrix}. \]

For example, if a derivative pays \(10\) in state \(\omega_1\), \(4\) in state \(\omega_2\), and \(0\) in state \(\omega_3\), then

\[ X=(10,4,0)^\top. \]

6.3.1 Definition 3.1: Claim

In a finite one-period model, a claim is a vector \(X\in\mathbb R^m\). The entry \(X_i=X(\omega_i)\) is the payoff of the claim in state \(\omega_i\) at time \(1\).

The notation does not require a probability measure yet. At this stage, \(\Omega\) is only a list of possible future states. Probabilities will enter later, but no-arbitrage pricing starts from prices and payoffs, not from probabilities alone.

6.4 3.3 Assets, Prices, and Payoff Matrix

Suppose there are \(d+1\) traded assets. Their time-0 prices are

\[ S_0=(S_0^0,S_0^1,\ldots,S_0^d)^\top\in\mathbb R^{d+1}. \]

Their time-1 payoffs are vectors

\[ S_1^j=\begin{bmatrix} S_1^j(\omega_1)\\ \vdots\\ S_1^j(\omega_m) \end{bmatrix}\in\mathbb R^m, \qquad j=0,1,\ldots,d. \]

It is useful to collect these payoff vectors into the payoff matrix

\[ A= \begin{bmatrix} S_1^0(\omega_1) & S_1^1(\omega_1) & \cdots & S_1^d(\omega_1)\\ S_1^0(\omega_2) & S_1^1(\omega_2) & \cdots & S_1^d(\omega_2)\\ \vdots & \vdots & \ddots & \vdots\\ S_1^0(\omega_m) & S_1^1(\omega_m) & \cdots & S_1^d(\omega_m) \end{bmatrix}\in\mathbb R^{m\times(d+1)}. \]

The \(j\)th column of \(A\) is the payoff vector of asset \(j\).

6.4.1 Example 3.1: Two assets and two states

Suppose there is a bank account and a stock. The bank account costs \(1\) today and pays \(1+r\) tomorrow. The stock costs \(S_0\) today and pays \(S_u\) in the up state and \(S_d\) in the down state. The payoff matrix is

\[ A=\begin{bmatrix} 1+r & S_u\\ 1+r & S_d \end{bmatrix}, \qquad S_0^{\mathrm{market}}=\begin{bmatrix} 1\\ S_0 \end{bmatrix}. \]

The first column is riskless. The second column is risky.

6.5 3.4 Portfolios and Attainable Claims

A portfolio is a vector

\[ \theta=(\theta_0,\theta_1,\ldots,\theta_d)^\top\in\mathbb R^{d+1}, \]

where \(\theta_j\) is the number of units of asset \(j\) held. Negative holdings represent short positions.

The time-0 cost of the portfolio is

\[ V_0(\theta)=\theta^\top S_0. \]

The time-1 payoff vector is

\[ V_1(\theta)=A\theta. \]

6.5.1 Definition 3.2: Attainable claim

A claim \(X\in\mathbb R^m\) is attainable or replicable if there exists a portfolio \(\theta\in\mathbb R^{d+1}\) such that

\[ A\theta=X. \]

The set of attainable claims is the column space

\[ \mathcal A=\operatorname{Col}(A)\subseteq\mathbb R^m. \]

This definition is purely linear algebra. A derivative can be replicated exactly if its payoff vector lies in the span of the traded asset payoff vectors.

6.6 3.5 Arbitrage

The central consistency condition is the absence of arbitrage.

6.6.1 Definition 3.3: Arbitrage

An arbitrage portfolio is a portfolio \(\theta\) such that

\[ V_0(\theta)=\theta^\top S_0\le 0, \]

and

\[ V_1(\theta)=A\theta\ge 0 \]

in every state, with strict inequality in at least one state.

A market satisfies no arbitrage if no such portfolio exists.

The inequalities in \(A\theta\ge 0\) are componentwise. Thus the payoff is never negative and is positive in at least one future state. If the initial cost is nonpositive, this is a free profit opportunity.

A common equivalent definition uses \(V_0(\theta)=0\) instead of \(V_0(\theta)\le 0\). In a model with a bank account, these definitions are essentially equivalent: any strictly negative initial cost can be invested in the bank account, producing a zero-cost arbitrage.

6.6.2 Common mistake

Arbitrage is not the same as a high expected return. An investment with high expected return may still lose money. Arbitrage has no downside in any state and positive upside in at least one state.

6.7 3.6 The Law of One Price

No-arbitrage implies that identical future payoffs must have identical current prices.

6.7.1 Theorem 3.1: Law of one price

Assume the market satisfies no arbitrage. If two portfolios \(\theta\) and \(\phi\) have the same time-1 payoff,

\[ A\theta=A\phi, \]

then they have the same time-0 cost,

\[ \theta^\top S_0=\phi^\top S_0. \]

Proof. Consider the difference portfolio

\[ \eta=\theta-\phi. \]

Its time-1 payoff is

\[ A\eta=A\theta-A\phi=0. \]

If \(\eta^\top S_0<0\), then entering portfolio \(\eta\) gives a positive amount of money today and no future liability. This is an arbitrage. If \(\eta^\top S_0>0\), then entering portfolio \(-\eta\) gives positive money today and no future liability. This is also an arbitrage.

Therefore no-arbitrage forces

\[ \eta^\top S_0=0, \]

which gives

\[ \theta^\top S_0=\phi^\top S_0. \]

This theorem is the bridge from trading to pricing. If a derivative payoff \(X\) can be replicated by a portfolio \(\theta\), then the only no-arbitrage price of \(X\) is

\[ \pi(X)=\theta^\top S_0. \]

The law of one price guarantees that this number does not depend on which replicating portfolio is chosen.

6.8 3.7 Linear Pricing on Attainable Claims

Define the pricing functional on attainable claims by

\[ \pi(A\theta)=\theta^\top S_0. \]

The law of one price says that this is well-defined under no-arbitrage. It is also linear:

\[ \pi(aX+bY)=a\pi(X)+b\pi(Y) \]

for attainable claims \(X,Y\) and scalars \(a,b\).

6.8.1 Definition 3.4: Pricing functional

A pricing functional on the attainable subspace \(\mathcal A\) is a map

\[ \pi:\mathcal A\to\mathbb R \]

such that \(\pi(X)\) is the no-arbitrage time-0 price of the payoff \(X\).

The positivity of prices is also important. If \(X\ge 0\) and \(X\) is positive in at least one state, then no-arbitrage requires

\[ \pi(X)>0. \]

Otherwise a trader could buy a nonnegative future payoff at zero or negative cost.

Thus no-arbitrage pricing is not arbitrary. It is linear and positive.

6.9 3.8 State Prices

A state price is the time-0 price of one unit of money paid in exactly one state.

Let \(e_i\in\mathbb R^m\) be the \(i\)th standard basis vector:

\[ e_i(\omega_k)= \begin{cases} 1, & k=i,\\ 0, & k\ne i. \end{cases} \]

If \(e_i\) is traded or can be synthesized, its price is called the state price of state \(\omega_i\).

More generally, a vector

\[ q=(q_1,q_2,\ldots,q_m)^\top \]

is a state-price vector if it prices every traded asset correctly:

\[ S_0^j=\sum_{i=1}^m q_i S_1^j(\omega_i), \qquad j=0,1,\ldots,d. \]

In matrix form,

\[ A^\top q=S_0. \]

If \(q_i>0\) for every state, then every strictly positive state payoff has strictly positive price.

6.9.1 Definition 3.5: State-price vector

A vector \(q\in\mathbb R^m\) is a state-price vector if

\[ A^\top q=S_0. \]

It is strictly positive if \(q_i>0\) for all \(i\).

If a claim \(X\) is attainable and \(q\) is a state-price vector, then

\[ \pi(X)=q^\top X. \]

Indeed, if \(X=A\theta\), then

\[ q^\top X=q^\top A\theta=(A^\top q)^\top\theta=S_0^\top\theta=\theta^\top S_0. \]

6.10 3.9 No-Arbitrage and State Prices

The finite-dimensional version of the fundamental theorem of asset pricing says that no-arbitrage is equivalent to the existence of positive state prices.

6.10.1 Theorem 3.2: One-period fundamental theorem of asset pricing

Consider a finite one-period market with payoff matrix \(A\) and price vector \(S_0\). Under the usual convention that all states are economically possible, the market satisfies no arbitrage if and only if there exists a strictly positive state-price vector \(q\in\mathbb R^m\) such that

\[ A^\top q=S_0. \]

A full proof uses a separating hyperplane argument. The intuition is clear:

  • if positive state prices exist, then every nonnegative nonzero payoff has positive price, so a free nonnegative payoff cannot be created;
  • if no positive state prices exist, then the price vector is inconsistent with the payoff cone, and a separating hyperplane produces an arbitrage portfolio.

Proof. We prove the easier direction, which is the most important computationally.

Assume there exists \(q>0\) with \(A^\top q=S_0\). Suppose \(\theta\) is an arbitrage portfolio. Then \(A\theta\ge 0\) and \(A\theta\) is positive in at least one state. Since \(q>0\),

\[ q^\top A\theta>0. \]

But

\[ q^\top A\theta=(A^\top q)^\top\theta=S_0^\top\theta=\theta^\top S_0. \]

Therefore \(\theta^\top S_0>0\), contradicting the requirement \(\theta^\top S_0\le 0\) for an arbitrage. Hence no arbitrage exists.

The converse direction is a finite-dimensional separation theorem: if the price vector cannot be represented by positive state prices, then one can separate it from the positive payoff cone and construct an arbitrage portfolio.

This theorem is the first appearance of a repeated theme in the book:

\[ \text{no arbitrage} \quad \Longleftrightarrow \quad \text{existence of a positive pricing measure}. \]

6.11 3.10 Riskless Asset and Risk-Neutral Probabilities

Assume asset \(0\) is a riskless bank account with

\[ S_0^0=1, \qquad S_1^0(\omega_i)=R=1+r \]

for every state \(\omega_i\). If \(q\) is a state-price vector, then the bank-account equation gives

\[ 1=\sum_{i=1}^m q_i R. \]

Therefore

\[ \sum_{i=1}^m q_i=\frac{1}{R}. \]

Define

\[ Q_i=Rq_i. \]

Then

\[ Q_i>0, \qquad \sum_{i=1}^m Q_i=1. \]

So \(Q=(Q_1,\ldots,Q_m)\) is a probability vector. It is called a risk-neutral probability or martingale measure.

For any traded asset \(j\),

\[ S_0^j=\sum_{i=1}^m q_i S_1^j(\omega_i) =\frac{1}{R}\sum_{i=1}^m Q_i S_1^j(\omega_i). \]

Thus

\[ S_0^j=\frac{1}{1+r}\mathbb E^{\mathbb Q}[S_1^j]. \]

Equivalently, discounted asset prices have zero expected excess change under \(\mathbb Q\):

\[ \mathbb E^{\mathbb Q}\left[\frac{S_1^j}{1+r}\right]=S_0^j. \]

6.11.1 Definition 3.6: Risk-neutral probability

In a one-period model with riskless gross return \(R=1+r\), a probability vector \(Q\) is risk-neutral if for every traded asset \(j\),

\[ S_0^j=\frac{1}{R}\mathbb E^{\mathbb Q}[S_1^j]. \]

Risk-neutral probabilities are not necessarily the real-world probabilities. They are pricing weights normalized by the riskless asset.

6.12 3.11 Physical Probability Versus Pricing Probability

Let \(P_i\) denote the real-world probability of state \(\omega_i\). This probability is used for forecasting, risk analysis, and statistical estimation. Let \(Q_i\) denote the risk-neutral probability. This probability is used for no-arbitrage pricing.

They answer different questions:

Probability Typical notation Main use Interpretation
Physical probability \(\mathbb P\) forecasting and risk how likely states are believed to be
Risk-neutral probability \(\mathbb Q\) pricing and hedging state prices normalized by discounting

If investors are risk averse, risky assets usually have expected returns above the riskless rate under \(\mathbb P\). Under \(\mathbb Q\), all traded assets have expected return equal to the riskless rate after discounting.

This does not mean investors become risk neutral in reality. It means that prices can be computed as if expected values were taken under a probability measure that adjusts for risk.

6.13 3.12 The Two-State Binomial Model

Now consider the standard two-state model. There is a bank account and a stock. The bank account has gross return

\[ R=1+r. \]

The stock has current price \(S_0\) and future price

\[ S_1= \begin{cases} uS_0, & \omega_u,\\ dS_0, & \omega_d, \end{cases} \]

where

\[ u>d>0. \]

The payoff matrix is

\[ A=\begin{bmatrix} R & uS_0\\ R & dS_0 \end{bmatrix}. \]

The no-arbitrage condition is

\[ d<R<u. \]

Indeed:

  • if \(R\ge u\), the bank account dominates the stock;
  • if \(R\le d\), the stock dominates the bank account;
  • only when \(d<R<u\) are both up and down states compatible with no-arbitrage pricing.

The risk-neutral probability of the up state is obtained from

\[ S_0=\frac{1}{R}\left(q uS_0+(1-q)dS_0\right). \]

Canceling \(S_0>0\) gives

\[ R=qu+(1-q)d. \]

Solving for \(q\),

\[ q=\frac{R-d}{u-d}. \]

The no-arbitrage condition \(d<R<u\) is exactly the condition that

\[ 0<q<1. \]

6.13.1 Theorem 3.3: Binomial one-period pricing formula

In the one-period binomial model with \(d<R<u\), the unique no-arbitrage price of a claim \(X\) with payoffs \(X_u\) and \(X_d\) is

\[ \pi(X)=\frac{1}{R}\left(qX_u+(1-q)X_d\right), \qquad q=\frac{R-d}{u-d}. \]

6.14 3.13 Replication in the Binomial Model

Let a derivative claim pay

\[ X_u \quad \text{in the up state}, \qquad X_d \quad \text{in the down state}. \]

We seek a portfolio with \(\Delta\) shares of stock and \(B\) dollars invested in the bank account. Its future payoff is

\[ \begin{cases} BR+\Delta uS_0, & \omega_u,\\ BR+\Delta dS_0, & \omega_d. \end{cases} \]

Replication requires

\[ BR+\Delta uS_0=X_u, \]

\[ BR+\Delta dS_0=X_d. \]

Subtracting gives

\[ \Delta=\frac{X_u-X_d}{S_0(u-d)}. \]

Then

\[ B=\frac{uX_d-dX_u}{R(u-d)}. \]

The derivative price is the initial cost

\[ \pi(X)=B+\Delta S_0. \]

After substitution, this equals the risk-neutral expectation formula.

6.14.1 Example 3.2: One-period call option

Let

\[ S_0=100,\qquad u=1.2,\qquad d=0.8,\qquad R=1.05. \]

A European call option with strike \(K=100\) has payoffs

\[ X_u=(120-100)^+=20, \qquad X_d=(80-100)^+=0. \]

The risk-neutral up probability is

\[ q=\frac{1.05-0.8}{1.2-0.8}=0.625. \]

The option price is

\[ C_0=\frac{1}{1.05}(0.625\cdot 20+0.375\cdot 0)=11.9048. \]

The replicating stock holding is

\[ \Delta=\frac{20-0}{100(1.2-0.8)}=0.5. \]

The bank-account position is

\[ B=\frac{1.2\cdot 0-0.8\cdot 20}{1.05(1.2-0.8)}=-38.0952. \]

Thus the call can be replicated by buying \(0.5\) shares and borrowing \(38.0952\) dollars. The initial cost is

\[ 0.5(100)-38.0952=11.9048. \]

6.15 3.14 Interactive: Binomial Risk-Neutral Pricing

The following interactive demo changes the binomial parameters and recomputes the risk-neutral probability, call payoff, and no-arbitrage price.

6.15.1 Binomial call-pricing explorer

Use the sliders to observe how the option price depends on the stock price, strike, riskless return, and up/down factors.

100

100

1.05

1.20

0.80

6.16 3.15 Complete Markets

A market is complete if every claim can be replicated.

6.16.1 Definition 3.7: Complete market

A finite one-period market is complete if every claim \(X\in\mathbb R^m\) is attainable. Equivalently,

\[ \operatorname{Col}(A)=\mathbb R^m. \]

Because \(A\) is an \(m\times(d+1)\) matrix, completeness is equivalent to

\[ \operatorname{rank}(A)=m. \]

Thus a complete market must have at least as many linearly independent traded payoff vectors as there are states.

6.16.2 Theorem 3.4: Completeness and uniqueness of state prices

Assume a finite one-period market satisfies no arbitrage. The market is complete if and only if the state-price vector \(q\) satisfying

\[ A^\top q=S_0 \]

is unique.

Proof. If the market is complete, then \(\operatorname{Col}(A)=\mathbb R^m\), so \(A\) has rank \(m\). Therefore \(A^\top\) has rank \(m\), and the linear system \(A^\top q=S_0\) has at most one solution.

Conversely, if the market is not complete, then \(\operatorname{Col}(A)\) is a proper subspace of \(\mathbb R^m\). There exists a nonzero vector \(z\) orthogonal to every attainable payoff, so

\[ A^\top z=0. \]

If \(q\) is one state-price vector, then \(q+\varepsilon z\) also satisfies

\[ A^\top(q+\varepsilon z)=A^\top q=S_0. \]

For sufficiently small \(\varepsilon\), positivity is preserved. Hence the state-price vector is not unique.

Completeness is a mathematical idealization. Real markets are incomplete because not every possible future payoff can be perfectly replicated. However, complete models are valuable because they give unique prices and explicit hedging strategies.

6.17 3.16 Incomplete Markets and Price Bounds

If a claim is not attainable, no-arbitrage may not determine a unique price. Instead, it gives an interval of admissible prices.

Suppose \(q\) ranges over all strictly positive state-price vectors satisfying

\[ A^\top q=S_0. \]

For a nonattainable claim \(X\), any price of the form

\[ \pi_q(X)=q^\top X \]

is consistent with the traded assets. Therefore no-arbitrage prices are constrained by

\[ \inf_{q>0,\ A^\top q=S_0} q^\top X \le \pi(X) \le \sup_{q>0,\ A^\top q=S_0} q^\top X. \]

With non-strict positivity \(q\ge 0\), these become closed super- and sub-replication bounds.

6.17.1 Definition 3.8: No-arbitrage price bounds

The lower no-arbitrage bound of a claim \(X\) is the largest price below which selling the claim creates arbitrage. The upper no-arbitrage bound is the smallest price above which buying the claim creates arbitrage.

In finite-state models, these bounds can be computed by optimizing \(q^\top X\) over the state-price polytope.

6.18 3.17 Worked Incomplete-Market Example

Consider three states and two traded assets: a bank account and a stock. Let

\[ R=1.05, \qquad S_0=100, \]

and

\[ S_1=70,100,140 \]

in states \(\omega_1,\omega_2,\omega_3\). A state-price vector \(q=(q_1,q_2,q_3)\) must satisfy

\[ q_1+q_2+q_3=\frac{1}{1.05}, \]

and

\[ 70q_1+100q_2+140q_3=100. \]

There are three unknowns and two equations. Hence the state-price vector is not unique. This market is incomplete.

Let \(X=(0,0,40)\) be a call payoff with strike \(100\). Its possible no-arbitrage prices are

\[ q^\top X=40q_3, \]

where \(q\) ranges over the positive solutions of the two equations. Different choices of state prices give different arbitrage-free call prices.

This example shows why incomplete markets require additional modeling assumptions, utility preferences, calibration choices, or hedging criteria.

6.19 3.18 Interactive: State-Price Polytope in a Three-State Market

The next demo illustrates the incomplete three-state model above. Changing the free state price \(q_2\) moves along the state-price line and changes the price of a nonreplicable call payoff.

6.19.1 Three-state state-price explorer

0.300

6.20 3.19 Python Example: Binomial Replication

The following Python code implements the replication and risk-neutral pricing formulas for a one-period call.

import numpy as np
import matplotlib.pyplot as plt

S0 = 100.0
u = 1.20
d = 0.80
R = 1.05
K = 100.0

Su = u * S0
Sd = d * S0
Xu = max(Su - K, 0.0)
Xd = max(Sd - K, 0.0)

q = (R - d) / (u - d)
price_rn = (q * Xu + (1 - q) * Xd) / R

delta = (Xu - Xd) / (S0 * (u - d))
bank = (u * Xd - d * Xu) / (R * (u - d))
price_rep = delta * S0 + bank

print("risk-neutral up probability:", q)
print("risk-neutral price:", price_rn)
print("delta:", delta)
print("bank position:", bank)
print("replication price:", price_rep)

future_stock = np.array([Sd, Su])
future_payoff = np.array([Xd, Xu])

plt.figure(figsize=(7, 4))
plt.plot(future_stock, future_payoff, marker="o")
plt.xlabel("future stock price")
plt.ylabel("call payoff")
plt.title("One-period call payoff")
plt.grid(True, alpha=0.3)
plt.show()
risk-neutral up probability: 0.6250000000000001
risk-neutral price: 11.904761904761905
delta: 0.5000000000000001
bank position: -38.0952380952381
replication price: 11.904761904761912

One-period call payoff in the binomial model.

The equality of price_rn and price_rep is not an accident. The first calculation uses the pricing measure; the second uses a trading strategy. In a complete one-period model, they are two views of the same no-arbitrage price.

6.21 3.20 Python Example: State Prices from a Linear System

The next computation solves

\[ A^\top q=S_0 \]

for a complete two-state model.

import numpy as np

S0_stock = 100.0
R = 1.05
u = 1.20
d = 0.80

A = np.array([
    [R, u * S0_stock],
    [R, d * S0_stock]
])
price_vector = np.array([1.0, S0_stock])

q_state = np.linalg.solve(A.T, price_vector)
Q_rn = R * q_state

print("payoff matrix A:")
print(A)
print("state prices q:", q_state)
print("risk-neutral probabilities Q:", Q_rn)
print("sum of state prices:", q_state.sum())
print("1/R:", 1 / R)
print("sum of risk-neutral probabilities:", Q_rn.sum())
payoff matrix A:
[[  1.05 120.  ]
 [  1.05  80.  ]]
state prices q: [0.5952381  0.35714286]
risk-neutral probabilities Q: [0.625 0.375]
sum of state prices: 0.9523809523809523
1/R: 0.9523809523809523
sum of risk-neutral probabilities: 0.9999999999999999

This calculation emphasizes the normalization:

\[ Q_i=Rq_i. \]

The state prices sum to the discount factor \(1/R\), while the risk-neutral probabilities sum to \(1\).

6.22 3.21 Python Example: Incomplete Market Price Bounds

Now consider the three-state market from Section 3.17. We compute the possible call prices by scanning feasible positive state prices.

import numpy as np
import matplotlib.pyplot as plt

R = 1.05
S0 = 100.0
stock_states = np.array([70.0, 100.0, 140.0])
call_payoff = np.maximum(stock_states - 100.0, 0.0)

def state_prices_from_q2(q2):
    # Equations:
    # q1 + q2 + q3 = 1/R
    # 70 q1 + 100 q2 + 140 q3 = S0
    total = 1.0 / R
    remaining_sum = total - q2
    remaining_stock_value = S0 - stock_states[1] * q2
    q3 = (remaining_stock_value - stock_states[0] * remaining_sum) / (stock_states[2] - stock_states[0])
    q1 = remaining_sum - q3
    return np.array([q1, q2, q3])

q2_grid = np.linspace(0.001, 0.60, 600)
feasible_q = []
prices = []

for q2 in q2_grid:
    q = state_prices_from_q2(q2)
    if np.all(q > 0):
        feasible_q.append(q)
        prices.append(q @ call_payoff)

feasible_q = np.array(feasible_q)
prices = np.array(prices)

print("number of feasible grid points:", len(prices))
print("approximate lower price bound:", prices.min())
print("approximate upper price bound:", prices.max())

plt.figure(figsize=(7, 4))
plt.plot(feasible_q[:, 1], prices)
plt.xlabel("middle-state price q2")
plt.ylabel("call price")
plt.title("Incomplete market: no-arbitrage price range")
plt.grid(True, alpha=0.3)
plt.show()
number of feasible grid points: 600
approximate lower price bound: 8.761904761904763
approximate upper price bound: 19.030476190476197

No-arbitrage price range for a nonreplicable call in an incomplete one-period market.

Because the claim is not uniquely replicable, no-arbitrage gives an interval of prices rather than one price.

6.23 3.22 Python Example: Testing Attainability

A claim \(X\) is attainable if the linear system

\[ A\theta=X \]

has a solution. Numerically, we can solve a least-squares problem and check the residual.

import numpy as np

R = 1.05
S0 = 100.0
stock_states = np.array([70.0, 100.0, 140.0])

A = np.column_stack([
    R * np.ones(3),
    stock_states
])

claims = {
    "stock itself": stock_states,
    "bank account": R * np.ones(3),
    "call strike 100": np.maximum(stock_states - 100.0, 0.0),
    "linear payoff 2 + 0.3 S": 2.0 + 0.3 * stock_states
}

for name, X in claims.items():
    theta, residuals, rank, singular_values = np.linalg.lstsq(A, X, rcond=None)
    error = np.linalg.norm(A @ theta - X)
    print(f"{name:20s} | theta = {theta} | residual norm = {error:.6e}")
stock itself         | theta = [-5.1421237e-15  1.0000000e+00] | residual norm = 3.480934e-14
bank account         | theta = [1.00000000e+00 1.10499326e-18] | residual norm = 3.140185e-16
call strike 100      | theta = [-45.81724582   0.59459459] | residual norm = 1.394972e+01
linear payoff 2 + 0.3 S | theta = [1.9047619 0.3      ] | residual norm = 7.944109e-15

The call payoff is not affine in the stock price across the three states, so it is not attainable with only the bank account and stock. A linear payoff in the stock price is attainable.

6.24 3.23 AI-Assisted Learning Components

6.24.1 AI check 1: Definitions audit

Ask an AI tool:

In a finite one-period asset-pricing model, explain the difference between a physical probability, a state-price vector, and a risk-neutral probability. Give one example where the physical probability is different from the risk-neutral probability.

Then check whether the answer correctly states that \(Q_i=Rq_i\) when the riskless gross return is \(R\).

6.24.2 AI check 2: Proof critique

Give an AI tool the proof of the law of one price from this chapter and ask:

Identify every place where the no-arbitrage assumption is used. Could the conclusion fail if arbitrage exists? Construct a small numerical example.

A good answer should produce two portfolios with identical future payoffs but different initial costs.

6.24.3 AI check 3: Code audit

Give an AI tool the Python binomial-pricing code and ask:

Find edge cases where this code may produce misleading output. What conditions should be checked before computing the risk-neutral probability?

The answer should mention the no-arbitrage condition \(d<R<u\), the requirement \(u\ne d\), and the positivity of \(S_0\).

6.24.4 AI check 4: Mathematical explanation test

Ask an AI tool to explain why the formula

\[ \pi(X)=\frac{1}{R}\mathbb E^{\mathbb Q}[X] \]

does not mean that investors are actually risk neutral. Revise the response until it clearly distinguishes a pricing measure from a behavioral assumption.

6.25 3.24 Common Mistakes

  1. Using physical probabilities for pricing without justification. Physical probabilities are useful for prediction and risk management, but no-arbitrage pricing uses state prices or risk-neutral probabilities.

  2. Forgetting discounting. The risk-neutral formula is

    \[ \pi(X)=\frac{1}{R}\mathbb E^{\mathbb Q}[X], \]

    not simply \(\mathbb E^{\mathbb Q}[X]\).

  3. Assuming every payoff is attainable. A market is complete only when \(\operatorname{rank}(A)=m\).

  4. Ignoring positivity of state prices. Solving \(A^\top q=S_0\) is not enough. For no-arbitrage, state prices must be positive for economically possible states.

  5. Confusing uniqueness with existence. No-arbitrage gives existence of positive state prices. Completeness gives uniqueness.

  6. Treating the binomial formula as universal. The formula \(q=(R-d)/(u-d)\) is specific to a two-state one-stock model with a bank account.

6.26 3.25 Exercises

6.26.1 Conceptual Exercises

  1. Explain why a one-period model can be studied using finite-dimensional linear algebra.

  2. Define an arbitrage portfolio. Why is a portfolio with high expected return not necessarily an arbitrage?

  3. Explain the difference between an attainable claim and a nonattainable claim.

  4. State the law of one price and explain why it follows from no-arbitrage.

  5. Explain why state prices must be positive in a no-arbitrage model.

  6. Explain why the risk-neutral probability is generally not the same as the physical probability.

6.26.2 Computational Exercises

  1. In a one-period binomial model, let

    \[ S_0=50,\quad u=1.3,\quad d=0.7,\quad R=1.04. \]

    Compute the risk-neutral up probability.

  2. For the model in Exercise 7, price a European call with strike \(K=55\).

  3. Compute the replicating portfolio for the call in Exercise 8.

  4. Verify directly that the future payoff of the replicating portfolio equals the call payoff in both states.

6.26.3 Linear Algebra Exercises

  1. Let

\[ A=\begin{bmatrix} 1.05 & 120\\ 1.05 & 80 \end{bmatrix}, \qquad S_0=\begin{bmatrix}1\\100\end{bmatrix}. \]

Solve \(A^\top q=S_0\) and convert \(q\) into a risk-neutral probability vector.

  1. Consider a three-state model with bank account payoff \(1.05\) and stock payoffs \(70,100,140\). Show that the market with only the bank account and stock is incomplete.

  2. In Exercise 12, determine whether the payoff \(X=(5,10,15)^\top\) is attainable.

  3. In Exercise 12, determine whether the payoff \(Y=(0,0,40)^\top\) is attainable.

  4. Let \(A\) be an \(m\times(d+1)\) payoff matrix. Prove that the market can be complete only if \(d+1\ge m\).

6.26.4 Proof Exercises

  1. Prove that if a strictly positive state-price vector exists, then the market has no arbitrage.

  2. Prove that if the market is complete and no-arbitrage holds, then every claim has a unique no-arbitrage price.

  3. Prove the binomial no-arbitrage condition \(d<R<u\).

  4. Derive the binomial replication formulas

\[ \Delta=\frac{X_u-X_d}{S_0(u-d)}, \qquad B=\frac{uX_d-dX_u}{R(u-d)}. \]

  1. Show algebraically that the replication price equals the risk-neutral expectation price in the binomial model.

6.26.5 Python Exercises

  1. Write a Python function binomial_price(S0, K, u, d, R) that returns the call price, risk-neutral probability, delta, and bank position.

  2. Modify the function from Exercise 21 so that it raises an error if \(d<R<u\) is not satisfied.

  3. Write code that accepts a payoff matrix \(A\) and price vector \(S_0\) and solves for a state-price vector when the system has a unique solution.

  4. Write code that checks whether a claim \(X\) is attainable by computing the least-squares residual of \(A\theta=X\).

  5. For a three-state incomplete market, plot the range of no-arbitrage prices for calls with strikes \(K=80,100,120\).

6.26.6 AI-Assisted Exercises

  1. Ask an AI tool to explain state prices to a student who knows linear algebra but not finance. Rewrite the explanation in your own words and correct any imprecise statements.

  2. Ask an AI tool to generate a one-period arbitrage example. Verify the example numerically. If the example is wrong, repair it.

  3. Ask an AI tool to compare replication pricing and risk-neutral pricing. Identify which assumptions are needed for the two methods to agree.

  4. Ask an AI tool to write Python code for binomial option pricing. Add no-arbitrage checks and unit tests.

  5. Ask an AI tool to explain incomplete markets. Make sure the explanation distinguishes price bounds from unique prices.

6.27 3.26 Chapter Summary

This chapter developed one-period asset pricing as a finite-dimensional mathematical theory.

The main objects are:

  • state space \(\Omega=\{\omega_1,\ldots,\omega_m\}\);
  • payoff vectors \(X\in\mathbb R^m\);
  • price vector \(S_0\);
  • payoff matrix \(A\);
  • portfolio vector \(\theta\);
  • attainable claims \(X=A\theta\);
  • state-price vector \(q\) satisfying \(A^\top q=S_0\);
  • risk-neutral probability \(Q_i=Rq_i\).

The main principles are:

\[ \text{no arbitrage} \Longleftrightarrow \text{existence of positive state prices}, \]

and, in a model with a riskless asset,

\[ \pi(X)=\frac{1}{R}\mathbb E^{\mathbb Q}[X] \]

for attainable claims. Completeness gives uniqueness of the pricing measure and hence unique prices for all claims.

These ideas will be extended in Chapter 4 to multi-period binomial models, where one-period pricing is applied repeatedly through backward induction.