도움말
인텔리퀀트의 사용방법과 메뉴얼입니다.

서비스 가입

인텔리퀀트 서비스는 페이스북, 구글, 네이버 계정으로 간편하게 회원 가입을 하실 수 있으며, 추가적인 개인정보 수집 없이 바로 서비스를 이용하실 수 있습니다.

인텔리퀀트 서비스를 다른 분에게 소개하여 회원 가입하도록 추천하시는 기존 회원에게 포인트를 적립해 드리기 위한 고유 식별코드입니다. 추천을 받아 회원 가입하시는 회원에게도 가입축하 포인트에 더하여 포인트를 추가로 적립해 드립니다.
내 추천인 코드는 로그인 후 내 프로필>계정관리>사용자 정보에서 확인하실 수 있습니다.

정보 변경

내 프로필>계정관리>사용자 정보 내에 회원 계정에 대한 정보가 있으며, 회원 가입하실 때 자동으로 제공하신 이메일 주소와는 별개로 본인이 수신용으로 사용하려는 이메일 주소를 등록/변경하는 것이 가능합니다. 또한, 커뮤니티에 표출되는 닉네임도 언제든지 변경할 수 있습니다. (현재 중복체크 기능이 없으므로 흔한 닉네임은 피하시는 것이 좋습니다.)
회원 가입을 하면 기본적으로 BASIC 멤버가 됩니다. 상위 멤버십인 PRO 멤버 또는 PREMIUM 멤버가 되기 위해서는 보유한 포인트로 결제하여 업그레이드 하시면 됩니다.

포인트 제도

주변 지인들에게 인텔리퀀트 서비스 가입을 추천하는 것이 가장 쉽게 많은 포인트를 적립할 수 있는 방법입니다.
또한, 본인이 개발한 전략 알고리즘을 커뮤니티 게시판에 소개하고 소스코드까지 공유하는 것도 포인트를 많이 적립할 수 있는 또 다른 방법입니다. 특히, 좋은 콘텐츠를 공유하시면, 다른 회원들이 해당 콘텐츠에 대해 추천을 할 때마다 또는 소스코드를 복사해 갈 때마다 포인트가 계속 적립됩니다.
기본적으로 멤버십을 업그레이드하거나 기간 연장을 하기 위해서는 포인트로 결제를 하기 때문에, 적립하여 보유한 포인트는 PRO 또는 PREMIUM 멤버십을 가입하고 유지하는데 사용됩니다.
또한, 다른 회원이 작성하여 공유한 전략 알고리즘에 대해 소스코드를 복사해 올 때에도 약간의 포인트를 사용하여야 합니다.
네, 만일 포인트가 부족하면 포인트를 즉시 늘리기 위한 방법으로 유료 결제를 통한 포인트 충전을 할 수 있습니다.
적립된 포인트가 있는 상태에서 포인트를 충전하더라도, 이후 포인트를 사용하면 충전한 포인트부터 우선 사용하는 것으로 간주합니다.
인텔리퀀트 포인트는 현금으로 환급이 되지 않으며, 유료 결제를 통하여 포인트를 충전한 부분에 대해서는 일정한 조건 하에 환불이 가능합니다. 자세한 환불 정책은 '포인트 충전 시 유의사항'을 참고해 주세요.

결제와 해지

멤버십을 업그레이드하거나 기간연장을 위해서는 보유한 포인트로 결제를 하여야 합니다. 보유한 포인트가 멤버십을 결제하기에 부족하면 먼저 포인트를 유료 결제하여 필요한 만큼 충전하고 이후에 멤버십을 가입/변경하시면 됩니다.
PRO 멤버십을 사용하시다가 PREMIUM으로 업그레이드하는 경우에는, 잔여 개월에 해당하는 만큼 포인트를 환급 받아 그 차액 포인트 만큼만 추가로 결제하시면 됩니다.
PRO 이상의 멤버십으로 업그레이드하면 즉시 해당 멤버십의 혜택을 누리실 수 있으며, 인텔리퀀트 서비스의 특성 상 멤버십을 결제 후 즉시 해지하더라도 해당 첫 1개월에 대해서는 포인트 환급이 되지 않습니다. 단, 2개월 이상 결제하여 이용 중이신 경우에는 첫 1개월을 제외한 잔여 개월에 대해서 결제에 사용된 포인트를 환급해 드립니다.
현재 포인트 충전(구매)를 위한 결제는 신용카드로만 가능합니다. 혹시 그 외의 수단으로 결제하셔야 하는 경우에는 홈페이지 우측 하단에 표시된 채널톡 상담을 통해 문의해 주세요.

제공 데이터

인텔리퀀트 스튜디오에서 제공하는 기본 데이터는 크게 종목 관련 데이터와 지수 관련 데이터가 있습니다.
종목 관련 데이터에는 종목명, 업종 등 정보 데이터와 주가, 수정주가, 시가총액 같은 가격 데이터, 그리고 자산, 자본, 부채, 당기순이익 등의 재무 데이터가 있습니다. 대상 종목은 국내 KOSPI 및 KOSDAQ 시장에 상장된 재무데이터가 있는 일반 기업의 보통주와 그 우선주, 그리고 ETF를 대상으로 하고 있으며, 스팩(SPAC), ETN, ELW 및 코넥스 상장 종목들 관련 데이터는 제공하지 않습니다.
지수 관련 데이터는 아래와 같이 국내의 코스피, 코스닥 시장과 관련된 몇 가지 지수의 가격 데이터를 기본적으로 제공하고 있습니다.

001 : KOSPI
002 : KOSPI 대형주
003 : KOSPI 중형주
004 : KOSPI 소형주
101 : KOSPI 200
301 : KOSDAQ

기본 데이터로부터 한 번 더 가공하여 제공하는 데이터로는 종목별 재무적 지표인 PER, PBR, ROA, ROE 와 종목별/지수별 기술적 지표인 MA, MACD, ATR, 볼린저밴드 등을 제공하고 있습니다.
이상의 모든 국내 주식관련 데이터는 2000년 1월 이후부터 제공되고 있습니다.
모든 상장 종목의 종목명, 업종 같은 정보 데이터와 주가, 시가총액 같은 가격 데이터 및 지수의 가격 데이터는 일자별 데이터로 매일 주식시장이 끝나면 업데이트 되며 오후 4시경부터 사용할 수 있습니다. 다만 수급 관련 데이터는 대략 오후 6시30분 이후에야 업데이트가 완료됩니다.
재무 데이터는 모든 상장 종목들이 실적보고를 완료한 시점에 일괄 업데이트하며, 업데이트가 완료되면 공지를 해 드립니다. 분기별 재무 데이터가 업데이트 되는 시점은 아래와 같습니다.

3월 마감 재무 데이터는 6월초
6월 마감 재무 데이터는 9월초
9월 마감 재무 데이터는 12월초
12월 마감 재무 데이터는 다해 4월초

종목별 주가: 원 / 달러
재무 데이터: 천원 / 천 달러
시가총액, 거래대금: 백만원 / 백만 달러
발행주식수, 거래량: 주
참고로, 배당 관련 함수인 getDividendYieldRatio(), getDividendYieldRatio()의 결과값은 % 단위입니다.
타 사이트와 PER, PBR 등 재무 데이터를 이용한 지표들의 값이 다른 경우가 있다면 이는 계산방식의 차이 때문입니다. 저희가 기본 제공하는 재무적 지표 값들은 한 분기 값을 연율화한 방식이지만 다른 곳에서 제공하는 지표 값들은 연율화가 아닌 트레일링, 평균값, 회계시점부터의 계산값 등 여러가지 다양한 방식으로 계산될 수 있습니다. 따라서, 저희가 제공하는 지표값이 아닌 다른 방식의 지표값을 사용하려면 사용자가 원하는 대로 지표 함수를 만들어 사용하시면 됩니다.
개별 종목에 대한 재무 데이터의 경우 분기 단위로 과거 데이터를 참조할 수 있습니다. 방법은 재무 데이터를 조회하는 API 함수, 예를 들어 Stock 객체의 getFundamentalNetProfit(index) 와 같은 형태의 함수를 사용할 때 index 에 해당하는 매개변수 값으로 가장 최근 분기로부터 몇 번째 과거 분기 시점의 값을 원하는지 지정해 주면 됩니다. 0 (또는 생략) = 가장 최근 분기, 1 = 1분기 이전 데이터, ...
개별 종목과 지수에 대한 시장 데이터의 경우에는 거래일 단위로 과거 데이터를 참조할 수 있습니다. 방법은 재무 데이터의 경우와 마찬가지로 조회 API 함수의 매개변수로 0을 전달하거나 생략하면 가장 최근 거래일의 데이터를, 1 이상의 값을 매개변수로 전달하면 해당 숫자만큼의 과거 거래일 데이터를 가져옵니다.
예)

