Two prices for one call option problem


I have started to learn mathematical finance and I find out about this problem:

I find out that there exists options that are priced in assets and are settled in cash, but also in assets terms. (So instead of getting 800$, you would get 800/1600 = 0.5 assets, where 1600 is the current price of the asset).

How should I price these options? I came up with two approaches.

One approach is to use Black Scholes model and find price in USD and the convert it to amount of asset by dividing it by current price of the asset.

But I also come up with a second approach. Instead of BS, I can directly calculate the price in asset terms. I can simulate the brownian motion and then calculate the price as:

[math]x = E_{p}[max(0, \frac{(p-K)}{p}][/math]

  • K is strike price
But the second approach gives me different value for ATM options than the first approach.

- S = 20
- K = 20
- r = 0
- T = 7/365.2425
- vol = 1.3

First approach:
In USD = $1.43 = 0.0715 in asset

Second Apporach:
In Asset = 0.05758 in asset = $1.15

Brownian motion:
def MCSIM(S,t,r,vol,M=1000000):
    N = 1
    T = t
    dt = T/N
    nudt = (r - 0.5*vol**2)*dt
    volsdt = vol*np.sqrt(dt)
    lnS = np.log(S)

    Z = np.random.normal(size=(N,M))
    delta_lnSt = nudt + volsdt*Z
    lnSt = lnS + np.cumsum(delta_lnSt,axis=0)
    lnSt = np.concatenate((np.full(shape=(1,M),fill_value=lnS), lnSt))

    ST = np.exp(lnSt).T[:,1]
    return ST

Pricing functions:
# first Approach (Black Scholes))
def option1A(S,K,t,r,vol,M=1000000):
    paths = MCSIM(S,t,r,vol,M=M)
    return np.maximum(0, paths - K).mean()*np.exp(-r*t)/S

# Second Approach
def option2A(S,K,t,r,vol,M=1000000):
    paths = MCSIM(S,t,r,vol,M=M)
    return np.maximum(0, (paths - K)/paths).mean()
Last edited: