자동 거래하기

마지막 업데이트: 2022년 4월 24일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
키움증권_크레온_이베스트 투자증권

[Toy Project] 자동매매 프로그램 만들기 - 3. pyupbit 모듈 알아보기

pyupbit 모듈 이란, 업비트 API를 파이썬에서 쉽게 사용하기 위해서 저자들이 개발한 모듈이다. 굳이 API를 호출할 필요 없이 pyupbit 모듈을 이용하면 간편한 경우가 많다.

먼저 pyupbit 모듈을 설치해보자. 프롬프트 창에 "pip install pyupbit" 를 입력한다.

그 후, 다음 코드를 실행했을 때 오류가 발생하지 않는다면 pyupbit 모듈이 잘 설치가 된 것이다.

이제, pyupbit를 이용할 수 있는 대표적인 기능 몇 가지를 알아보자.

2. 암호화폐 목록 얻기

암호화폐를 거래하기 위해서는 각 화폐별 ticker가 필요하다. get_tickers 함수를 이용하면 업비트에서 거래할 수 있는 모든 암호화폐의 문자열 ticker를 리스트로 반환해준다.

업비트에서는 원화(자동 거래하기 KRW)뿐만 아니라 BTC, USDT 마켓 또한 지원하므로 주로 이용하는 원화 마켓의 암호화폐를 선별하고 싶다면 다음과 같이 옵션을 추가해주어야 한다.

fiat은 우리가 사용하는 종이 화폐, 즉 명목화폐(fiat money)에서 나온 말이다. 동일한 방법으로 BTC / USDT 마켓의 암호화폐도 골라낼 수 있다.

3. 암호화폐 현재가 얻기

get_current_price 함수를 이용하면 암호화폐의 마지막 체결 가격, 즉 현재가를 얻을 수 있다. 인자에 암호화폐의 ticker를 넣어주면 float형으로 값을 반환한다.

만약 여러 암호화폐를 한 번에 조회하고 싶다면, ticker들을 담은 리스트를 인자로 넘겨주면 된다. 이 경우에는 반환 값으로 가 인 딕셔너리가 반환된다.

몇 분 사이에 값이 비트코인 가격이 소폭 하락한 것을 볼 수 있다. get_current_price 자동 거래하기 함수는 한 번에 최대 100개의 암호화폐를 조회할 수 있다.

4. 암호화폐 과거 데이터 조회

get_ohlcv 함수를 이용하여 인자에 ticker를 넘겨주면 해당 암호화폐의 OHLCV 데이터를 pandas DataFrame으로 반환한다.

시가 / 고가 / 저가 / 종가 / 거래량 / 거래금액 을 구할 수 있다.

get_ohlcv 함수는 다음과 같이 구성되어 있다.

get_ohlcv(ticker='KRW-BTC', interval='day', count=200, to=None, period=0.1) -> Union[DataFrame, None]

매개변수로 ticker, interval, count, to, period가 존재하며, 반환 값으로 Union[DataFrame, None]을 갖는다.

interval 변수는 조회 단위를 나타낸다. 분(1/3/5/10/15/30/60/240), 일, 주, 월별 데이터를 구할 수 있으며 인자로 넘길 땐 다음과 같다.

[ day / minute1 / minute3 / minute5 / minute10 / minute15 / minute30 / minute60 / minute240 / week / month ]

만약 interval을 지정하지 않는다면 기본값은 day이다.

count 변수는 조회 개수를 나타낸다.자동 거래하기 자동 거래하기 최근 영업일부터 이전 count만큼의 영업일까지의 데이터를 가져오게 된다.

count를 지정하지 않는다면 기본값은 200이다.

to 변수는 입력된 시점의 이전까지의 데이터를 얻을 수 있다. 예를 들어 to="20210101"이라고 하면, 2020년 12월 31일부터 이전 count만큼의 영업일까지의 데이터를 가져온다. 즉, 2020-06-15~2020-12-31의 데이터를 가져온다.

to를 지정하지 않는다면 기본값은 None이며, 이는 현재 일부터 가져오게 된다.

period는 데이터를 수집하는 주기를 말한다. count가 200 이하라면 period 옵션은 무시되며, count가 200보다 큰 경우 다른 API와 함께 사용한다면 조회 주기를 늘려주어야 자동 거래하기 한다.

일봉을 구하는 경우 기준 시간을 직접 지정할 수 있다.