a.getFundamentalNetProfit() = a.getFundamentalNetProfit(0) : a 종목의 가장 최근 분기 당기 순이익
a.getFundamentalNetProfit(3) : a 종목의 3분기 이전 당기 순이익
a.getClose() = a.getClose(0) : a 종목의 가장 최근 거래일 종가
a.getClose(20) : a 종목의 20거래일 이전 종가

과거 시점 데이터를 조회할 수 있는 범위는 시장 데이터의 경우는 당일 포함 600거래일, 재무 데이터의 경우에는 19분기 이전 데이터까지 즉, 최근 분기부터 총 20분기(5년치)의 데이터를 참조할 수 있습니다.

전략 개발 환경

종목의 매매는 리밸런싱 시 기 보유 포트폴리오와 신규 목표 포트폴리오 구성 종목의 차이에 따라 종목별로 전체 매도, 전체 매수, 부분 매도, 부분 매수의 방식으로 매매를 시뮬레이션 합니다.
매매 시뮬레이션을 위한 처리 방식은 세가지 선택이 가능하도록 제공하고 있습니다.
첫번째는 리밸런싱 이후 익일 아침 동시호가 매매를 가정하여 시가로 매수, 매도가 동시에 이루지는 방식이며 따로 설정하지 않는 한 기본적으로 적용하는 방식입니다.
두번째는 리밸런싱 이후 익일 장중에 분할매매가 이루어지는 것으로 가정하여 고가, 저가, 종가의 평균 값으로 매수, 매도 가격이 결정되는 방식입니다.
세번째는 리밸런싱 당일의 종가로 매수, 매도가 함께 수행되는 것으로 가정하는 방식입니다. (다소 비현실적입니다.)
이상의 세가지 방식을 설정하기 위한 코드는 아래와 같습니다.

