월 옵션은 매월 둘째 주 목요일 만기입니다.

만기일을 찾을 수 있도록 time 함수를 이용하여 어찌 어찌할 수 있겠지만 이 정도는 그냥 손으로 만드는 것이 더  효율적입니다.

 

제가 사용하는 일자를 공유합니다. 한땀 한땀 달력보고 입력한 것이니 맞을 것으로 예상되나, 혹시 틀린 날이 있다면 댓글 부탁드립니다.

 

option_end_days = {
        2010 : {1:14, 2:11,  3:11,  4:8, 5:13, 6:10,  7:8, 8:12, 9:9, 10:14, 11:11,  12:9},
        2011 : {1:13, 2:10,  3:10,  4:14, 5:12, 6:9,  7:14, 8:11, 9:8, 10:13, 11:10,  12:8},
        2012 : {1:12, 2:9,  3:8,  4:12, 5:10, 6:14,  7:12, 8:9, 9:13, 10:11, 11:8,  12:13},
        2013 : {1:10, 2:14,  3:14,  4:11, 5:9, 6:13,  7:11, 8:8, 9:12, 10:10, 11:14,  12:12},
        2014 : {1:9, 2:13,  3:13,  4:10, 5:8, 6:12,  7:10, 8:14, 9:11, 10:8, 11:13,  12:11},
        2015 : {1:8, 2:12,  3:12,  4:9, 5:14, 6:11,  7:9, 8:13, 9:10, 10:8, 11:12,  12:10},
        2016 : {1:14, 2:11,  3:10,  4:14, 5:12, 6:9,  7:14, 8:11, 9:8, 10:13, 11:10,  12:8},

        2017 : {1:12, 2:9,  3:9,  4:13, 5:11, 6:8,  7:13, 8:10, 9:14, 10:12, 11:9,  12:14},
        2018 : {1:11, 2:8,  3:8,  4:12, 5:10, 6:14, 7:12, 8:9,  9:13, 10:11, 11:8,  12:13},
        2019 : {1:10, 2:14, 3:14, 4:11, 5:9,  6:13, 7:11, 8:8,  9:11, 10:10, 11:14, 12:12},
        2020 : {1:9,  2:13, 3:12, 4:9,  5:14, 6:11, 7:9,  8:13, 9:10, 10:8,  11:12, 12:10},
        2021 : {1:14, 2:10, 3:11, 4:8,  5:13, 6:10, 7:8,  8:12, 9:9,  10:14, 11:11, 12:9},
        2022 : {1:13, 2:10, 3:10, 4:14, 5:12, 6:9,  7:14, 8:11, 9:8,  10:13, 11:10, 12:8},
        2023 : {1:12, 2:8, 3:10, 4:14, 5:12, 6:9,  7:14, 8:11, 9:8,  10:13, 11:10, 12:8},
        2024 : {1:11, 2:8, 3:14, 4:11, 5:9, 6:13,  7:11, 8:8, 9:12,  10:10, 11:14, 12:12},
     }

 

 

반응형

설정

트랙백

댓글

TradingView에서 인기 높은 지표 중의 하나가 Super Trend입니다. 추세의 시작 시점과 끝을 알려주는 지표로 많은 사랑을 받고 있습니다.

 

https://www.tradingview.com/v/r6dAP7yi/

 

SuperTrend — KivancOzbilgic tarafından gösterge

SuperTrend is one of the most common ATR based trailing stop indicators. In this version you can change the ATR calculation method from the settings. Default method is RMA, when the alternative method is SMA. The indicator is easy to use and gives an accur

tr.tradingview.com

 

Apple 차트에 대한 SuperTrend signal입니다. Apple이 추세를 잘 그리는 종목이라 진입 시점이 잘 맞는 것 같습니다.

 

 

SuperTrend의 pine script는 아래와 같습니다.

https://www.tradingview.com/v/r6dAP7yi/
//@version=4
study("Supertrend", overlay = true, format=format.price, precision=2, resolution="")

Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)

atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1

plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")

 

TradingView를 사용한다면 SuperTrend를 바로 사용할 수 있지만 본인이 직접 자동매매를 하는 경우에는 pine script를 본인이 사용하는 컴퓨터 언어로 변환작업을 해야합니다.

 

이에 SuperTrend 지표를 python으로 변환하는 과정을 정리하고자 합니다.

다음 편에서는 SuperTrend 지표를 만드는 방법에 대하여 정리하면서 해당하는 python code를 함께 정리하도록 하겠습니다.

 

반응형

설정

트랙백

댓글

지난 번에 옵션 양매도에 대하여 백테스트 한 결과를 공유하였습니다.

https://money-expert.tistory.com/90
[시스템트레이딩] 수익나는 옵션 매도 전략(8)

 

그때 결론은 수익이 나지 않지 않았는데요. 최근 만기일에 손매매를 해보니 조금씩 수익이 나는 것 같습니다. 그래서 다시 한번 검토해보기로 했습니다.

 

기존 백테스트 관련 소스를 들여다보니, 코드가 상당히 복잡해서 다시 작성하였습니다.

 

옵션 양매도 전에 일단 옵션 nake 매수/매도 부터 먼저 개발을 진행하고 있습니다. 우선 백테스트부터 해야겠죠. 지금까지 확인한 결과를 공유합니다.

 

결론적으로 아주 단순한 전략인 이평 5/10일 골드/데드만으로도 수익이 납니다. 단 콜/풋 nake 매도의 경우에만 수익이 납니다. 

 

1분 봉으로 백테스트 한 결과는 아래와 같습니다.

 

한마디로 요약하면

 

콜옵션매도 천국/옵션매수 지옥

 

옵션의 특성을 이해하면 당연한 결과일 수 있습니다. 시간이 지날수록 프리미엄이 감소하는 세타의 의력을 다시 한번 느꼈습니다. 

 

콜매수한 종목 중 손실이 가장 많이 난 경우를 확인해보니 추세가 나오지 않은 상태에서 지속적으로 손절이 누적되면서 손실이 나는 현상을 보여주고 있습니다.

 

 

반면에 콜 매도의 경우에는 지수가 큰 폭으로 상승한 11/13일에도 수익이 나고 있습니다. 아래 그래프에서 확인할 수 있듯이 중간 중간 하락시에 수익을 잘 챙기고 있습니다. 대세 상승 구간에서는 빠른 손절 혹은 진입 자체를 하지 않습니다. 즉 이기는 게임을 하고 있습니다.

 

 

참고로 이번에 확인한 전략은 1 분봉 기준 MA5/MA10 골드크로그/데드 크로스로만 백테스트한 것이기 때문에 개선의 여지는 충분이 있습니다.

 

결론적으로 만기일 콜/풋은 매도 전략이 잘 먹힌다 입니다.

 

양매도 가기 전에 nake 매도에서 수익이 나는 것을 확인하다 보니 우선은 nake 매도 쪽으로 좀 더 검토하도록 하겠습니다.

 

반응형

설정

트랙백

댓글

예스트레이더(이하 예트)에서 시스템을 만들기 위해서는 언어의 한 종류인 YesLanguage를 배워야합니다. YesLanguage 로 원하는 수식을 자유롭게 만들기 위해서는 많은 공부가 필요합니다.

 

다행히 QnA 란에 질문하면 관리자가 친절하게 답변을 해 줍니다만, 매번 그렇게 하는 것도 어렵습니다. 스스로 공부를 많이 해서 불편함 없이 사용을 할 수 있다면 좋겠죠?

 

이번에 돌파 전략인 던키안 4주 채널 전략에 대한 백테스를 하게 되었는데, 제가 개발한 결과가 맞는지 검증하기 위하여 예트를 이용하기로 했습니다. 오랜만에 접속을 해보니 사용법이 가물가물하는군요.

 

