글 목차
근거와 범위
공개된 IBD 소책자와 출판사 책자 정보를 확인했습니다. 수익이 발생한 종목의 차트만 보여주는 것은 전체 포트폴리오 거래 내역이 아닙니다. 아래 알고리즘은 CAN SLIM를 완벽하게 재현한 것이 아니라, 제안된 플랫베이스 형태의 연구 구성입니다. 새로운 백테스트는 실행하지 않았습니다.
실전 적용 절차
- 대상 종목군 검증당시 이용 가능했던 가격, 거래량과 기업 기초 데이터를 사용합니다.
- 베이스 고정K, F, ATR를 저장하고 돌파 전 대기 기간을 두세요.
- 거래량의 역할 분리베이스 안에서의 조용한 거래와 돌파 시 거래량 증가를 구분합니다.
- 실행 가능한 주문을 제출하세요종가와 거래량이 확정되면 손절매, 매매 규모 및 할당량을 계산합니다.
- 각 계층을 평가하세요OHLCV 검출기와 추가 CAN SLIM 구성 요소를 비교하십시오.
공개된 자료들이 밝히는 바는 무엇인가?
IBD 소책자는 최소 다섯 주 동안 지속되고 조정 폭이 15%를 넘지 않는 플랫 베이스를 설명합니다. 전통적인 매수 지점은 베이스 고점보다 10센트 높은 가격이며, 거래량은 직전 50일 평균보다 약 40–50% 많아야 합니다. [1] 이는 주식시장 교육용 규칙이지, 모든 자산군에 적용되는 보편적 상수가 아닙니다.
윌리엄 J. 오닐의 How to Make Money in Stocks는 분기 이익, 연간 이익, 새로운 변화, 수요와 공급, 주도 종목, 기관의 참여, 시장 방향으로 CAN SLIM을 구성합니다 [2]. OHLCV 감지기는 그 틀의 일부만 측정합니다. 나머지 자료 없이 만든 결과를 완전한 CAN SLIM 백테스트라고 부르면 안 됩니다.
이러한 구분 덕분에 연구 결과가 더욱 유익해집니다. 가격-거래량 분석 도구를 사용하면 기본 정의가 재현 가능하고 경제적으로 거래 가능한지 여부를 판단할 수 있습니다. 그런 다음 추가적인 기업 또는 시장 정보를 별도의 필터로 활용하여 검증할 수 있습니다. 모든 정보를 한꺼번에 결합하면 특정 이점이 차트 패턴, 종목군, 시장 필터 또는 특정 매도 전략 중 어느 것에 기인하는지 파악하기 어렵습니다.
미래 정보 없이 정의한 플랫 베이스 연구 규칙
후보 막대 c의 마감 시점에서 c에서 끝나는 25 세션을 검사합니다. K를 최고가, F를 최저가로 하고 depth=(K−F)/K를 요구값으로 설정합니다. depth≤0.15를 요구값으로 설정합니다. 제안된 추세 대리 변수는 C[c]>SMA200[c]와 SMA200[c]>SMA200[c−20]입니다. 아래의 고정 윈도우, 이동 평균 대리 변수 및 변동성 버퍼는 모든 규칙을 재현한다는 주장이 아니라 연구상의 선택 사항입니다.
후보 생성 시 K,F,A=ATR14[c]와 b=max(2 ticks,0.1A)를 고정합니다. 다음 열 세션 동안 RVOL50=V[t]/mean(V[t−50..t−1])이 최소1.5일 때만 종가가 K+b 위로 교차하는 것을 인정합니다. 가격이 F−b 아래로 떨어지거나 대기 기간이 끝나면 미진입 후보를 취소합니다. 돌파 봉을 고정 베이스에 넣어 스스로 저항선을 높여서는 안 됩니다.
기업 기초 필터를 추가할 때는 보고서가 공개된 시점을 사용하십시오. 회계 분기 말일은 실적이 알려진 날이 아닙니다. 사후 정정된 EPS, 현재 업종 분류, 현재 생존 종목만 있는 대상군은 과거 결정 당시에 알 수 없던 정보를 포함할 수 있습니다.
따라서 데이터 기록에는 각 기본 필드에 대한 값, 관찰 기간 및 사용 가능 시점 타임스탬프가 포함되어야 합니다. 후보자는 결정 시점에 사용 가능한 최신 기록만을 기준으로 평가할 수 있습니다. 누락된 정보는 누락된 상태로 유지되거나 명시된 제외 규칙이 적용되어야 하며, 이후의 재무제표로 자동으로 채워져서는 안 됩니다.
on close c with no active candidate:
K=max(H[c-24:c]); F=min(L[c-24:c]) # inclusive
if depth<=0.15 and trend_proxy: freeze K,F,A,b,expiry=c+10
for c<t<=expiry:
if L[t]<F-b: cancel
elif C[t-1]<=K+b and C[t]>K+b and RVOL50[t]>=1.5:
signal LONG; stop=F-b; enter next executable event
# Comparison baseline: target=entry+2*(entry-stop), time-stop=20 sessions.
베이스 내부와 돌파 시 거래 활동 분리
거래량은 베이스 내부의 활동 감소와 저항 돌파 시 활동 증가를 구분하는 두 역할을 가질 수 있습니다. 기본판은 돌파 RVOL만 사용합니다. 별도 거래량 고갈 실험은 후보 생성 직전 다섯 세션의 평균 거래량을 이전50세션 평균으로 나눈 값에 상한0.75를 제안합니다. 이는 추가 연구 매개변수이며 책의 전체 규칙을 재현한 것이 아닙니다.
최종 일일 거래량은 세션이 종료된 후에야 알 수 있습니다. [3] 이 최종 거래량(RVOL)을 사용하여 동일 세션의 첫 번째 교차점에서 진입을 시뮬레이션하지 마십시오. 장중 진입을 위해서는 실제 결정 시점에 관찰된 누적 거래량과 해당 시간대의 예상 거래량 기준선이 필요합니다.
건조 조건과 확장 조건을 독립적으로 테스트합니다. 이 두 조건은 상당히 다른 종목을 선택할 수 있습니다. 예를 들어, 조용한 바닥은 일반적인 거래량으로 돌파될 수 있는 반면, 매우 활발한 바닥은 높은 거래량으로 돌파할 수 있습니다. 데이터 세트에 두 가지 연속적인 측정값을 모두 저장하는 것이 합격/불합격 플래그만 저장하는 것보다 더 유용한 정보를 제공합니다. 또한 가격 후보를 재구성하지 않고도 제안된 임계값 주변의 민감도 검사를 수행할 수 있습니다.
합성 사례와 실패한 거래
K=50, F=45, depth=10%, A=1, b=0.1이며 추세 조건을 통과했다고 가정합니다. 베이스 고정 후 가격이50.3에 마감하고 평균 백만 주에 비해1.8백만 주가 거래되어 RVOL=1.8입니다. 체결 가능한 진입가50.4와 스톱44.9는 주당 위험 R=5.5를 뜻합니다. 제안한2R 목표는61.4입니다. 가상 위험 예산550통화 단위이면 비용, 명목금액 한도와 유동성 제약 적용 전 잠정 수량은100주입니다.
필터 실패 사례에서는 종가는 동일하지만 RVOL=1.1입니다. 거래량 필터링 버전은 진입하지 않지만 가격만 기준으로 하는 제어 방식은 진입할 수 있습니다. 거래 실패 사례는 50.4에서 진입한 후 발생합니다. 갭으로 인해 보호 손절매 주문이 44.5에서 체결됩니다. 손실은 계획했던 주당 5.5가 아닌 5.9입니다. 이후 기준 가격이 충분히 매력적이지 않아 보이기 때문에 해당 거래를 취소할 수 없습니다.
성공적인 가상 경로의 경우, 가격은 손절매 가격이나 20 세션 시간 제한 이전에 61.4에 도달해야 합니다. 이 경로는 명시된 청산이 어떻게 처리되는지를 보여주는 것이며, 이러한 경로가 얼마나 자주 발생하는지를 추정하는 것은 아닙니다. 필터링된 분기와 필터링되지 않은 분기는 각각 실제 거래 기회 집합을 유지해야 하며, 여기에는 거래가 발생하지 않는 후보도 포함되어야 합니다.
실행 및 포트폴리오 제약 조건
초기 실험에서는 전체 베이스 라인 바깥쪽에 손절매 주문을 설정하는 것이 간단합니다. 오른쪽 가장자리 근처의 작은 저점 아래에 손절매 주문을 설정하는 것은 별개의 구현 방식이며, 손절매 거래 분포가 매우 다르게 나타날 수 있습니다. 이 제안된 구조적 손절매 주문이나 2R/20 세션 종료는 오닐이 고안한 완전한 독창적 위험 관리 정책으로 간주되어서는 안 됩니다.
신호를 확인한 뒤 새 주문을 내기 전에 체결 가능한 호가를 관찰하십시오. 그 가격이 잘못된 스톱 관계를 만들거나 미리 정한 위험 한도를 넘으면 제출 전 거부를 기록합니다. 이미 체결된 주문은 나중에 알게 된 갭 정보로 소급 취소할 수 없습니다. 같은 OHLC 봉에 스톱과 목표가가 모두 있으면 세부 자료나 일관된 보수적 규칙으로 발생 순서를 처리합니다.
여러 종목이 함께 돌파할 수 있으므로 결과가 알려지기 전에 순위와 배분 정책을 정합니다. 유동성, 종목별 위험, 업종 집중, 상관 노출과 총 명목금액 한도가 필요합니다. 무한한 자본을 가정해 모든 합격 종목을 사는 백테스트는 허용되지 않습니다. 배분이 거절된 후보도 기록하여 선택의 영향을 볼 수 있게 합니다.
어떤 구성 요소가 기여하는지 테스트하기
같은 가격 후보 집합에서 거래량 조건 없음, 감소만, 증가만, 두 조건 모두를 비교합니다. 이후 기업 이익, 가격 상대강도, 시장 전체 필터를 한 그룹씩 추가합니다. 필터의 추가 효과를 잴 때는 진입 시점, 청산, 수량과 비용을 그대로 유지합니다. 청산까지 동시에 바꾸면 거래량의 기여를 분리할 수 없습니다.
연구 질문에 필요한 경우 상장 폐지된 종목을 포함하는 특정 시점의 데이터셋을 사용하십시오. 후보 종목 수, 체결 건수, 순 기대 수익률(R 사용), 포트폴리오 수익률, 최대 손실률, 회전율 및 보유 기간을 보고하십시오. 결국 수백 퍼센트 상승한 주식 목록은 거래 성공률을 추정할 수 있는 기준이 되지 않습니다.
유용한 실행 점검 사항으로는 휴일로 단축된 주, 바닥권 내 분할, 돌파 당일 거래량 급증, 장 마감 후 실적 발표, 다음 주문 결정 전 저항선 상 갭 발생 등이 있습니다. 과거 후보들을 고정하고 동일한 접두사를 사용하여 향후 추가 데이터를 재생합니다. 원래 레벨이나 결정 시점에 사용 가능한 데이터는 변경되지 않아야 합니다.
흔한 실수
하나의 패턴을 전체 시스템으로 취급하는 것
평평한 기반에는 CAN SLIM의 회사 및 광범위한 시장 구성 요소가 포함되어 있지 않습니다.
하루를 시작할 때 장 마감 거래량을 사용합니다.
이는 미래를 내다보는 것입니다. 진입 시점은 거래량 관측 자료가 확보되는 시점을 고려해야 합니다.
살아남은 주식만 선택합니다
파산했거나 상장 폐지된 기업을 제외하면 과거 결과가 부풀려지고 이용 가능한 전체 기업군을 왜곡할 수 있습니다.
이 기법을 사용하기 전 체크리스트
자신의 데이터로 확인한 뒤 각 항목에 체크하세요. 진행 상태는 이 브라우저에 저장되며, 전략의 수익성을 인증하지는 않습니다.
자주 묻는 질문
기존의 10-센트 버퍼를 모든 시장에서 사용해야 할까요?
자동으로 적용되지 않습니다. 틱 크기와 명목 가격이 다릅니다. ATR 기반 버퍼는 별도의 연구용 변형 제품이므로, 별도로 표시하고 테스트해야 합니다.
RVOL이1.5이면 수익성이 입증되나요?
아니요. 그것은 완전한 전략을 구성하는 여러 조건 중 하나일 뿐입니다. 그 가치는 비용을 고려하고, 해당 필터를 적용하지 않은 동일한 전략과 비교하여 표본 외적으로 측정해야 합니다.
연구 출처
각 출처는 옆에 설명된 정의나 근거를 뒷받침합니다. 의사코드, 가상 예시와 제안된 매개변수는 별도로 검증해야 합니다.
- IBD: How To Recognize Great Performing Stocks — Flat BaseInvestor’s Business Daily. 공개 소책자의 플랫 베이스 형태와 거래량을 검토했습니다. 선택된 종목의 상승률을 시스템 수익률로 간주하지 않습니다. 확인일: .
- How to Make Money in Stocks, Fourth EditionMcGraw Hill. 출판사 메타데이터와 목차만 확인했으며, 정식으로 구매한 책은 읽지 않았습니다. 확인일: .
- TradingView: RepaintingTradingView. 데이터 이용 시점 정보만 제공되며, 수익성 검증은 이루어지지 않았습니다. 확인일: .
관련 기법
위험 안내
이 내용은 학습과 연구 설계를 위한 것이며 금융 조언이 아닙니다. Backtest는 과거 데이터 시뮬레이션으로, 미래 성과를 보장하지 않으며 실제 거래를 주문하지 않습니다. 이 라이브러리의 기법이 모두 앱에 구현된 기능은 아닙니다. 관련 정보: 검증 방법 및 학습 센터.
실제 자금을 투입하기 전에 규칙을 검증하세요
앱 지원 범위, 데이터와 개별 모의 거래를 확인하세요. 고급 탐지 기법은 별도 구현이 필요할 수 있습니다.
App Store에서 Backtest 다운로드