get_daily_ohlcv_from_base 함수를 이용하여 base에 원하는 시간을 입력하면 해당 시간을 기준으로 하루가 계산된다.

5. 암호화폐 호가 조회

암호화폐의 매수/매도 호가 조회는 get_orderbook 함수를 이용한다. 인자로 ticker를 넘겨주고 반환 값으로 딕셔너리로 구성된 리스트를 반환한다.

market은 ticker이고 timestamp는 조회시간(단위 : ms)이며, total_ask_size, total_bid_size는 총 매도/매수 크기를 말한다.

orderbook_units는 딕셔너리가 원소인 리스트이며, ask_price는 매도 호가, bid_price는 매수 호가, ask_size는 매도 호가 수량, bid_size는 매수 호가 수량을 의미한다.

get_orderbook에 여러 ticker를 넘겨주면 마찬가지로 한 번에 여러 암호화폐에 대한 호가를 구할 수 있다.

6. 잔고 조회

잔고를 조회하기 위해서는 API 사용 신청을 한 후 발급받았던 access key와 secret key가 필요하다. 이를 이용하여 Upbit 클래스의 인스턴스를 생성한 후, get_balances 함수를 이용하면 잔고를 조회할 수 있다.

코인을 하고 남은 흔적들이 있다. 현재 원화가 0.68원 정도, 아주 소량의 리플이 존재하는 것을 볼 수 있다.

avg_buy_price는 평균 매수가를 의미하고, avg_buy_price_modified는 평균 매수가가 수정되었는지 여부를 나타낸다.

get_balances 함수는 실제로 get_balances(contain_req=False) -> Union[tuple, None] 로 이루어져 있다.

만약 get_balances에 True를 넣어주면, API를 호출할 수 있는 빈도의 제한을 추가로 반환한다.

API는 각 API마다 어떤 그룹에 속해있고, 그룹 단위로 호출을 제한한다. 위의 결과는 1분에 최대 899번, 1초당 최대 29번 API를 호출할 수 있다는 의미이다.

만약 특정 암호화폐나 원화에 대해서 잔고가 자동 거래하기 궁금하다면 get_balance 함수를 이용하면 된다.

인자로는 ticker를 넘겨준다.

7. 지정가 매수/매도

지정한 가격에 매도할 때에는 sell_limit_order 함수를, 매수할 때에는 buy_limit_order 함수를 이용한다.

마찬가지로 Upbit 클래스의 인스턴스를 통해서 호출할 수 있다.

buy_limit_order 함수와 sell_limit_order 함수는 다음과 같이 구성되어 있다.

buy_limit_order(ticker, price, volume, contain_req=False) -> Union[tuple, None]

sell_limit_order(ticker, price, volume, contain_req=False) -> Union[tuple, None]

price에 원하는 매수/매도가를 넣고, volume에 매수/매도할 코인 개수를 넣는다.

위의 예시에서는 비트코인을 100만 원에 1개 매수하려는 코드이다. 잔고가 부족하여 에러가 발생했지만, 만약 잔고가 충분하다면 주문 정보는 딕셔너리로 반환된다. (아래 참고)

예시) https://github.com/sharebook-kr/pyupbit

주문을 통해 반환된 딕셔너리에서 uuid는 주문에 대한 고윳값으로, 이 값을 이용해서 주문을 다시 취소하거나 정정할 수 있다.

8. 시장가 매수/매도

시장가 매수/매도는 최우선 매도/매수 호가에 즉시 주문한다.

시장가 매수는 buy_market_order 함수, 매도는 sell_market_order 함수를 이용한다.

buy_market_order(ticker, price, contain_req=False) -> Union[tuple, None]

sell_market_order(ticker, volume, contain_req=False) -> Union[tuple, None]

시장가 매수를 하는 경우에는 매수할 금액을 넣어준다. 수수료가 제외된 금액이므로 만약 10000원 치를 구매한다면 실제로는 수수료 0.05%가 추가된 10005원의 현금을 가지고 있어야 한다.

시장가 매도를 하는 경우에는 매도할 개수를 넣어준다.

9. 주문 자동 거래하기 취소/조회

주문 취소를 하기 위해선 이전에 주문했던 정보의 uuid를 이용한다. 이 uuid 값을 cancel_order 라는 함수의 인자로 넘겨주면 주문이 취소된다.