이전 글 다시 읽어보면서 감을 찾은 후 YesLanguage를 열었습니다. 하지만 제가 원하는 바를 YesLanguage로 표현하는게 쉽지가 않더군요. 그래서 혹시나 하는 마음에 이와 유사한 수식이 있는 인터넷에서 찾아보았습니다.

 

다행히 제가 원했던 예제가 있었습니다. 

https://blog.naver.com/chartist/222633747003

 

 

주식시장을 이긴 전략들에 나오는 전략을 모두 YesLanguage로 만들어 올려놓으셨더군요. 덕분에 YesLanguage를 더 잘 이해할 수 있게 될 듯 합니다. 감사!!

 

이 글에 나오는 전략을 예트에서 실행하기 위한 절차를 자세하게 설명합니다.

 

이 post에 나오는 전략을 사용하기 위해서는 한가지 선행해야할 것이 있습니다. 바로 전략에서 사용하는 사용자 함수를 미리 복사를 해야하는 것인데요.

 

아래 글에 가서 WeekHigh.yfu, WeekLow.yfu를 다운 받은 후 YesTrader가 설치된 곳에 가서 복사를 해야합니다.

 

https://blog.naver.com/chartist/222633688599

 

설치 위치를 변경하지 않았다면 C 드라이브 밑 아래 위치에 복사하시면 됩니다.

C:\예스트레이더(x64)\YesLang\Functions

 

그리고 각 전략을 설명한 page에 있는 .ysg 파일을 아래 폴더에 복사하시면 됩니다.

 

이제 던키안의 4주 채널을 시뮬해볼 수 있는 준비가 마무리되었습니다.

 

YesTrader를 실행한 후 YesLanguage를 실행하면 방금 복사한 전략/함수들을 가져올 것인지 물어봅니다. Yes를 하시면 됩니다.

 

다음은 시스템 트레이딩을 실행하는 절차입니다.

1.시스템트레이딩 밑에 있는 시뮬레이션 차트를 누른다.

2. 원하는 종목/기간/봉 종류를 선택한다.

3. 빨간색을 표시된 시스템적용을 누른 후 좀전에 추가한 시스템을 선택한다.

4. 시뮬한 결과가 차트에 표시가 됨

5. 시스템 성능 보고서를 열어서 성과를 확인한다.

 

 

결과를 보면 원글에 나오는 성과보고서와 조금 차이가 나는데요.

원글은 평가 기간이 21/12/30일까지인 반면에 제가 돌려본 기간은 23/10월까지 입니다.

원글은 국내 지수에 대한 수익 그래프입니다(아래 왼쪽 그래프).

나스닥에 대하여 어떻 결과가 나올지 궁금하여 돌려본 결과는 오른쪽에 있습니다.

 

나스닥 상승시에는 수익그래프도 아주 이쁘게 우상향하고 있습니다만, 최근까지 반영한 시뮬 결과는 혼조 그자체이군요.

그 이유는 2022년 부터 나스닥이 하락을 했기 때문입니다.

결국 던키안4주채널 전략은 상승장에서 상승, 하락장에서는 하락하는 특징을 가지고 있다고 보시면 될 것 같습니다.

대부분의 추세 돌파 전략의 경우에는 이러한 단점을 가지고 있기 때문에 상승장에서만 적용하는 필터를 적용하는 경우가 많이 있습니다.

 

전략마다 통하는 시점이 있기 때문에 언제 어떤 전략을 돌려야 하는지를 선택하는 것 또한 중요한 전략인 듯 합니다.

 

반응형

설정

트랙백

댓글

지난 7편에서 수익이 나는 시뮬결과를 올렸습니다. 그 결과를 바탕으로 실제 거래를 위하여 개발을 진행했습니다.

그런데 지난 번 시뮬결과와는 전혀 다른 결과가 나왔습니다.

 

그 이유는 아래와 같습니다.

 

