일전에 시뮬레이션 결과를 차트로 그리는 방법에 대한 글을 썼었는데요.

https://money-expert.tistory.com/36?category=781442

 

[시스템트레이딩] 전략 시뮬레이션(4) - 차트에 문자열 출력하기

LW 전략을 돌려본 후 mdd, 수익률 등등을 보면서 성과가 얼마나 나왔는지 확인이 가능합니다. 그런데 전략을 개선하기 위해서는 언제 수익이 났고 언제 손실이 발생하였는지를 chart 그래프로 확인

money-expert.tistory.com

 

오랜만에 전략 시물레이션 결과를 보려고 이전 글을 보니, 많이 복잡합니다. 

그래서 간단하게 다시 정리하였습니다.

추가로 candle 차트 뿐 아니라 추세선을 그리는 것도 포함하였습니다.

 

본인이 만든 전략이 잘 동작하는지 파이썬으로 개발하면 좋겠지만, 개발 실력이 부족한 경우에는 excel로 simulation을 해야합니다. excel로 전략에 사용할 지표도 계산하고, 매수/매도 시점과 수량 등을 표기할 수 있습니다. 이렇게 정리한 excel 문서를 candle 차트로 그려볼 수 있다면 전략이 잘 동작하는 한눈에 볼 수 있습니다.

 

이번 글에서는 순수하게 excel을 이용하여 전략에 사용할 지표를 만들고, 매수/매도 시점을 표기해 놓기만 하면 차트와 추세선을 그려주는 파이썬 프로그램을 공개합니다.

 

제가 만든 예는 2022년 4월 미니선물 10분 봉을 기반으로 MA7, MA24를 계산한 후 cross가 발생한 경우에 매수/매도를 반복하는 전략입니다. 수익이 나는지 보다는 어떻게 활용하는지 관점에서 보시기 바랍니다.

 

excel 파일에서 반드시 포함되어야 하는 문구 및 내용은 아래와 같습니다.

1. datetime : 일자와 시간을 숫자로만 표기합니다. 일자와 시간을 구분하기 위하여 중간에 T를 사용합니다만, 공백도 가능하고, 없어도 됩니다. 다만 일자와 숫자에는 다른 문자가 있으면 안됩니다. 순수하게 숫자T숫자 이렇게 기록하시면 됩니다. 2020년 4월 1일 9시 10분은 이렇게 표기하시면 됩니다. 20220401T091000

2. 지표 : 본인이 그래프에 그리고 싶은 지표를 계산합니다. 예제에서는 ma7, ma24를 사용합니다.

지표의 경우에는 사용하고자 하는 컬럼의 이름을 python source 코드에서 변경해 주어야 합니다. 방법은 아래에 설명합니다.

3. action : 매수 혹은 매도할 자리입니다. buy/sell로 표기합니다.

4. qty : 매수 혹은 매도할 수량

5. balance : 잔고수량

6. close : 종가. 만약 다른 값을 사용하고 싶으면 파이썬 코드를 수정하시면 됩니다. 혹은 close라는 컬럼에 원하는 값을 넣으셔도 됩니다. 예를들어 low, high 중간값을 사용한다면 기존 close는 close_org로 변경하고, close라는 컬럼을 새로 만들어서 low, high 중간값을 계산하여 넣으면 됩니다.

 

아래 excel 예제에서와 같이 노란색으로 표기한 부분은 예제에 나오는 이름을 유지하셔야 합니다. 파란색으로 표기한 부분은 전략에 따라 이름이 변경될 수 있으므로 원하는 이름으로 바꾸시고, 파이썬 source 코드에도 변경해주어야 합니다.

 

지표를 파이썬 코드에서 변경하는 방법입니다.

현재 코드상에는 아래와 같이 표기되어 있습니다.

 

excel 파일에 있는 컬럼의 title 값이 적혀있습니다. excel에 있는 값과 파이썬 코드에 있는 값을 서로 일치시키면 됩니다. 예를들어 RSI를 사용한다고 하면 excel 파일에도 RSI, 파이썬 코드에서도 data.RSI라고 기술하면 됩니다.

 

동작 결과입니다.

excel 예제는 ma7, ma24를 구한 후 ma7이 ma24를 돌파하면 매수 그 반대면 매도를 하는 간단한 전략입니다.

 

전략에 맞게 action에 buy/sell을 기록하고 수량은 1개로 통일했습니다. 이렇게 만들어진 excel 파일을 github에 함께 올려놓았습니다. 여러분이 만드시는 전략에 맞게 지표 계산하시고, 매수/매도 시점 표기하고 잔고 표기하시면 됩니다.

 

위 엑셀 예제에서 보면 diff 값이 -에서 +로 변경되는 시점에 1개 매수한다라고 표기한 예입니다.

 

전 구간에 대하여 action을 기록한 후 github에 있는 프로그램을 돌려보면 아래와 같이 정확하게 cross하는 구간에서 매수/매도를 반복하고 있습니다. 그래프 상에서 S는 매도 S 위에 있는 숫자는 (매매수량,잔고) 입니다. B는 매수입니다.

그래프를 보니 뭔가 개선할 점이 마구 보이시죠? 그런 부분을 보완해서 전략을 발전시켜나가시면 됩니다.

 

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

 

실행결과 수익이 나는지 궁금하시죠. 수익여부도 함께 알려줍니다.

 

실행시 나오는 결과입니다. 잔고가 0이 되는 시점에 누적 수익을 출력해주다가 마지막에 summary를 보여줍니다. 현재 이 전략은 -8.7 pt 손실이군요.

 

+가 나오는 전략이 나온다면 이를 바탕으로 파이썬 프로그램을 직접 개발하거나 개발자에게 의뢰하여 운용을 하시면 될 것 같습니다. 수익이 날 것 같은데 실제로 돌려보면 손실인 경우가 너무 많습니다. 

 

쉽지 않은 길이지만 언젠가는 그 길을 찾을 것이라는 희망을 품고,, 오늘도 전략을 생각해봅니다.

 

마지막으로 excel 파일에 대하여 주의할 사항이 있습니다. 전략은 excel 통합문서 형태로 만드셔야 합니다. 그래야 수식을 적용할 수 있습니다. 전략에서 사용할 추세선, action 등등을 모두 완성한 후  simulation으로 돌려볼 떄는 csv 파일로 저장한 후 사용하세요. 통합문서를 csv 파일로 변경하는 불편함이 있지만 현재 프로그램 상태는 csv 파일만 읽고 있습니다. 

 

소스코드와 예제 excel 통합문서 파일, csv 파일은 아래 github에 있습니다.

https://github.com/multizone-quant/drawing_chart

 

GitHub - multizone-quant/drawing_chart

Contribute to multizone-quant/drawing_chart development by creating an account on GitHub.

github.com

 

위 프로그램을 실행하기 위해서는 아래 두 패키지가 설치되어 있어야 합니다.

pip install plotly

pip install pandas

 

 

 

반응형

설정

트랙백

댓글