젠포트를 활용해 자동매매를 돌리고 있는데요. 틱 데이터 기반 백테스팅 + 가상 매매 결과와 실전 매매 결과는 당연히 다르기 마련입니다만 정확히 어느 정도 차이가 나는지, 어떤 부분에서 괴리가 발생하는지 궁금해졌습니다.
사실 그동안은 귀찮고 번거로워 못 했던 작업인데 챗GPT를 활용해 간단하게 한번 돌려봤습니다! 진짜 깜짝 놀랄 만한 결과가 나왔는데요 궁금하신 분들은 아래 내용 참고해 주세요!
챗GPT로 젠포트 자동매매, 실전과 가상 괴리 분석하기
우선 챗GPT로 젠포트 매매 내역을 분석하게 해야 하는데요. 그러려면 유료 버전인 챗GPT4 Code Interpreter 기능을 사용하시는 게 좋습니다. 유료 버전에서는 파일 첨부가 가능하고, 챗GPT가 스스로 코드를 작성해서 분석하는 것이 가능하기 때문입니다.
그럼 챗GPT4 Code Interpreter 기능을 사용한다는 가정 하에 설명을 드리도록 하겠습니다.
1. 젠포트 매매 데이터 다운로드
일단 젠포트 홈페이지로 이동해 주세요.
그다음 상단 메뉴 바에서 '백테스트 - 포트 관리하기'를 선택합니다.
그럼 운용 중인 가상 포트와 실전 포트를 확인하실 수 있는데요.
괴리를 분석하고자 하는 전략을 가상 포트에서 먼저 선택하시고 '거래내역' - '전체보기'를 선택하신 다음 우측 편 '엑셀로 내보내기'를 눌러주세요.
다음으로는 실전 포트에서 동일한 전략을 같은 방식으로 데이터 추출하시면 됩니다.
포트선택 후 '거래내역' - '전체보기' - '엑셀로 내보내기' 선택하시면 돼요.
자, 이제 그럼 두개의 데이터를 모두 확보하셨죠? 챗GPT에게 파일을 분석시키기 전에 전처리가 좀 필요한데요. 두 파일을 열고 제일 우측에 수익률 셀을 정리해야 합니다.
수익률 셀 데이터 중에 거래는 되었지만 수익률 데이터는 없어(매수 등) "-"로 표시된 행이 있을 거예요. "-"로 표시된 행들만 필터링해서 "-" 부분을 지워주세요. 요건 필터를 걸어서 지우면 되는데, 네이버에서 검색해 보면 쉽게 하실 수 있으실 거예요!
그럼 이제 모든 준비가 끝났습니다.
2. 챗GPT에게 분석시키기
다음은 챗GPT로 이동하셔서 ChatGPT4 Interpreter 모드를 선택해 주세요. 그럼 아래 쪽 입력창 왼쪽에 파일을 첨부할 수 있는 플러스 아이콘이 생길 텐데요.
이 버튼을 눌러 아까 확보한 두 엑셀 파일을 업로드해주세요. 드래그 앤 드롭으로도 첨부 가능합니다.
프롬프트는 아래와 같이 작성했습니다. 참고하셔서 목적에 맞게 수정하시면 될 거예요.
[괴리 분석 프롬프트]
이전 지시는 모두 잊어라. 이 파일들은 주식 매매 기록이야.
"가상_전략명"은 가상 모의투자, "실전_전략명"은 실전 투자 기록이야.
>> 여기엔 위에서 다운로드한 파일명을 입력해 주세요.
알아보기 쉽게 '가상', '실전'을 앞에 붙여주시면 편해요.
가상과 실전투자 사이의 괴리를 분석하려고 해. 두 파일 내부 기록 상 동일한 일자에 거래된 동일 종목의 수익률 차이를 분석해 줘.
둘 중에 어떤 기록이 성과가 좋은지,
괴리가 일평균 어느 정도 발생하는지,
실전과 가상의 괴리를 상쇄할 수 있도록 가상 투자에 슬리피지를 반영한다면 얼마 정도의 퍼센트를 슬리피지로 반영해야 하는지,
괴리의 원인은 무엇인지,
괴리를 없애려면 어떻게 해야 하는지,
그리고 CSV파일에 있는 '사유' 셀 내용 종류에 따라 괴리가 어떻게 다른지 다각도로 최대한 자세히 분석해 줘.
이때 '사유'셀의 내용에서 실제 날짜를 나타내는 숫자 부분은 삭제하고 "날짜지나 매도", "매도로직 매도", "목표가 매도" "손절가 매도" 등으로 정리해서 다시 분석해 줘.
수익률 정보 처리 시 중복된 종목이 있는 경우 '주문'셀에 있는 값이 '매도'일 때, 즉 '수익률'셀 값이 있는 경우에만 '수익률'값을 선택해서 사용해 줘.
혹시 같은 날짜에 같은 종목을 두 번 이상 매도한다면 동일 종목을 분할매도한 거니까 두 개의 수익률값을 모두 살려서 계산해 줘.
추가로 더 의미 있는 정보를 얻을 수 있는 분석을 자체적으로 진행해 줘.
이해가 안 되는 부분이 있거나 추가로 필요한 정보가 있으면 얘기해 주고, 위에서 요청한 대로 결과를 분석해 줘.
이렇게 입력을 하면 챗GPT가 스스로 코드를 작성하고 수정해 가며 결과를 분석해 줍니다.
3. 결과 보기
그럼 챗GPT가 어떤 결과를 보여줬는지 아래에서 바로 살펴보시죠.
결과가 꽤 길기 때문에 핵심 내용 먼저 보여드리겠습니다.
1) 실전과 가상 투자 일일 평균 수익률 차이
실제 투자와 가상 투자 사이의 일일 평균 수익률 차이(괴리)는 약 − 0.128 % −0.128%입니다. 이는 실제 투자의 수익률이 가상 투자의 수익률보다 평균적으로 약 0.128 % 0.128% 낮다는 것을 의미합니다.
2) 슬리피지 추천값
이제 이 괴리를 상쇄하기 위해 가상 투자에 적용해야 하는 슬리피지 값을 계산하겠습니다. 여기서 슬리피지 값은 일일 평균 수익률 차이와 동일하다고 가정하겠습니다.
가상 투자의 수익률에 약 − 0.128 % −0.128%의 슬리피지를 반영하면 실제 투자의 수익률과 일치하게 됩니다.
3) 매도 사유별 수익률 괴리
'사유' 별로 수익률의 차이를 분석한 결과는 다음과 같습니다:
"날짜지나 매도"의 경우 실제 투자와 가상 투자 간의 평균 괴리는 약 − 0.058 % −0.058%입니다.
"매도로직 매도"의 경우 실제 투자와 가상 투자 간의 평균 괴리는 약 0.099 % 0.099%입니다.
"목표가 매도"의 경우 실제 투자와 가상 투자 간의 평균 괴리는 약 − 0.313 % −0.313%입니다.
목표가 매도" 사유를 가진 거래 내역에 대한 분석은 다음과 같습니다:
거래 건수: 50건 평균 괴리: − 0.313 % −0.313%
괴리의 표준편차: 0.473 % 0.473%
최대 괴리: − 3.09 % −3.09%
최소 괴리: 0.21 % 0.21%
이 분석 결과를 통해 "목표가 매도"에 대한 괴리가 다른 사유에 비해 상대적으로 크다는 것을 확인할 수 있습니다.
특히, 최대 괴리는 − 3.09 % −3.09%로 상당히 큰 편입니다. 이러한 큰 괴리를 줄이기 위한 방법으로는 목표가를 설정하는 방식을 조정하거나, 슬리피지를 조금 더 정밀하게 반영하는 방법을 고려해 볼 수 있습니다.
꽤 놀라운 분석결과였습니다. 그동안 수익이 나는 것 같다가도 하락장에 모조리 털려버렸다는 느낌을 지울 수 없었는데 이런 괴리 때문에 제대로 된 성과가 나질 않는 것이 사실이었어요.
특히 저는 목표가를 시장가로 설정해서 사용하고 있어서 목표가 매도의 괴리가 클 수밖에 없었던 것 같네요.
아래 좀 더 자세한 결과도 살펴보시죠. 실제 결과상으로는 챗GPT가 데이터 시각화를 통해 그래프까지도 보여주는데, 여기에는 옮겨지지가 않네요. 그래도 스스로 코드를 작성하고 문제에 부딪히면 지속적으로 해결해 나가는 모습을 보실 수 있습니다.
굉장히 길기 때문에 세부 내용 확인이 불필요하신 분들은 바로 마무리 단락으로 건너 뛰셔도 됩니다.
마무리 단락을 보시면 이 글에서 분석한 괴리를 슬리피지로 반영했을 때 얼마나 성과가 악화되는지를 설명한 다음 포스팅 링크도 있습니다. 그것만 확인하시면 더 빠를 거예요!
네, 주어진 두 파일을 이용하여 분석을 시작하겠습니다.
분석을 위한 절차는 다음과 같습니다:
두 데이터셋을 로드합니다. 각 데이터셋에서 '일자', '종목코드', '수익률', '사유', 그리고 '주문' 컬럼의 정보를 추출합니다. '일자'와 '종목코드'를 기준으로 두 데이터셋을 병합합니다. 동일한 일자에 동일한 종목에 대한 수익률 차이를 계산합니다. 주어진 조건에 따라 필요한 분석을 진행합니다.
먼저, 두 데이터셋을 로드하고 필요한 정보를 추출하겠습니다.
Finished working Show work
죄송합니다. 코드 실행 중에 문제가 발생했습니다. 다시 코드를 실행하겠습니다.
Finished working Show work
죄송합니다. 코드 실행에 필요한 라이브러리를 불러오지 않았습니다. 다시 시작하겠습니다.
Finished working Show work
죄송합니다. 인코딩 문제가 발생한 것 같습니다. 다른 인코딩 방식을 사용하여 파일을 다시 로드해 보겠습니다.
Finished working Show work
데이터를 로드하는 과정에서 예상하지 못한 문제가 발생했습니다. 해당 데이터의 컬럼 정보를 확인하여 문제를 파악하겠습니다.
Finished working Show work
데이터를 로드하면서 문제가 발생한 것을 확인했습니다. 데이터 파일의 내용이 탭으로 구분된 형태로 되어 있습니다. 이를 탭으로 구분하여 다시 로드하겠습니다.
Finished working Show work
데이터를 처리하는 과정에서 '수익률' 컬럼의 값이 문자열로 인식되어 발생한 오류로 보입니다. '수익률' 컬럼을 숫자로 변환한 후에 다시 연산을 시도하겠습니다.
Finished working Show work
데이터를 성공적으로 병합하였습니다.
이제 다음과 같은 분석을 수행하겠습니다: 실제와 가상의 일일 평균 수익률 비교 일일 평균 수익률 차이 (괴리) 계산 괴리를 상쇄하기 위한 슬리피지 계산 '사유' 별 괴리 분석 먼저, 실제와 가상의 일일 평균 수익률을 계산하겠습니다.
Finished working Show work
실제와 가상 투자의 일일 평균 수익률은 다음과 같습니다:
실제 투자의 일일 평균 수익률: 약 0.458 % 0.458%
가상 투자의 일일 평균 수익률: 약 0.586 % 0.586%
가상 투자의 수익률이 실제 투자의 수익률보다 높습니다.
이제 일일 평균 수익률 차이 (괴리)를 계산하겠습니다.
Finished working Show work
실제 투자와 가상 투자 사이의 일일 평균 수익률 차이(괴리)는 약 − 0.128 % −0.128%입니다. 이는 실제 투자의 수익률이 가상 투자의 수익률보다 평균적으로 약 0.128 % 0.128% 낮다는 것을 의미합니다.
이제 이 괴리를 상쇄하기 위해 가상 투자에 적용해야 하는 슬리피지 값을 계산하겠습니다. 여기서 슬리피지 값은 일일 평균 수익률 차이와 동일하다고 가정하겠습니다.
Finished working Show work
가상 투자의 수익률에 약 − 0.128 % −0.128%의 슬리피지를 반영하면 실제 투자의 수익률과 일치하게 됩니다.
다음으로, '사유' 별로 수익률의 차이를 분석하겠습니다. 먼저 '사유' 컬럼의 값을 "날짜지나 매도", "매도로직 매도", "목표가 매도" "손절가 매도" 등으로 정리한 후 분석을 진행하겠습니다.
Finished working Show work
'사유' 별로 수익률의 차이를 분석한 결과는 다음과 같습니다:
"날짜지나 매도"의 경우 실제 투자와 가상 투자 간의 평균 괴리는 약 − 0.058 % −0.058%입니다.
"매도로직 매도"의 경우 실제 투자와 가상 투자 간의 평균 괴리는 약 0.099 % 0.099%입니다.
"목표가 매도"의 경우 실제 투자와 가상 투자 간의 평균 괴리는 약 − 0.313 % −0.313%입니다.
이 분석을 통해 "목표가 매도"의 경우 가장 큰 괴리를 보이고 있음을 확인할 수 있습니다. 이는 실제 투자에서 목표가에 도달하여 매도할 때 가상 투자에 비해 평균적으로 더 낮은 수익률을 기록했다는 것을 의미합니다.
이어서, 괴리를 없애기 위한 방법과 추가적인 분석을 진행하겠습니다. 우선, 가장 큰 괴리를 보이는 "목표가 매도" 사유에 대해 좀 더 자세히 살펴보겠습니다.
"목표가 매도" 사유에서 발생하는 괴리를 줄이기 위한 방법을 고려해 볼 필요가 있습니다.
Finished working Show work "
목표가 매도" 사유를 가진 거래 내역에 대한 분석은 다음과 같습니다:
거래 건수: 50건 평균 괴리: − 0.313 % −0.313%
괴리의 표준편차: 0.473 % 0.473%
최대 괴리: − 3.09 % −3.09%
최소 괴리: 0.21 % 0.21%
이 분석 결과를 통해 "목표가 매도"에 대한 괴리가 다른 사유에 비해 상대적으로 크다는 것을 확인할 수 있습니다.
특히, 최대 괴리는 − 3.09 % −3.09%로 상당히 큰 편입니다. 이러한 큰 괴리를 줄이기 위한 방법으로는 목표가를 설정하는 방식을 조정하거나, 슬리피지를 조금 더 정밀하게 반영하는 방법을 고려해볼 수 있습니다.
또한, "목표가 매도"가 발생하는 시점에서의 시장 상황, 주가의 변동성, 거래량 등의 요인도 괴리에 영향을 줄 수 있으므로 이러한 요인들도 함께 고려해볼 필요가 있습니다.
다음 단계로, 괴리의 원인을 좀 더 구체적으로 파악하기 위해 다른 변수들과의 상관관계나 추가적인 분석을 진행하겠습니다. 우선, "목표가 매도"의 경우의 괴리 분포를 시각화하여 살펴보겠습니다.
Finished working Show work
"목표가 매도" 사유에 대한 수익률 차이(괴리)의 분포를 히스토그램으로 시각화했습니다.
붉은 점선은 평균 괴리를 나타냅니다. 이 분포를 통해 몇 가지 통찰을 얻을 수 있습니다:
대부분의 거래에서 실제 수익률이 가상 수익률보다 낮게 나타났습니다. 일부 거래에서는 괴리가 매우 큰 것으로 확인됩니다. 이러한 이상치들은 전체 평균 괴리를 크게 만들었을 가능성이 있습니다.
이제 괴리의 원인을 좀 더 구체적으로 파악하기 위해 다른 변수들과의 상관관계나 추가적인 분석을 진행하겠습니다. 먼저, "목표가 매도" 사유에서 가장 큰 괴리를 보이는 거래들을 상세하게 살펴보겠습니다.
Finished working Show work
"목표가 매도" 사유에서 가장 큰 괴리를 보이는 상위 5개 거래는 다음과 같습니다:
종목: 엑스페릭스, 날짜: 2023년 7월 26일, 실제 수익률: 1.97 % 1.97%, 가상 수익률: 5.06 % 5.06%, 괴리: − 3.09 % −3.09%
종목: 케어젠, 날짜: 2023년 6월 19일, 실제 수익률: 3.42 % 3.42%, 가상 수익률: 4.42 % 4.42%, 괴리: − 1.00 % −1.00%
종목: 파워로직스, 날짜: 2023년 8월 4일, 실제 수익률: 3.52 % 3.52%, 가상 수익률: 4.40 % 4.40%, 괴리: − 0.88 % −0.88%
종목: 대봉엘에스, 날짜: 2023년 6월 15일, 실제 수익률: 3.73 % 3.73%, 가상 수익률: 4.53 % 4.53%, 괴리: − 0.80 % −0.80%
종목: 아이톡시, 날짜: 2023년 6월 19일, 실제 수익률: 3.64 % 3.64%, 가상 수익률: 4.37 % 4.37%, 괴리: − 0.73 % −0.73%
이러한 거래들에서 발생한 큰 괴리를 줄이기 위해 추가적인 조치나 전략 변경을 고려할 수 있습니다.
이제 "사유" 별로 괴리를 시각화하여 각 사유에 따른 괴리 분포를 살펴보겠습니다.
Finished working Show work
각 "사유"에 따른 수익률 차이(괴리)의 분포를 시각화했습니다.
붉은 점선은 0%의 수익률 차이를 나타냅니다. 이 시각화를 통해 다음과 같은 통찰을 얻을 수 있습니다:
날짜지나 매도: 대부분의 거래에서 실제 수익률이 가상 수익률보다 약간 낮게 나타났습니다.
매도로직 매도: 괴리가 큰 거래들이 몇 건 있지만, 대부분의 거래에서 실제 수익률이 가상 수익률과 유사하게 나타났습니다.
목표가 매도: 대부분의 거래에서 실제 수익률이 가상 수익률보다 낮게 나타났으며, 특히 몇몇 거래에서 큰 괴리가 발생했습니다.
이 분석을 통해 "목표가 매도"에서 큰 괴리가 발생하는 원인을 파악하기 위한 추가적인 조사가 필요하다는 것을 알 수 있습니다.
이제 다양한 각도에서 괴리를 분석하기 위해 "목표가 매도" 사유의 거래 데이터를 좀 더 세부적으로 살펴보겠습니다.
Finished working Show work
"목표가 매도" 사유에서 절대적인 괴리가 가장 큰 상위 10개의 거래 내역은 다음과 같습니다:
엑스페릭스 (2023-07-26): − 3.09 % −3.09%
케어젠 (2023-06-19): − 1.00 % −1.00%
파워로직스 (2023-08-04): − 0.88 % −0.88%
대봉엘에스 (2023-06-15): − 0.80 % −0.80%
아이톡시 (2023-06-19): − 0.73 % −0.73%
동국제강 (2023-08-01): − 0.64 % −0.64%
와이엔텍 (2023-08-04): − 0.61 % −0.61%
코스나인 (2023-07-24): − 0.60 % −0.60%
오스테오닉 (2023-06-20): − 0.50 % −0.50%
지노믹트리 (2023-08-10): − 0.47 % −0.47%
이러한 거래들에서 발생한 큰 괴리를 줄이기 위해 추가적인 조치나 전략 변경을 고려해 볼 수 있습니다. 특히, 일부 종목에서는 괴리가 매우 큰 것으로 확인되므로 해당 종목에 대한 투자 전략을 재검토하는 것이 좋을 것입니다.
다음으로, 괴리의 원인을 파악하기 위해 실제 투자와 가상 투자의 거래 시점, 거래량, 주가의 변동성 등 추가적인 정보가 필요합니다. 이러한 정보가 제공되면 괴리 발생의 원인을 좀 더 정확하게 파악할 수 있습니다.
추가로, 본 분석에서는 "목표가 매도" 사유에 대한 괴리를 중점적으로 분석하였습니다. 다른 사유에 대한 괴리도 중요하므로 필요한 경우 추가적인 분석을 진행할 수 있습니다. 어떤 추가적인 분석이나 정보가 필요한지 알려주시면 도움을 드리겠습니다.
마무리
어떠신가요? 굉장히 길고 체계적으로 분석한 결과를 확인할 수 있었는데요. 개별적인 숫자들은 검증이 필요하겠지만, 스스로 문제 해결을 위해 코드를 작성하고, 수정해 나가면서 결국 답을 제시하는 걸 보고 깜짝 놀랐습니다.
특히 저는 그동안 젠포트 실전매매를 돌리면서 가상과 달리 뭔가 성과가 잘 나지 않는 듯한 느낌을 받아왔는데요. 이렇게 괴리를 숫자로 분석한 결과를 보니까 한편으로는 시원하면서 한편으로는 새로운 답답함이 생겼습니다.
실제로 챗GPT가 분석한 괴리만큼 슬리피지를 주면 완전히 다른 전략이 되어버리더라고요. 성과가 폭망인 거죠 ㅠㅠ
다음 포스팅에서 기존 가상 전략 성과와 슬리피지를 반영한 전략 성과를 비교해 보겠습니다.
앞으로는 이 괴리를 없앨 수 있는 방향으로 전략을 모조리 새로 개발해야 할 것 같습니다.
챗GPT를 활용한 젠포트 자동매매 괴리 분석하기, 여러분도 꼭 한번 해보시면 새롭게 나아갈 방향을 잡는데 도움이 되실 것 같습니다. 감사합니다.
'주식투자' 카테고리의 다른 글
젠포트 실전 대 가상매매 괴리 반영 슬리피지 적용 성과 비교 (0) | 2023.08.14 |
---|---|
미국 전기차 주식 8월 매수 관심종목 (0) | 2023.08.13 |
ChatGPT에 대한 관심이 줄어 들고 있다. (0) | 2023.08.12 |
초전도체 관련주, 대장주, 뜻 알아보기 (feat.퀀텀에너지연구소 LK-99) (0) | 2023.08.07 |
애플, 아마존이 주도하는 주식시장 (0) | 2023.08.05 |
댓글