이전 시뮬에서는 특정 call/put pair의 조합으로 진행하였습니다. 따라서 특정 call/put 조합에서 손실이 나면 해당 일은 거래 종료하였는데요. 실제 거래에서는 시간 순으로 거래할 수 있는 pair 순서가 존재합니다. 이전 시뮬에서는 그 순서를 무시하고 임의의 순서로 처리가 되었습니다.

 

예를들어 지난 시뮬에서 2023/01/09을 보면 1번 거래하고 손실이 났으므로 거래를 종료했습니다. 하지만 실제 동작하는 시뮬을 만들어보니 거래가 종료되기 전에 거래 쌍을 여러 개 진입하게 됩니다(설정된 최대 값 만큼 진입). 그러다보니 1번 손실보고 마감하는 경우는 없다고 보시면 됩니다. 그래서 이전 시뮬에 비하여 손실은 늘어나는 구조일 수 밖에 없습니다.

 

실제 매매와 최대한 비슷하게 시뮬한 결과입니다.

조건은 이전 글과 거의 비슷하게 하였습니다. 차이가 있다면 최소 거래 pair를 2로 설정했다는 점입니다.

 

전략명 : 양매도 진입 제한(전략1)
거래대상 : 정규옵션 2/09일 만기
거래행사가쌍 :  285-342
거래일 : 2023/01/09 - 2/9
진입 : 거래 쌍 양합 이평 5/20 데드 크로스 나는 시점
청산 : 익절(90,000), 손절(-90,000) 혹은 이평 이평 60/120일 골드크로스
슬리피지 : 2.5 tick (양매도 한쌍 기준)
계약 수 : 콜/풋 각 1개
동시 진입 쌍 : 최소 2개 이상

승률은 50% 나왔지만 손익비가 나쁜 상황입니다. 결과론적으로 큰 손실입니다.

 

이런 저런 전략을 추가하면서 손실 금액을 낮추는 방법을 고민하고 있는데요.

우선 적용한 것은 거래 pair 별 손절 뿐 아니라 현재 진입 중인 모든 거래의 수익을 기준으로 손절하는 기능을 추가해보았습니다. 그리고 손절 금액도 -50,000원으로 줄였습니다.

전략명 : 양매도 진입 제한(전략2)
거래대상 : 정규옵션 2/09일 만기
거래행사가쌍 :  285-342
거래일 : 2023/01/09 - 2/9
진입 : 거래 쌍 양합 이평 5/20 데드 크로스 나는 시점
청산 : 
   - pair별 : 익절(90,000), 손절(-50,000) 혹은 이평 이평 60/120일 골드크로스
   - 거래쌍 수익 합 : 익절(200,000), 손절(-50,000)
슬리피지 : 2.5 tick (양매도 한쌍 기준)
계약 수 : 콜/풋 각 1개
동시 진입 쌍 : 최소 2개 이상

 

 

손실이 좀 줄었군요. 그렇다고 이전 시뮬 같이 수익은 아니므로, 실전에 투입하기에는 부족한 상태입니다.

 

과연 장중 양매도가 수익이 나는 전략인지 고민하지 않을 수 없는 상태입니다.

반응형

설정

트랙백

댓글

시뮬레이션 방식을 바꾸었더니 (실제 매매와 비슷하게) 수익률이 -로 바뀌었습니다. (7) 글은 무시하시고 아래 (8)글 보세요.

https://money-expert.tistory.com/90

 

[시스템트레이딩] 수익나는 옵션 매도 전략(8)

지난 7편에서 수익이 나는 시뮬결과를 올렸습니다. 그 결과를 바탕으로 실제 거래를 위하여 개발을 진행했습니다. 그런데 지난 번 시뮬결과와는 전혀 다른 결과가 나왔습니다. 그 이유는 아래와

money-expert.tistory.com

이하 글은 무시하세요. ㅠㅠ

 

