- Joined
- 9/22/22
- Messages
- 1
- Points
- 1
Hi,
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]
where
Example:
- 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
Code
[CODE lang="python" title="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[/CODE]
[CODE lang="python" title="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()
[/CODE]
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]
where
- K is strike price
Example:
- 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
Code
[CODE lang="python" title="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[/CODE]
[CODE lang="python" title="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()
[/CODE]
Last edited: