계속 글 쓰고있는, 어제부터 코딩시작한 갤러인데 (코딩자체가 처음임) : 참고로 밑에 쓴 것 처럼, 프로그래머로 갈 생각도 없으며 필요시 페이함.
이게 교수가 우리한테 해결하라고 준 내용이거든.
일단 어떤걸 해야되는지 먼저 보여주고 그 다음에 교수가 준 코드를 써 넣을게.
일단 밑에 처럼 프로그래밍 돌려서 ST 의 값을 구하고(한 천번이나 만번 시뮬레이션 하는듯 : 참고로 랜덤이라 가격이 다 다르게 나올 수 있음),
이걸 통해서 일단 ST 기간의 call 가격을 구함.
ST가 X보다 더 비싸면 call (밑에 c) = ST - X 이고 (밑에 e ^ -r t 이건 그냥 시간으로 나눠준건데 별 신경안써도 됌)
X가 st보다 더 비싸면 이 가격은 0 이 되는거임.
교수가 준 코드는 이거임. (include에 practical 파일같은건 내가 갖고있음 교수가 준거)
============================================================================
#include "Practical01Exercises.hpp"
#include "MyRand.hpp"
#include
using namespace std;
double exercises::MonteCarlo1(double dR,
double dSigma,
double dS0,
double dK ,
double dT,
unsigned long int iN)
{
double res(0.0);
double drift=(dR-0.5*dSigma*dSigma)*dT;
double vol=sqrt(dT)*dSigma;
std::vector vec(iN);
NormalDist(vec);
for(unsigned long int i=0; i {
double dS=dS0*exp(drift+vol*vec[i]);
//double S=S0*exp(drift+vol*NormalDist());
res+=(dS }
return res*exp(-dR*dT);
}
================================================================================
이제 여기서 내가 해야되는건
sigma. dSigma , dS0, dK, dT, iN 에 내가 원하는 숫자 집어넣어서 계산하면 됌. (일단 자료 입력하는거 cin<< 해서 하는건 알겠음)
이걸 바탕으로, 지금 이 밑에 있는 코드에게 c값을 구하게하고, 뭐 시뮬레이션 1000번 돌렸으면 1000개의 각각의 c값이 다를거 아니야?
이 다른 c값들의 평균값 (모든 c의 합 나누기 1000개) 이 나오게 하면 마무리 되는건데.
내 문제는 일단
std::vector vec(iN);
NormalDist(vec) 이거부터 막힘.
코드 자체를 잘 모르니까.. ㅠ ㅠ
그리고 마지막에 계산해서 방출해주는건 int main() 이런식으로 코드짜면 되는거임?
for(unsigned long int i=0; i {
double dS=dS0*exp(drift+vol*vec[i]);
//double S=S0*exp(drift+vol*NormalDist());
res+=(dS }
이부분도 설명좀 부탁함. 만약에 iN이 1000 이라면, 얘가 999번까지 시뮬레이션 돌린다는거임? 여튼 앞서서 ㄳㄳ 함.
이런거 여기서 물어보지마 다 국비충 수료도 못한 븅신들밖에 없는 곳인데
수학은 문제가 없는데, 프로그래밍 자체가 너무 초보라..