cancel_order(uuid, contain_req=False) -> Union[tuple, None]

주문을 조회하기 위해서는 get_order 함수를 이용한다. 형태는 아래와 같다.

get_order(ticker_or_uuid, state='wait', kind='normal', contain_req=False) -> Union[tuple, None]

기본적으로 get_order 함수에 ticker만 넣으면 해당 암호화폐에 대한 미체결 주문 정보가 반환된다.

만약 state를 done으로 할당해주면 완료된 주문 정보가 반환된다.

get_order 함수에 주문의 고유 정보인 uuid를 넣으면 해당 주문에 대한 상세 정보가 반환된다. 이 경우 다른 매개변수들은 무시된다.

#1 주식 자동 매매 프로그램 만드는 방법

오늘부터 파이썬(Phthon)을 이용한 '주식 투자 자동화'가 가능한 프로그램을 만들어보고자 합니다. 이번 포스팅은 가볍게 시작할 수 있는 포스팅으로, 주식 투자에 대해 어려움을 겪고 계시거나 초보 주린이분들도 휩게 따라 하실 수 있도록 주식 투자의 기본적인 개념을 간단하게 정리하고, 파이썬 주식 투자 자동화가 어떻게 이루어지는지 그 구조를 간단히 설명해드리겠습니다.

마지막으로 일주일간 파이썬을 이용한 주식 투자 자동화 프로그램을 가지고 그 결과가 어떻게 나왔는지 알아보도록 하겠습니다.

먼저 주식이 무엇인지 그 개념을 간단히 설명드리겠습니다. 주식이란 어떤 회사가 있을 때 그 회사의 지분을 나눠놓은 조각을 의미합니다. 주식을 가지고 있다면 이 회사를 일부 소유하고 있는 것이라고 생각하시면 됩니다.

그래서 내가 어떤 회사의 주식을 가지고 있다면 회사의 방향성에 대해서 입장을 표명할 수 있는 '의결권'을 가질 수 있고, 회사가 돈을 벌었을 때 그 돈의 일부를 배당금의 형태로 받아갈 수도 있습니다.

주식을 사고 팔 수 있는 곳, 증권사

그러면 주식을 어디서 살 수 있는지 알아보겠습니다. 주식은 일반적으로 우리가 당근마켓이나 중고나라에서 중고물품을 거래할 때처럼 어떤 사람이 특정 가격에 올려놓은 주식을 사야 됩니다. 하지만 아쉽게도 당근마켓이나 중고나라에서 주식을 구하기는 쉽지 않고, 이와 비슷한 증권사에서 주식을 사고팔 수 있도록 중계를 해주고 있습니다.

중고나라_당근마켓_증권사

실제로 주식을 거래하는 창을 보면 쉽게 말해서 판다는 사람도 있고, 산다는 사람도 있는데 여러분이 지금 당장 삼성전자 1주를 사야 된다면 어떤 선택지를 고르실건가요?

삼성전자 1주 5.7만원에 팝니다.

삼성전자 1주 5.6만원에 팝니다.

삼성전자 1주 5.5만원에 팝니다.

삼성전자 1주 5.4만원에 삽니다.

삼성전자 1주 5.3만원에 삽니다.

당연히 제일 저렴한거, 5.5만 원에 올라온 주식을 사고 싶으시겠죠. 여러분이 파는 사람이고, 지금 당장 팔아야 된다면 당연히 제일 비싸게 산다는 사람에게 팔아야겠죠. 그래서 이러한 가격들을 '호가'라고 부르는데, 파는 것 중에 가장 싼 것은 '매도호가', 사는 것 중에 가장 비싼 것은 '매수호가'라고 부르게 됩니다.

주식 호가, 봉차트

실제로 증권사 어플에 삼성전자 호가를 보시면 이런 식으로 다양한 가격에 판다고 내놓은 사람과 다양한 가격에 산다고 올려놓은 사람들이 있습니다. 수요와 공급에 의해서 산다는 사람이 많고, 옆에 있는 수량이 점점 줄어든다면 주가도 함께 올라가겠죠.

현대차 주가

반면에 반대로 판다는 사람이 자동 거래하기 많으면 계속 팔려서 주가가 떨어집니다. 그래서 이렇게 호가가 계속 왔다갔다 할텐데, 이렇게 호가가 오르락 내리락 하는 것을 일자별로 나타내게 되면 오르락 내리락하는 그래프가 생기게 됩니다. 그래프를 자세히 보시면 빨간 봉과 파란 봉으로 구성되어 있는 모습을 확인하실 수 있습니다.

카카오 주가

이렇게 봉들이 들어간 차트를 봉차트(캔들차트)라고 부릅니다. 봉은 빨간색인 양봉과 파란색인 음봉이 있습니다. 양봉부터 보면 Y축의 높이가 높을수록 가격이 높습니다. 주식 시장은 시간하는 시간과 끝나는 시간이 있는데, 시작하는 시간의 가격인 시가(장 시작할 때의 주가)보다 종가(장 끝날 때의 주가)가 더 높은 경우에 양봉 을 그리게 됩니다.

나머지 얇은 꼬리들은 주식 가격에 계속 왔다 갔다 할 테니까 이게 최저로 내려갔을 때, 가장 저렴할 때가 '저가'이고 가장 높이까지 올라갔을 때가 '고가'라고 합니다.

음봉 의 경우 반대로 시가(장 시작할 때의 주가)보다 종가(장 끝날 때의 주가)가 더 낮은 경우 입니다. 따라서 우리는 봉차트의 봉을 통해서 주가가 어떻게 변해왔는지 한 번에 알 수 있습니다.

주식으로 돈 버는 방법

주식 거래로 돈을 벌려면 당연합니다. 가격이 쌀 때 샀다가 가격이 비쌀 때 팔면 됩니다. 그러면 이제 파이썬으로 이런 주식 투자를 자동화하는 방법에 대해 알아보겠습니다. 먼저 파이썬으로 주식을 언제 사고, 언제 팔 것인지 투자 전략을 구현할 것이고 작업 스케줄러를 이용해서 매일 주식 시장이 열릴 때마다 증권사 API를 통해서 자동으로 자동 거래하기 매수, 매도가 이루어지도록 만들어보겠습니다.

그러면 쌀 때 사고 비쌀 때 팔고 할 수 있겠죠. 이런 거래가 발생하거나 어떤 특정 이벤트가 있을 때마다 'slack'이라는 메신저로 알림이 오도록 만들어 보겠습니다. 이렇게 구성하고 코드를 돌려 놓으면 우리는 아무것도 안해도 매일 slack 메신저를 통해 우리의 코드가 돈을 벌어오는 것을 확인할 수 있습니다.

이때 우리가 투자 전략을 어떻게 구현하느냐에 따라서 수익률은 굉장히 달라질 수 있습니다. 우리는 래리 윌리암스라는 인물의 '변동성 돌파 전략' 을 사용해서 구현할 것입니다. 전략에 대해 간단히 소개해드리자면, 일정 수준 이상의 상승세를 돌파 신호로 판단하고 그 추세를 따라서 수익을 실현하는 단기 트레이딩 전략입니다.

변동성 돌파 전략

우리는 대신증권 크레온으로 시작

추후에는 이 전략 외에도 딥러닝을 사용하는 등 좀 더 다양한 전략을 이용하여 구현해볼 겁니다. 또 우리는 증권사를 이용해서 거래를 해야 되기 때문에 증권사 API를 사용해야 됩니다. API를 제공하는 대표적인 증권사로 키움증권, 대신증권 크레온, 이베스트 투자증권에서 API를 제공하고 있습니다.

키움증권_크레온_이베스트 투자증권

이중에서 우리는 사용성이 가장 좋다고 알려진 대신증권의 크레온 API를 사용 해보겠습니다. 혹시 아직 대신증권의 증권 계좌가 없으시다면 따라해보시기려면 크레온 계좌를 미리 개설하는 것을 권장드립니다.

다음으로 위에서 설명드린 방법대로 일주일간 프로그램을 이용하여 투자한 결과에 대해 말씀드리겠습니다. 코드를 돌려 놓으면 매일 스마트폰으로 slack 메신저를 통해 무엇을 샀고, 얼마를 벌었다는 이런 정보들이 자동으로 들어오게 되어있습니다.

주식 투자 자동화 프로그램 실전 결과

slack_주식 손익

그래서 투자금을 넣고 일주일 간 돌려보았더니 총실현손익으로 9,743원이 벌린 것을 확인할 수 있었습니다. 그러면 52주, 1년으로 환산하면 65.5%, 약 66%의 연 수익률 을 올릴 수 있었습니다. 요즘 은행 이자가 2%도 안되는 시점에 어마어마한 수익률을 보여주고 있습니다.

