계속 글 쓰고있는, 어제부터 코딩시작한 갤러인데 (코딩자체가 처음임) : 참고로 밑에 쓴 것 처럼, 프로그래머로 갈 생각도 없으며 필요시 페이함.

이게 교수가 우리한테 해결하라고 준 내용이거든.


일단 어떤걸 해야되는지 먼저 보여주고 그 다음에 교수가 준 코드를 써 넣을게.


일단 밑에 처럼 프로그래밍 돌려서 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번까지 시뮬레이션 돌린다는거임? 여튼 앞서서 ㄳㄳ 함.