add chapter 14
This commit is contained in:
@@ -2,22 +2,25 @@ using Genie
|
||||
using Statistics
|
||||
using ThreadsX
|
||||
|
||||
function v_asian_sample(T, X0, K, r, s, m)::Float64
|
||||
function payoff_asian_sample(T, X0, K, r, s, m)::Float64
|
||||
X = X0
|
||||
sumX = X
|
||||
d = T / m
|
||||
for i in 1:m
|
||||
X *= exp((r-s^2/2)*d + s*sqrt(d)*randn())
|
||||
X *= exp((r - s^2 / 2) * d + s * sqrt(d) * randn())
|
||||
sumX += X
|
||||
end
|
||||
return exp(-r*T) * max(sumX / (m + 1) - K, 0)
|
||||
Y = sumX / (m + 1)
|
||||
return exp(-r * T) * max(Y - K, 0)
|
||||
end
|
||||
|
||||
function v_asian_value(T, X0, K, r, s, m, max_time)
|
||||
function asian_value(T, X0, K, r, s, m, max_time)
|
||||
result = Float64[]
|
||||
start_time = time()
|
||||
while time() - start_time < max_time
|
||||
append!(result, ThreadsX.map(_ -> v_asian_sample(T, X0, K, r, s, m), 1:10_000))
|
||||
append!(result,
|
||||
ThreadsX.map(_ -> payoff_asian_sample(T, X0, K, r, s, m),
|
||||
1:10_000))
|
||||
end
|
||||
n = length(result)
|
||||
mv = mean(result)
|
||||
@@ -35,7 +38,7 @@ Genie.Router.route("/", method=POST) do
|
||||
return try
|
||||
K = float(message["K"])
|
||||
max_time = float(message["max_time"])
|
||||
value = v_asian_value(1.0, 50.0, K, 0.05, 0.3, 200, max_time)
|
||||
value = asian_value(1.0, 50.0, K, 0.05, 0.3, 200, max_time)
|
||||
Genie.Renderer.Json.json((status="OK", value=value))
|
||||
catch
|
||||
Genie.Renderer.Json.json((status="ERROR", value=""))
|
||||
|
||||
Reference in New Issue
Block a user