물론 이 추세가 계속 영원히 지속된다고 보장할 순 없고, 일자별로 보시면 아시겠지만 5원 벌었다가 1,000원 잃고, 1,300원 잃었다가, 7,000원 벌었다가 이런 식으로 매일매일 그 시장 상황에 따라서 전부 다르게 동작합니다.

막연한 수익률의 기대감만으로 하시는 것이라면, 그렇게 큰 기대는 하지 않으셨으면 좋겠습니다. 어디까지나 수익률이 궁극적인 목표가 아닌, 이런 방식으로 주식 투자 자동화가 가능하다는 것을 보여드리기 위함이기 때문입니다.

이번 포스팅을 통해 주식 투자 세계에 입문하게 되신 분들을 포함하여 주식 투자 자동화에 첫걸음을 디딘 분들, 모두 환영합니다. 주식 투자 자동화 관련 포스팅은 날마다 한 개씩 업로드 될 자동 거래하기 것이고, 크게는 이번편을 포함해서 총 4편 을 끝으로 마칠 것이니 끝까지 함께 하시고 만족하실만한 프로그램을 만드셨으면 좋겠습니다. 앞에서도 언급했지만, '투자 전략'에 따라 수익률은 극대화 되기 때문입니다.

우측 하단 '꿀벌의 주식 블로그 구독'을 하시면 주식 투자 자동화 포스팅을 포함하여 주식 관련 포스팅 업데이트 알림을 바로 받으실 수 있습니다.

자동 거래하기

강의 신청 후 보유검색식으로 바로 진행할 수 있는지
(완성된 최종 어플리케이션으로 바로 실행가능 한것인지)

아니면 강의를 순차적으로 들으면서
코딩을 진행하여 최종 버젼을 만들어서 해야하는지요

자동매매 마스터

7/12/2022

본 서비스는 전자책이기 때문에 직접 코딩을 하셔야 합니다. [email protected]으로 문의주시면 상세 안내드릴께요

5/30/2022

5/30/2022

자동매매 마스터

6/15/2022

hooon

2/28/2022

저도 궁금했는데 답변 감사합니다

makeBot

7/12/2022

개인PC 최소사양은 어느정도될까요?

자동매매 마스터

7/12/2022

PC사양은 그렇게 고사양까진 필요치 않습니다
적당한 정도면 될거 같은데. 세부사양까진 모르겠습니다

Now that we've updated the part with the addition of highPriceafterbuy, let's start implementing the selling option. First, let'자동 거래하기 s implement the split sale according to the yield. We will implement a 30% increase in the first sale, 50% in the second sale, and a 7% increase in the third sale. First of all, it allows sellStatus to run only when the holding quantity is greater than zero, not when the selling is complete, and the first selling when the profileRate is greater than 3. At this point, sellStatus is a "". And the first sale order will be completed -> the first sale not concluded -> the first sale will be changed to complete -> the first sale order will be sold out and then the first sale order will not be released again in these three sellStatus states. So I add this part to the condition. Also, it sells 30% of the total reserves, i.e., the quantity of possession X0.3. We can implement 2nd and 3rd selling with the same concept. This is the part of the 15th round. After the round of 15, it was not revealed in detail which 자동 거래하기 part was modified and applied. We need a little more reinforcement, or we need a course step-by-step source.

자동 거래하기

주식 자동 매매 프로그램 시작하기 Step 3. 프로그램 기본 설정, 매매 종목 추가하기

    본문 폰트 크기 조정 본문 폰트 크기 작게 보기 본문 폰트 크기 크게 보기 가

자동 매매 프로그램 설치와 API 버전 처리를 완료하셨다면, 본격적으로 프로그램 기본 설정에 대해 설명드리겠습니다.

최초 실행 시 "계정 정보를 읽을 수 없습니다." 이는 매매할 계좌 및 기타 기본 정보가 입력되지 않은 상태로 자동 매매를 위해서는 계정 정보를 PC에 저장해야 합니다.

자동 매매를 진행할 계좌를 선택하고 비밀번호를 입력합니다.

투자 비중, 분할 주문 횟수, 매매 간격과 자동 매매 여부를 선택 후 저장합니다.

모의투자로 테스트 시 계좌 비밀번호를 0000이 아닌 임의의 숫자(1234)로 입력 후 저장해주세요.

