
368
3
부
금융 데이터 과학
In [113]: %timeit simulate_tree_nb(500)
559μs±46.1μsperloop(mean±std.dev.of7runs,1000loopseach)
10.3.4
Cython
이전과 마찬가지로
Cython
을 사용하여 속도를 향상하려면 코드를 고쳐야 한다. 다음 버전은
주로 정적 자료형 선언을 사용하고 일반 파이썬 임포트에 비해 성능이 좋은 다른 임포트를 한
것이다.
In [114]: %%cython -a
import numpy as np
cimport cython
from libc.math cimport exp, sqrt
cdef float S0 = 36.
cdef float T = 1.0
cdef float r = 0.06
cdef float sigma = 0.2
def simulate_tree_cy(int M):
cdef int z, t, i
cdef float dt, u, d
cdef float[:, :] S = np.zeros((M + 1, M + 1),
dtype=np.float32)
➊
dt = T / M
u = exp(sigma * sqrt(dt))
d = 1 / u
S[0, 0] = S0
z = 1
for t in range(1, M + 1): ...