記事の目次
根拠と適用範囲
公開されているIBDの小冊子と出版社の書籍情報を確認しました。掲載されている勝ち銘柄のチャートは、ポートフォリオ全体の取引記録ではありません。以下のアルゴリズムは、CAN SLIMの完全な再現ではなく、フラットベース型のリサーチ構成案です。新たなバックテストは実施していません。
実践の流れ
- 対象銘柄群を検証する過去の時点における価格、出来高、およびファンダメンタルズデータを使用してください。
- ベースを凍結するK、F、ATRを保存し、ブレイクアウト前の待機期間を記録します。
- 出来高の役割を分けるベース内の取引活動の低下と、突破時の増加を分けます。
- 実行可能な注文を提出してください終値と出来高が判明したら、ストップロス、サイズ、および割り当てを計算します。
- 各層を評価するOHLCV検出器と、追加のCAN SLIMコンポーネントを比較してください。
公的情報源が明らかにするもの
IBD の小冊子は、少なくとも5週間続き、調整幅が15%以内のフラットベースを説明しています。伝統的な買い水準はベース高値の10セント上で、出来高は直前50日平均をおよそ40–50%上回る水準です [1]。これらは株式市場での教育用ルールであり、全資産に共通する定数ではありません。
William J. O'Neil の 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)を凍結します。続く10セッションの間、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 のみ使います。別の出来高減少実験では、候補作成前の最後の5セッションの平均出来高を直前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における純期待値、ポートフォリオ収益率、ドローダウン、売買回転率、保有期間を報告してください。最終的に数百パーセント上昇した銘柄のリストでは、取引勝率を推定するための分母が得られません。
有用な実装チェックとしては、祝日による週の短縮、ベース内でのスプリット、ブレイクアウト日の出来高急増、市場閉場後の決算発表、次の注文決定前の抵抗線上へのギャップなどが挙げられます。過去の候補を固定し、追加の将来データを使用して同じプレフィックスを再現します。元のレベルも、決定時に利用可能なデータも変更してはなりません。
よくある落とし穴
1つのパターンをシステム全体として扱う
平らなベースには、CAN SLIM の企業および広範な市場コンポーネントは含まれていません。
一日の始めに終値の出来高を使用する
それは先読みです。エントリーのタイミングは、ボリューム観測データが利用可能になるタイミングを考慮しなければなりません。
生き残った株だけを選ぶ
破産した企業や上場廃止になった企業を除外すると、過去の実績が過大評価され、利用可能な銘柄群の実態が誤って示される可能性がある。
この手法を使う前のチェックリスト
ご自身のデータで確認した項目にチェックを入れてください。進捗はこのブラウザに保存されますが、戦略の収益性を認定するものではありません。
よくある質問
従来の10-centバッファは、すべての市場で使用すべきでしょうか?
自動的には適用されません。ティックサイズと名目価格は異なります。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をダウンロード