-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun_parallel.py
42 lines (37 loc) · 1.58 KB
/
run_parallel.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import sys
import lsv_rkhs
import mckeangenerator
# from nncv_eval import nncv_run
from flat_smc import flat_smc_run
from mlmc import mlmc_run
from mlmc_dev import mlmc_dev_run
from payouts import CallPayout, TrigonometricPayout, SquaredPayout
import lsv
from ploycv import poly_run
import numpy as np
import multiprocessing
from runner import SimulationArgs, print_results
#from smc import smc_run
from splinecv import spline_run
from splinecv_dev import spline_dev_run
if __name__ == '__main__':
simulation_name = "mlmc"
M = 100
#generator = mckeangenerator.SimpleGenerator()
#generator = mckeangenerator.SimpleCorrGenerator(-0.5)
#payout = CallPayout(0.5)
#payout = SquaredPayout()
generator = lsv_rkhs.LsvGenerator()
#generator = lsv.LsvGenerator()
payout = CallPayout(generator.market_vol.s0)
args = SimulationArgs(generator, payout)
arg_list = [args] * M
pool_obj = multiprocessing.Pool(processes=6)
result_list = pool_obj.map(mlmc_dev_run, arg_list)
result_mc = np.array([result_list[i][0] for i in range(M)])
result_mc_cv = np.array([result_list[i][1] for i in range(M)])
result_mc_cv_mean = np.array([result_list[i][2] for i in range(M)])
np.savez("data/"+simulation_name+"_"+args.generator.name+"_"+args.payout.name+"_%d.npz" % args.L, result_mc, result_mc_cv, result_mc_cv_mean)
print_results(simulation_name, result_mc, result_mc_cv, result_mc_cv_mean, args, sys.stdout)
with open("data/report.txt", "a") as report_file:
print_results(simulation_name, result_mc, result_mc_cv, result_mc_cv_mean, args, report_file)