지난 글에서 2023년 1월 정규옵션 시뮬 결과를 정리했습니다. 손실금이 상당히 크게 나와서 더 이상 현 상태로 시뮬하는 것은 큰 의미가 없을 것 같아서, 수익나는 모델로 upgrade하여 다시 시뮬해보았습니다.

전략명 : 양매도 진입 제한(전략1)
거래대상 : 정규옵션 2/09일 만기
거래행사가쌍 :  285-342
거래일 : 2023/01/09 - 2/9
진입 : 거래 쌍 양합 이평 5/20 데드 크로스 나는 시점
	이전 거래가 손실이었으면 당일 더 이상 거래하지 않음
	이전 거래가 수익이었으면 거래 계속
청산 : 익절(90,000), 손절(-90,000) 혹은 이평 이평 60/120일 골드크로스
슬리피지 : 2.5 tick (양매도 한쌍 기준)
계약 수 : 콜/풋 각 1개

 

 

일자별 시뮬 결과입니다.

 

손실나는 경우에는 깔끔하게 한번만 거래하고 끝, 수익이 나는 경우에는 계속 거래한 결과입니다.

 

지난 글에서 정리했던 것을 기본 전략이라고 정의하고, 이번에 시뮬한 전략은 전략I 이라고 부르겠습니다. 

 

진입 조건 추가함에 따라 승률과 손익비가 아주 좋아졌습니다. 기본적으로 좋은 전략이었기 때문에 가능한 것 같습니다.

트레이딩의 기본인 손절은 빨리 수익은 길게..  이 방식이 적용된 아주 좋은 전략으로 보입니다.

 

드디어 수익나는 옵션 양매도 전략을 만들었습니다!!

 

아직 확인하고 싶은 사항들이 몇 있으나, 이 정도면 수익나는 전략으로 보입니다.따라서 지금부터는 실전을 위한 자동매매 개발을 시작합니다.

 

다음에는 실전 결과를 공유하도록 하겠습니다.

 

 

반응형

설정

트랙백

댓글

그동안 보유하고 있던 옵션 1분 데이터가 중요한 부분이 빠져있어서 정상적인 시뮬을 할 수가 없었습니다. 다행히 1월 옵션 데이터는 전체를 가지고 있더군요. 그래서 1월 데이터로 시뮬해보았습니다.

거래대상 : 정규옵션 2/09일 만기
거래행사가쌍 :  285-342
거래일 : 2023/01/09 - 2/9
진입 : 거래 쌍 양합 이평 5/20 데드 크로스 나는 시점
청산 : 익절(90,000), 손절(-90,000) 혹은 이평 이평 60/120일 골드크로스
슬리피지 : 2.5 tick (양매도 한쌍 기준)
계약 수 : 콜/풋 각 1개

일자별 시뮬 결과입니다.

 

결과가 생각보다 안좋습니다. 이전 결과와 비슷하게 손실이 난 날은 더 큰 손실이, 수익이 난 날은 더 큰 수익이 났습니다만 손실이 좀 더 많이 났습니다. 특히 손실 발생한 날에 매매 횟수도 엄청 많았고요.
그나마 승률이 50%를 넘었다는 것은 고무적입니다.

이제 손실이 난 날의 매매 횟수를 줄이는 작업을 진행 해보도록 하겠습니다.

반응형

설정

트랙백

댓글

그동안 변동성이 높은 wekkly option 위주로 시뮬을 해보았는데요. 이번에는 정규옵션에 대하여 시뮬한 결과를 공유합니다.

 

대상은 지난 달 만기 옵션입니다. 정규 옵션 역시 322-327까지 데이터가 없는 관계로 시뮬에 나오는 수치는 대략적인 흐름만 파악해보시기 바랍니다. 즉 손실이 나는 날에는 더 손실이 나고, 이익이 나는 날에는 더 이익이 납니다.

 

시뮬 결과입니다.

 

승률 : 66.67%

손익비 : 0.6

 

 