IQEnvironment.simulationMethod = SimulationMethod.normal // 익일 시가 매매(기본값)
IQEnvironment.simulationMethod = SimulationMethod.average // 익일 평균가 매매
IQEnvironment.simulationMethod = SimulationMethod.day // 당일 종가 매매
보유하고 있는 종목이 거래정지가 되는 경우, 다음 리밸런싱 때 매도 사유 발생 시 (거래정지된 종목을 필터링하여 제외한다고 가정) 신규 목표 포트폴리오에서 빠지게 되어 매도 처리가 됩니다.
보유하고 있는 종목이 상장폐지가 되는 경우는 실제로 기업이 상장요건을 만족시키지 못할 정도의 문제가 많아서 상장폐지되는 경우도 있고, 합병에 의해 종목코드가 사라지게 되어 상장폐지 처리가 되는 경우도 있습니다. 이를 자동으로 구분하는 것은 플랫폼 단계에서 하기 어렵기 때문에 상장폐지가 되기 전 정리매매 등의 기회를 통해 매도가 가능할 것으로 보고 상장폐지 직전 마지막 종가로 매도처리하고 있습니다.
이러한 거래정지 및 상장폐지 종목에 대한 처리방식은 비현실적인 줄 알면서도 가장 일반적인 것으로 (다른 상황과 꼬이지 않게) 처리할 수 있는 방법이 무엇일지 고민한 결과입니다. 예를 들어 거래정지 종목을 매도 못하게 하면, 리밸런싱 때 매도금액이 모자라서 새로 매수해야 할 종목 중에 마지막 종목 같은 것을 현금 부족으로 매수 못한다고 경고가 뜰 것입니다. 그러면 백테스팅 상에서는 이게 전략의 성과를 분석하는데 적절한 처리방법인가 하는 고민이 생기게 됩니다.
그래서, 보유하고 있던 거래정지 종목은 보유 중에 투자자가 인지해서 거래정지되기 직전/직후에 그 가격에 최대한 가깝게 매도를 할 수 있다고 가정해서 현재와 같이 처리하도록 만들었습니다.
가끔씩 여러 사용자가 동시간대에 몰려서 백테스트를 실행시키면 서버에서 동시에 감당할 수 있는 백테스트 요청 개수를 초과하게 되는데, 이런 경우 대기열에서 요청 작업이 잠시 기다리게 됩니다. 잠깐 기다리다 보면 자기 순서가 되었을 때 자동으로 시작합니다. 만일 10분 정도가 지나도 시작하지 않는다면 플랫폼에 문제가 발생했을 가능성도 있으니, 그런 경우에는 자유게시판에 제보를 해 주시면 감사하겠습니다.
하나의 전략 스크립트에서 여러 개의 투자 전략에 대한 상대적인 성과 비교를 가시적으로 하고 싶을 때 주로 사용합니다.
처음에 플랫폼을 설계할 때는 회원님의 증권사 계좌에 연동해서 각 계좌별로 실제로 투자할 수 있게 하려는 의도에서 계좌(Account) 개념을 도입했습니다만, 현실적인 문제로 한 전략 스크립트로 여러 개의 실제 계좌에 연동하는 것은 불가능한 상황입니다.
블록 알고리즘 개발환경은 팩터 모델이나 자산배분 모델을 코딩할 필요 없이 보다 간편하게 알고리즘으로 구현하기 위해 미리 정해진 템플릿을 제공하는 한 가지 좋은 방식이라고 생각하시면 됩니다. 따라서, 템플릿에서 정해 놓은 구성 요소와 절차를 넘어서는 복잡한 데이터 처리 프로세스를 구현하기에는 일정한 제약이 따를 수 밖에 없습니다.
현재 블록 알고리즘 개발환경에서는 복수 계좌를 설정할 수 있는 방법을 제공하고 있지 않습니다. 복수 전략을 테스트하기 원하시면 스크립트 알고리즘으로 복수 계좌를 활용하여 작성하셔야 합니다.
아마도 복수 계좌를 사용한 대부분의 알고리즘들은 여러 개의 전략을 비교, 분석하는 용도로 많이 활용되고 있을 것입니다. 실전 투자에서는 그 중 1개의 계좌만 연동시킬 수 있는데, 이 경우 스크립트 내에 생성한 여러 개의 계좌 중 어느 계좌로 할 것인지 지정하는 것이 혼동을 줄 수 있습니다. 따라서, 가급적이면 원하는 투자 전략을 단일 계좌를 사용한 알고리즘으로 재작성하고 실전투자에 활용하는 것을 권장하고 있습니다.
스크립트 알고리즘으로 작성 시에는 다음과 같이 설정할 수 있습니다.

IQEnvironment.stockCommission = 0.001 // 주식 거래 수수료. 기본값 = 0.0015 = 0.15%
IQEnvironment.etfCommission = 0.001 // ETF 거래 수수료. 기본값 = 0.0015 = 0.15%
IQEnvironment.stockTax = 0.003 // 주식 거래세. 기본값 = 0.003 = 0.3%

블록 알고리즘 작성 시에도 [전략 설정] 부분에서 거래수수료와 거래세 설정을 % 단위로 할 수 있습니다.

슬리피지는 별도의 방법을 제공하지는 않으며, 거래비용의 한 종류라는 측면에서 거래수수료 설정에 반영하는 것이 방법이 될 수 있습니다. 즉, 수수료 설정 시 슬리피지 크기만큼 더하여 설정하시면 됩니다.