자동 리밸런싱 프로그램과 API에 등록한 비밀번호가 일치해야 합니다.

저장된 비빌번호가 같지 않거나 0000일 경우 이런 알람이 뜨게 됩니다.

1 투자 비중 (1~100)

계좌 평가 총액에서 투자 비중을 자동 거래하기 사용자가 정할 수 있습니다. 100%를 설정한 경우 모든 평가 총액을 활용해 투자합니다.

매매 주문 시 목표 수량을 얼마나 나눠서 주문할지 결정하는 값입니다.

예를 들어 분할 횟수가 5로 저장했다면, 삼성전자를 총 100주 매도할 경우 1회 주문 시 20주씩 나눠서 매도 주문을 냅니다. 매수도 동일합니다.

각 주문 당 호가 간격은 아래 매수 매도 간격에서 정합니다.

위에서 분할한 주문을 얼마큼의 호가 차이로 매매 주문을 넣을지 가격을 정합니다.

해당 기능은 많은 사람들이 동시에 이용하게 될 경우 특정 종목에 동일한 가격의 주문이 몰리게 되어 슬리피지가 커지는 것을 방지합니다.

[3] 백테스트로 자동매매 성능 확인하기

현명한 투자자라면 자신의 알고리즘을 무작정 전투에 내보내기전에 과거데이터를 이용해 수익률을 확인할 것이다. 물론 과거 데이터에 대한 수익이 무조건 보장되진않는다.

✏️ 과거데이터 추출

코드를 실행시키는 시간부터 1000분전까지의 30분간격의 데이터를 불러와 pastPrice변수에 저장한다.

1분봉, 3분봉, 5분, 15분 등의 데이터는 minutes1, minutes3, minutes5 이런식으로 바꿔주면 된다.

pastPrice를 출력때려보면 이런게 나온다.

pastPrice

필요한걸 뽑아내려면 어떻게 다듬어야할까? 우선 저게 뭔지 보자. print(type(pastPrice))

판다스 데이터프레임이다. 난 복잡한 데이터가 필요한 것도 아니고 판다스에 익숙하지 않아서 저걸 그냥 리스트로 바꿔서 필요한 것만 뽑아쓰려한다.

판다스를 리스트로 만글기위해서는 values 속성을 이용해서 DataFrame을 ndarray로 변환하고 tolist()로 리스트변환하면 된다.

요런 느낌으로. 이제 알아서 손질해서 필요한 데이터를 만들면 된다.

✏️ 업비트 만들기?

데이터는 준비됐는데 백테스팅을 위해서 실제 업비트를 쓸수는 없다. 업비트의 계좌 형식과 필요한 주요메서드를 구현했다.

buy_market_order()는 원래 ticker와 price를 매개변수로 가지지만 여기선 현재가 계산을 위해서 nowPrice를 변수로 넣어주았다. 과거 nowPrice데이터를 리스트로 받아온 후 반복문으로 로직을 돌릴 것이다.

✏️ 백테스트

나는 10분봉을 이용해 계산을 했다. 10000개의 데이터를 가지고 테스트 했으니 대략 69일정도 테스트를 했다고 계산. 69일간 약 6.62 %의 수익(POR)을 얻었다. 104일간 테스트했을때는 약 13%의 수익을, 내 남은 군생활인 500일간 테스트했을때는 64%의 수익을 얻었다.

POR 계산은 다음과 같이 했다.

pyupbit.get_ohlcv('KRW-DOGE', interval='minutes10', count=10000) 15분마다 찍은 POR 변화가록

다음 포스트에서는 계속 매매가 진행될 수 있도록 AWS 서버를 생성하고 프로그램을 작동시켜보도록하겠다. 이틀 후면 부대복귀다.

✏️ 백테스트 주의점

백테스트를 진행하면서 분명 수익률을 높히고자 변수를 이것저것 바꿔본다던가 조정을 가할 것이다. 하지만 과한 조정은 과적합 (overfitting)이 될 수 있다. 과거 데이터에 대한 시뮬레이션 결과를 좋게하고자 과한 튜닝을 한다해서 실제결과에도 같은 결과를 가져올 것이란 보장이 없다는 것을 인지해야한다. 지금 하고 있는 튜닝이 과거 데이터에 대한 튜닝인지 인지해라.


0 개 댓글

답장을 남겨주세요