승률은 높지만 손익비가 낮게 나와서 약 이익 상태입니다. 아래 10, 12번 전략을 추가한다면 손익비를 더 높일 수 있을 듯 합니다.

 

문제는 slipage 비용인데요. 즉 거래가 많다는 의미입니다. 특히 손해가 나는 날 거래를 너무 많이 하는 점을 발견할 수 있습니다. 이에 대한 대응은 필수적이라고 보입니다.

 

---------------------------

앞으로 작업할 내용은 다음과 같습니다.

1. weekly option 대상 다양화 : 완료

2. 정규 옵션 back test : 완료

3. 최대 수익이 나는 익절과 손절 값 찾아보기 (현재는 익절 70,000원, 손절 -70,000원) : 완료

4. 특정 양매도 조합에서 청산 후 다시 진입하는 것이 유리한지 여부

5. 시간적인 관점에서 다양한 양매도 진입 시점(현재는 등가 +- 5%) 

     장시작, 장 시작 후 30분, 40분, 1시간, 2시간 이후 등등 

6. 가격적인 관점에서 다양한 양매도 진입  시점 (현재는 장 중 등가 +- 5% 시점)

    선물이 급격하게 움직일 때, 장기간 횡보할 때 등등

7. 매도에 적절한 옵션가격 : 

     2.50 이하 혹은 0.8이상 등등

8. 손절 대신 한 호가 위 혹은 아래 옵션 매수 본전 선에서 익절 ( 가치성장님 아이디어 )

9. ma 5/20 데드크로스시 진입, ma60/120 골드크로스시 청산 : 완료

10. 당일 손실이 일정 금액 이상이면 loss cut 후 매매 종료

11. 당일 특정 pair가 익절이 되면 해당 pair는 매매 종료

12. 거래 쌍 추가시 손실시에는 추가하지 않는다. 최대 동시 진입 거래쌍 제한. 수익이 나고 있으면 계속 추가함.

반응형

설정

트랙백

댓글

제목과는 달리 아직은 수익이 나지 않는군요 ㅠㅠ.  

수익나는 전략이 나올 때 까지  Go Go!!

 

------------------------------------

위클리 옵션 기준으로 최근 5주 데이터를 이용한 시뮬 결과입니다. 

 

거래대상 : Weekly 옵션 03/16 - 4/27일

거래행사가쌍 :  [295 - 337] 중 콜/풋 가격 차이가 0.7배 - 1.3배 사이

진입 : 거래 쌍 양합 이평 5/20 데드 크로스 나는 시점

청산 : 익절(90,000), 손절(-90,000) 혹은 이평 이평 60/120일 골드크로스

슬리피지 : 2.5 tick (양매도 한쌍 기준)

계약 수 : 콜/풋 각 1개

 

지난 글에서는 익절/손절을 너무 높게 잡아서 거의 종가에 청산이 되었으나, 장중 최대 수익권을 분석한 결과 9만원 정도가 적당한 것으로 판단되어 9만원으로 설정함. 앞으로 적절한 익절 가격에 대한 통계 데이터도 꾸준히 모아서 적절하게 변경하는 것이 수익률에 도움이 될 듯 합니다.

 

3/16일 부터 주별로 시뮬 결과입니다. 

 

단 3/16 - 4/06 자료에서는 옵션 행사가 322, 325, 327이 빠진 상태의 시뮬결과입니다. 따라서 수익이 난 날은 더 났을 것이고, 손실이 난 날은 손실이 더 났을 것이니 이 점 감안하고 보시기 바랍니다.

 

시뮬결과는 그렇게 좋지 않습니다. 큰 손실로 마감하는 경우가 가끔씩 나와서 전체적으로 손실입니다.

 

시뮬 내용을 좀 더 자세하게 분석해보겠습니다.

크게 손실이 난 경우가 며칠있습니다. 이 날은 코스피 변동폭이 상당히 컸던 날입니다. 단순 양매도로는 무조건 손실이 날 수 밖에 없는 시기입니다. 코스피 변동성이 큰 날 어떻게 대응하느냐가 양매도 전략의 수익을 결정한다고 보시면 됩니다.

 

