커뮤니티

수식 문의 드립니다.

프로필 이미지
밝은아침
2014-01-15 17:28:33
1072
글번호 222780
답변완료
코스피200 선물가격을 참조하여 해당월물 ATM 콜,풋을 매도 후 헷지해 나가는 경우입니다. 자세한 사항은 아래 참조 부탁드립니다. - 진입: 옵션 만기 다음날인 금요일 오전 9시 1분에 코스피200선물 가격에서 가장 가까운 ATM Call,Put X계약씩 매도 (매도 가능 계약수는 Input: Y(비율= 매도증거금/예탁금)을 설정해 예를 들어 Y=25(%)이면 예탁금의 25% 내에서 최초로 매도 가능한 ATM Call,Put 계약수 대로 매도 되도록 코딩, 매도 가능 계약수 산정은 최초 매도 진입에만 적용) - 포지션 진입 후, 포지션 델타가 +/- 1 초과 여부 체크해 가면서, 1. 포지션 델타가 1 이상 도달 시, 도달 시점의 코스피200 선물가에 가장 가까운 ATM Put 1계약 매수, Call 1계약 매도 (델타헷징 후 당일 델타가 다시 1 이상 도달 시, 같은 방법으로 ATM Put 1계약 매수, Call 1계약 매도) 코스피200선물 시가 갭하락으로 포지션 델타가 (예를 들면) 1.5 근처에서 장시작시, ATM Put 2계약 매수, Call 1계약 매도 (같은 방식으로 포지션 델타가 2.4 가 되면 (0.5 단위 반올림하면 2.5가 되므로) ATM Put 3계약 매수, Call 2계약 매도 2. 포지션 델타가 -1 이하 도달 시, 도달 시점의 코스피200 선물가에 가장 가까운 ATM Call 1계약 매수, Put 1계약 매도 (델타헷징 후 당일 델타가 다시 -1 이하 도달 시, 같은 방법으로 ATM Call 1계약 매수, Put 1계약 매도 코스피200선물 시가 갭상승으로 포지션 델타가 (예를 들면) -1.5 근처에서 장시작시, ATM Call 2계약 매수, Put 1계약 매도 (같은 방식으로 포지션 델타가 -2.4 가 되면 (0.5 단위 반올림하면 -2.5가 되므로) ATM Call 3계약 매수, Put 2계약 매도 - 청산: 진입월물의 만기 2일 전인 화요일 오후 3시에 포지션 일괄 청산 항상 감사드립니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-01-28 13:05:00

안녕하세요 예스스탁입니다. 예스스팟은 기본적으로 사용자본인이 작성하셔야 합니다. 저희족에서 작성해 드리는 내용은 기본 가이드라인만 제공됩니다. 아래식 구조 참고하셔서 수정보완해 사용하시기 바랍니다. 1.스크립트 객체 설정 옵션객체 추가 계좌객체 추가 --> 선옵계좌 종목객체 추가 --> 속성에서 코피스200선물로 지정 외부변수 추가 --> 속성에서 변수명은 Y, 초기값 25, 데이터형 숫자로 지정 2. 스팟식 var S1; var OC = new Array(100); var OP = new Array(100); var Delta1; var Delta2; //스팟 시작시에 function Main_OnStart() { var d = new Date(); //만기 다음날이면 0 아니면 1 if (d.getDate() >= 9 && d.getDate() <= 15 && d.getDay() == 5 && Option.GetRemainDays(0, 0) > 3) S1 = 0; else S1 = 1; //타이머 동작 1초 Main.SetTimer(1, 1000); } function Main_OnTimer(nEventID) { //코스피200선물에 가장 가까운 콜/풋 종목 선정 var var1 = MarketData1.current; var var2 = parseInt(var1/10)*10; var var3 = var1%10; var ATM = -1; if (var3 >= 8.75) ATM = var2+10; else if (var3 < 8.75 && var3 >= 6.25) ATM = var2+7.5; else if (var3 < 6.25 && var3 >= 3.75) ATM = var2+5.0; else if (var3 < 3.75 && var3 >= 1.25) ATM = var2+2.5; else ATM = var2+0.0; var UNum = Option.uppersATM; var LNum = Option.lowersATM; CC = -1; for (var i = -LNum; i <= UNum; i++) { if (Option.GetExercisePrice(0, i) == ATM) CC = Option.GetATMCallRecent(i); } PP = -1; for (var i = -UNum; i <= LNum; i++) { if (Option.GetExercisePrice(1, i) == ATM) PP = Option.GetATMPutRecent(i); } //날자 및 시계계산 var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //만기 후 첫날이고 옵션잔존일수가 3일 이상일때 if (S1 == 0 && HHMMSS >= 91000 && d.getDate() >= 8 && d.getDate() <= 15 && d.getDay() == 5 && Option.GetRemainDays(0, 0) > 3 && MarketData1.open > 0) { S1 = 1; //예약총액의 25%씩 콜/풋 매수 var CallV = Math.floor(Account1.GetBalanceETCinfo(0)*(Y/100)/(Option.GetBidByCode(CC,5)*500000)); var PutV = Math.floor(Account1.GetBalanceETCinfo(0)*(Y/100)/(Option.GetBidByCode(PP,5)*500000)); Account1.OrderSell(CC, CallV, Option.GetBidByCode(CC,5),0); Account1.OrderSell(PP, PutV, Option.GetBidByCode(PP,5),0); } //S1이 1이고 옵션 잔존일수가 4이상이고 잔존일수가 3일인 날에는 15시 전 if (S1 == 1 && MarketData1.open > 0 && (Option.GetRemainDays(0, 0) >= 4 || (Option.GetRemainDays(0, 0) == 3 && HHMMSS < 150000))) { //직전 dleta1 Delta2 = Delta1; //현재 계좌의 dleta합 저장 Delta1 = Account1.GetTotalDelta(3, 0);//계좌 전체 옵션의 델타합 //현재 계좌 옵션종목의 델타합이 1이상이고 직전은 1 미만 if (Delta1 >= 1 && Delta2 < 1) { Account1.OrderSell(CC,1, Option.GetBidByCode(CC,5),0); Account1.OrderBuy(PP, 1, Option.GetAskByCode(PP,5),0); } //현재 계좌 옵션종목의 델타합은 -1이하이고 직전은 -1 보다 큼 if (Delta1 <= -1 && Delta2 > -1) { Account1.OrderBuy(CC,1, Option.GetAskByCode(CC,5),0); Account1.OrderSell(PP, 1, Option.GetBidByCode(PP,5),0); } } //잔존일수 3일이고 15시 이후에 잔고의 옵션종목 모두 청산 if (S1 == 1 && Option.GetRemainDays(0, 0) == 3 && HHMMSS >= 150000 ) { //타이머 종료 Main.KillTimer(1); //계좌 옵션 종목 모두 청산 var num = Account1.GetTheNumberOfBalances(); for (var i = -UNum; i <= LNum; i++) { Account1.SetUnfillIndex(1); if (Account1.Balance.code != MarketData1.code && Account1.Balance.count > 0) { if (Account1.Balance.position == 1) Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count,0,1); if (Account1.Balance.position == 2) Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1); } } } } 즐거운 하루되세요 > 밝은아침 님이 쓴 글입니다. > 제목 : 수식 문의 드립니다. > 코스피200 선물가격을 참조하여 해당월물 ATM 콜,풋을 매도 후 헷지해 나가는 경우입니다. 자세한 사항은 아래 참조 부탁드립니다. - 진입: 옵션 만기 다음날인 금요일 오전 9시 1분에 코스피200선물 가격에서 가장 가까운 ATM Call,Put X계약씩 매도 (매도 가능 계약수는 Input: Y(비율= 매도증거금/예탁금)을 설정해 예를 들어 Y=25(%)이면 예탁금의 25% 내에서 최초로 매도 가능한 ATM Call,Put 계약수 대로 매도 되도록 코딩, 매도 가능 계약수 산정은 최초 매도 진입에만 적용) - 포지션 진입 후, 포지션 델타가 +/- 1 초과 여부 체크해 가면서, 1. 포지션 델타가 1 이상 도달 시, 도달 시점의 코스피200 선물가에 가장 가까운 ATM Put 1계약 매수, Call 1계약 매도 (델타헷징 후 당일 델타가 다시 1 이상 도달 시, 같은 방법으로 ATM Put 1계약 매수, Call 1계약 매도) 코스피200선물 시가 갭하락으로 포지션 델타가 (예를 들면) 1.5 근처에서 장시작시, ATM Put 2계약 매수, Call 1계약 매도 (같은 방식으로 포지션 델타가 2.4 가 되면 (0.5 단위 반올림하면 2.5가 되므로) ATM Put 3계약 매수, Call 2계약 매도 2. 포지션 델타가 -1 이하 도달 시, 도달 시점의 코스피200 선물가에 가장 가까운 ATM Call 1계약 매수, Put 1계약 매도 (델타헷징 후 당일 델타가 다시 -1 이하 도달 시, 같은 방법으로 ATM Call 1계약 매수, Put 1계약 매도 코스피200선물 시가 갭상승으로 포지션 델타가 (예를 들면) -1.5 근처에서 장시작시, ATM Call 2계약 매수, Put 1계약 매도 (같은 방식으로 포지션 델타가 -2.4 가 되면 (0.5 단위 반올림하면 -2.5가 되므로) ATM Call 3계약 매수, Put 2계약 매도 - 청산: 진입월물의 만기 2일 전인 화요일 오후 3시에 포지션 일괄 청산 항상 감사드립니다.