gtmvn.gms : 전송을 사용하여 주식 수익률 데이터에 대한 numpy.multivariate_normal 사용 시연

설명

슬롯 커뮤니티 전송 메소드 toDense 및 setRecords를 사용하여 작업하세요.
다음과 같은 강력한 numpy 메소드를 활용하는 "숫자 전용" numpy.array
다변량 정규에 대한 샘플을 생성하는 multivariate_normal
유통. 과거 주식 수익률 데이터는 다음을 구축하는 데 사용됩니다.
numpy.multivariate_normal 메소드에 필요한 공분산 및 평균 데이터.

카테고리 : 슬롯 커뮤니티 데이터 유틸리티 라이브러리


메인 파일 : gtmvn.gms 포함: gtmvn.gms stockdata.csv

$title 전송을 사용하여 주식 수익률 데이터에 numpy.multivariate_normal 사용 시연(gtmvn,SEQ=143)

$onText
슬롯 커뮤니티 전송 메소드 toDense 및 setRecords를 사용하여 작업하세요.
다음과 같은 강력한 numpy 메소드를 활용하는 "숫자 전용" numpy.array
다변량 정규에 대한 샘플을 생성하는 multivariate_normal
유통. 과거 주식 수익률 데이터는 다음을 구축하는 데 사용됩니다. 
numpy.multivariate_normal 메소드에 필요한 공분산 및 평균 데이터.
$offText

세트
   날짜 '날짜'
   주식 '주식';

테이블 가격(날짜<,주식<) '일별 가격'
$onDelim
$include stockdata.csv
$offDelim
;

세트
   dp(dates) '첫 번째 날짜를 제외한 모든 날짜';
매개변수
   return(dates,stocks) '일일 수익률'
   평균(주식) '일일 예상 수익률'
   cov(stocks,stocks) '공분산 행렬';
별칭 (날짜, d), (주식, s, sp);

dp(날짜) = ord(날짜)>1;

return(dp(d),s) = log(가격(d,s)) - log(가격(d-1,s));
평균(들) = sum(dp, return(dp,s))/card(dp);
cov(s,sp) = sum(dp, (return(dp,s) - 평균(들))*(return(dp,sp) - 평균(sp))) / (card(dp)-1);

* 다변량 정규 분포의 100개 표본은 100일간의 주식 수익률을 나타냅니다.
$설정되지 않은 경우 NDAYS $set NDAYS 100
ds '시뮬레이션된 날짜' 설정 / d1*d%NDAYS% /;
매개변수 mvn(stocks,ds) '다변량 정규를 기반으로 한 일일 주식 수익률 시뮬레이션';

임베디드 코드 Python:
슬롯 커뮤니티transfer를 gt로 가져오기
numpy.random import default_rng에서

nr = default_rng(0) # 반복 호출이 다른 무작위 시퀀스를 생성하지 않도록 정적 시드를 설정합니다.
m = gt.Container(슬롯 커뮤니티db, system_directory=r'%슬롯 커뮤니티sysDir% '.strip())
cov = m.data["cov"].toDense()
mu = m.data["평균"].toDense()
mvn = nr.multivariate_normal(mu, cov, 크기=%NDAYS%, 방법='cholesky')
m.data["mvn"].setRecords(mvn.T)
m.write(슬롯 커뮤니티db, ["mvn"])
endEmbeddedCode mvn
mvn을 표시합니다;