손실이 가장 컸었던 4/25일 시뮬 결과를 좀 더 자세히 살펴보겠습니다. 

당시 코스피는 -1.83%(저가대비) -1.27%(종가대비) 빠졌습니다.

 

 

코스피가 큰폭으로 하락하다보니 양매도 들어가기만 하면 손실로 마무리됩니다. 9시 초반에 들어간 5건의 양매도가 모두 loss cut에 걸려서 청산되었는데, 이런 경우에는 더 이상 신규 매도 진입을 하지 않는 것이 좋을 듯 합니다. 

 

그리고 profit cut이 낮은 경우에는 장중 익절 후 다시 진입하는 경우가 있습니다. 이런 경우에는 손절이나 약이익으로 마감하는 경우가 많았습니다.

 

따라서 아래와 같이 전략을 개선해보겠습니다.

 

전략 개선 방안

- 당일 손실이 일정 금액 이상이면 loss cut 후 매매 종료

  그동안 전략 당 loss cut을 좀 높게 잡고 있었는데, 해당 일 전체 매도 분에 대한 총 손실도 loss cut 기준으로 설정

- 당일 특정 pair가 익절이 되면 해당 pair는 매매 종료

- 거래 쌍 추가시 손실시에는 추가하지 않는다. 최대 동시 진입 거래쌍 제한. 수익이 나고 있으면 계속 추가함.

 

 

예상한대로 단순한 기계적 양매도는 평상시 약수익, 가끔 큰손실로 마감합니다. 손실 리스크를 줄이기 위하여 양매도 청산 전략의 한계점으로 보입니다. 

하지만 손실 발생시 잘 대응하는 전략을 추가한다면 손실을 어느 정도 제한할 수 있을 것 같습니다. 그리고 진입 시점/동시 진입 pair 수 조절 등등 손실을 최소화할 수 있는 다양한 방법이 있으므로 이에 대한 시뮬을 좀 더 해보도록 하겠습니다.

 

---------------------------

앞으로 작업할 내용은 다음과 같습니다.

1. weekly option 대상 다양화 : 완료

2. 정규 옵션 back test

3. 최대 수익이 나는 익절과 손절 값 찾아보기 (현재는 익절 70,000원, 손절 -70,000원) : 완료

4. 특정 양매도 조합에서 청산 후 다시 진입하는 것이 유리한지 여부

5. 시간적인 관점에서 다양한 양매도 진입 시점(현재는 등가 +- 5%) 

     장시작, 장 시작 후 30분, 40분, 1시간, 2시간 이후 등등 

6. 가격적인 관점에서 다양한 양매도 진입  시점 (현재는 장 중 등가 +- 5% 시점)

    선물이 급격하게 움직일 때, 장기간 횡보할 때 등등

7. 매도에 적절한 옵션가격 : 

     2.50 이하 혹은 0.8이상 등등

8. 손절 대신 한 호가 위 혹은 아래 옵션 매수 본전 선에서 익절 ( 가치성장님 아이디어 )

9. ma 5/20 데드크로스시 진입, ma60/120 골드크로스시 청산 : 완료

10. 당일 손실이 일정 금액 이상이면 loss cut 후 매매 종료

11. 당일 특정 pair가 익절이 되면 해당 pair는 매매 종료

12. 거래 쌍 추가시 손실시에는 추가하지 않는다. 최대 동시 진입 거래쌍 제한. 수익이 나고 있으면 계속 추가함.

반응형

설정

트랙백

댓글

지난 1, 2편에 이어 이번에는 양매도 진입 조건으로 양합 이동평균선 5/20 데드크로스를 이용하는 전략에 대한 시뮬 결과를 보겠습니다.

 

 

시뮬 데이터는 아래와 같습니다.

 

거래대상 : Weekly 옵션 4/20일 만기

