위에서 사용한 CreateMatrixPQ() 함수는 다음과 같다.
# 자산에 대한 투자자의 전망과 전망의 기대수익률을 행렬로 만든다
def CreateMatrixPQ( names, views ):
r, c = len( views ), len( names )
# 투자 전망과 기대수익률 행렬v# views[i][3]은 기대수익률을 가리킴
Q = [ views[ i ][ 3 ] for i in range( r ) ]
# 전망 행렬 P를 만들기 위해
# 구성 자산 딕셔너리 작성
nameToIndex = dict( )
for i, n in enumerate( names ):
nameToIndex[ n ] = i
# 투자 전망
P = np.zeros( [ r, c ] )
for i, v in enumerate( views ):
# 가령 전망이 ( 'MSFT', '>', 'GE', 0.02 )라면
# views[ i ][ 0 ] <-- 'MSFT' --> 종목1(name1)
# views[ i ][ 1 ] <-- '>' --> 비교 연산자 자리
# views[ i ][ 2 ] <-- 'GE' --> 종목2(name2)
# views[ i ][ 3 ] <-- '0.02'
name1, name2 = views[ i ][ 0 ], views[ i ][ 2 ]
P[ i, nameToIndex[ name1 ] ] = +1 if views[ i ][ 1 ] == '>' else -1
P[ i, nameToIndex[ name2 ] ] = -1 if views[ i ][ 1 ] == '>' else +1
return np.array(Q), P