이것은 이전에 질문했던 또 다른 질문과 관련이 있습니다. 큰 데이터 세트에서 newton 메서드를 실행하고 싶습니다. 아래 루프를 사용하여 만든 코드입니다. 나는 5 천만 라인에 그것을 실행해야하고 루프는 꽤 다루기 힘들다. Pandas/Numpy/ect를 사용하여 실행하는 더 효율적인 방법이 있습니까? 미리 감사드립니다.효율적인 뉴턴 알고리즘 실행
In:
from pandas import *
from pylab import *
import pandas as pd
import pylab as plt
import numpy as np
from scipy import *
import scipy
df = DataFrame(list([100,2,34.1556,9,105,-100]))
df = DataFrame.transpose(df)
df = df.rename(columns={0:'Face',1:'Freq',2:'N',3:'C',4:'Mkt_Price',5:'Yield'})
df2= df
df = concat([df, df2])
df = df.reset_index(drop=True)
df
Out:
Face Freq N C Mkt_Price Yield
0 100 2 34.1556 9 105 -100
1 100 2 34.1556 9 105 -100
In:
def Px(Rate):
return Mkt_Price - (Face * (1 + Rate/Freq) ** (- N) + (C/Rate) * (1 - (1 + (Rate/Freq)) ** -N))
for count, row in df.iterrows():
Face = row['Face']
Freq = row['Freq']
N = row['N']
C = row['C']
Mkt_Price = row['Mkt_Price']
row['Yield'] = scipy.optimize.newton(Px, .1, tol=.0001, maxiter=100)
df
Out:
Face Freq N C Mkt_Price Yield
0 100 2 34.1556 9 105 0.084419
1 100 2 34.1556 9 105 0.084419
정말 고유 한 채권이 50M입니까? 얼굴, 가격, 쿠폰을 표준 단위로 변환하고 그룹화하면 문제의 크기가 줄어 듭니까? – chrisb
그것의 약 40k 채권하지만 각기 다른 가격, 쿠폰, 성숙의 시간, 매일 요법과 시간 시리즈. –