거래행사가쌍 :  [315, 317, 320, 322, 325, 327, 330, 332, 335, 337]

거래일 : 20230413

진입 : 거래 쌍 양합 이평 5/20 데드 크로스 나는 시점

청산 : 익절(150,000), 손절(-95,000) 혹은 이평 이평 60/120일 골드크로스

슬리피지 : 2.5 tick (양매도 한쌍 기준)

계약 수 : 콜/풋 각 1개

 

진입 : ma 5/20  빨간 색이면 ma5가 큰 값, 파란색은 ma20이 큰 값.  따라서 빨간색에서 파란색으로 변하는 첫 시점이 데드크로스임

 

청산 : ma 60/120  기준 파란색에서 빨간색으로 변하는 첫 시점이 골드크로스임

참고로, 청산시에 출력되는 수익은 수수료/슬리피지 고려하지 않은 금액임

 

중간 과정을 생략하고 끝까지 돌려보면 아래와 같은 결과가 나옵니다.

결론적으로 위 조건으로 돌렸을 때 4승 3패, 62,500원 수익이 났으나 slipage 때문에 손실로 마감합니다.

 

시스템 트레이딩에서 슬리피지가 중요함을 다시 한번 생각하게 됩니다. 

 

이 전략에서 슬리피지를 줄이기 위해서는 매매 횟수를 줄이면 됩니다. 빨간 박스를 한 매매 내역을 보면 양합 차이가 별로 없음에도 불구하고 ma 60/120 골드 크로스가 생기자 마자 청산을 하고 있습니다. ma 60/120 골드크로스가 생기더라도 손실에 대한 losscut에 다다를 때까지 기다리는 전략을 적용해보겠습니다.

 

간단하게 코드를 보면 로스 컷을 확인하는 부분을 추가하면 됩니다.

        if changed and self.who_upper_60 == 60:
            if ent_sum + self.get_loss_cut_by_tick() < cur_sum :
                return 1, 1

이렇게 진입 횟수를 조절한 전략의 결과는 아래와 같습니다.

원하는 대로 ma 60/120 골드크로스가 생기더라도 loss cut이 발생하지 않으면 무시한 결과 약 수익으로 마무리되었습니다.

 

ma 60/120 골드 크로스시 바로 혹은 일정 시간 후 청산과 loss cut까지 기다리는 것 중 어느 것이 좋을지는 많은 데이터로 시뮬을 해 보고 결론을 내려야할 것 같습니다. 지금 상태는 수익에 비하여 슬리피지가 워낙 큰 상태라 적절한 loss cut까지 기다리는 것이 나쁘지않은 전략으로 생각이 됩니다.

 

좀더 다양한 일자/다양한 옵션에 대하여 백테트스트 진행한 후 결과 공유하겠습니다.

 

---------------------------

앞으로 작업할 내용은 다음과 같습니다.

1. weekly option 대상 다양화

2. 정규 옵션 back test

3. 최대 수익이 나는 익절과 손절 값 찾아보기 (현재는 익절 70,000원, 손절 -70,000원) : 완료

4. 특정 양매도 조합에서 청산 후 다시 진입하는 것이 유리한지 여부

5. 시간적인 관점에서 다양한 양매도 진입 시점(현재는 등가 +- 5%) 

     장시작, 장 시작 후 30분, 40분, 1시간, 2시간 이후 등등 

6. 가격적인 관점에서 다양한 양매도 진입  시점 (현재는 장 중 등가 +- 5% 시점)

    선물이 급격하게 움직일 때, 장기간 횡보할 때 등등

7. 매도에 적절한 옵션가격 : 

     2.50 이하 혹은 0.8이상 등등

8. 손절 대신 한 호가 위 혹은 아래 옵션 매수 본전 선에서 익절 ( 가치성장님 아이디어 )

9. ma 5/20 데드크로스시 진입, ma60/120 골드크로스시 청산 : 완료

반응형

설정

트랙백

댓글