ページスクリーナー · 22 / 29
スクリーナー
スクリーナーは、1 万銘柄超の米国株の財務諸表で絞り込み、該当銘柄を並べ替え可能なテーブルに表示します。ノーコードのフィルター行でスクリーンを作成することも、フィルター行では表現できないロジックのために Python の Screener Script を書くこともできます。保存したスクリーンは、バルクフォワード実行やバックテストのシンボル選択にも使えます。
スクリーンはファンダメンタルデータのみで動作します。ライブの価格やセクターのデータはないため、結果テーブルには Market Cap / Last / Net Change のデフォルト列はなく、SIC の industry の説明がセクターの代わりになります。時価総額、企業価値、期末の株価は Valuation グループのフィールドとして利用でき、フィルターに使うことも列として追加することもできます。これらは各期末の値で、今日の気配ではありません。暗号資産は財務諸表がないため対象外です。
サインインしている必要があります。ファンダメンタルデータは QuantCraft のサーバーからダウンロードされます。
UI のどこにあるか
| 場所 | たどり着き方 |
|---|---|
| Screener ページ | ナビバー → Screener(Trade の直後) |
| Screener Script ファイル | QuantCraft IDE → New File → 種類 Screener Script |
| バルクフォワードのターゲット | AutoTrading または QuantCloud → 新規バルク実行 → ターゲット Screener |
| バックテストのシンボル | QuantCraft IDE → Run backtest → Symbol source → Screener |
| エージェント | エージェントの Test ダイアログ(Scheduler → Symbol source → Screener)と New Agent Bulk Run のターゲット |
| 独立したウィンドウでの Screener | Screener ページ → ページタイトル横の Pop out ボタン |
ページには 2 枚のカードがあります。Filters(No-Code と Python Script のタブ付き)と Results です。Run はフィルターのフッターの Reset filters の隣にあります。Filters カードのシェブロン(Collapse filters)で折りたたみ、結果の表示領域を広げられます。
タイトル横の Pop out ボタンは Screener を別ウィンドウで開くため、IDE やチャートで作業しながら、2 台目のモニターにスクリーンを表示したままにできます。ウィンドウは同じページで、プリセットと Screener Script はメインウィンドウと共有されますが、各ウィンドウはそれぞれ独自のフィルターと結果を保持し、スクリーンは一度に 1 つのウィンドウでのみ実行されます。← Return to main window で閉じます。ポップアウトが開いている間は、アプリは終了しません。
QuantCraft AI が Screener ウィンドウを操作している間は、「The AI is using this window」 と表示され、完了するまでコントロールがロックされます。
ファンダメンタルデータのダウンロード
Screener を初めて使うと、ファンダメンタルデータ全体があなたのマシンにダウンロードされます。そのキャッシュにデータが入るまで、Filters と Results のカードは Download Fundamentals ボタン付きのゲートに置き換えられます。
ダウンロードは Screener を開いたときではなく、アプリを開いたときに始まります。ページに着く頃には、たいてい実行中か完了しています。ダウンロード中に Run をクリックしても、2 つ目のダウンロードは始まりません。
- 最初のコールド実行には数分かかります。それ以降の実行は数秒です。
- 実行バナーには、フェーズ(
connecting → universe → download → convert → screen)、shard 14 of 32のようなシャードカウンター、スキャン済み/合計の件数、Cancel ボタンが表示されます。ウォーム実行ではスクリーンのフェーズだけが表示されます。 - バナーは経過時間を加算表示し、ETA は表示しません。所要時間が数分単位でぶれる実行を、正直に予測することはできないためです。完了すると、
12 matched in 3m 20sのような要約と、それに続く· Fundamentals updated <time>が表示されます。取得できなかったシンボルがある場合は、クリックできる N unavailable リンクで一覧が開きます。 - 中断されたダウンロードは、最初からやり直さず次回の実行で再開されます。ダウンロード途中でのキャンセルは安全で、未完了の部分は次回に取得し直されるだけです。
- ダウンロードは、ページを離れても続行されます。
データの更新頻度
| タイミング | ダウンロードされるもの |
|---|---|
| 最初のスクリーン | ユニバース全体 |
| 同じ UTC 日のそれ以降のスクリーン | なし |
| 翌日の最初のスクリーン | 最新の提出書類が 62 日より古いシンボルのみ |
62 日はおよそ 1 四半期にあたるため、企業は次の提出書類が出ていそうな時期になって初めて再確認されます。
実行バナーの右側には、10,384 symbols cached · 250 MB のような行と Clear cache ボタンがあります(スクリーン実行中は非表示、AI がウィンドウを使用中は無効)。消去すると数分かかったダウンロードが失われるため、確認(Clear cache または Keep it)が求められます。キャッシュはアンインストールでも削除されない再生成可能なデータなので、ここで確認でき、解放もできるようになっています。
キャッシュ形式を変更するアプリ更新のあとは、次のスクリーンでユニバース全体が一度ダウンロードし直されます(Per Share、Valuation、Scores が追加されたときに発生しました)。
スクリーンの作成(No-Code)
各フィルター行は左から右へ読みます。Period → Field → Filter type → 値の入力。+ で行を追加し、− で行を削除します。+ ボタンは、新しい行が Fundamentals 行か Industry 行かを尋ねます。
行は AND で結合されます。シンボルは、有効なすべての行を満たす必要があります。(AI が作成した、またはファイルからインポートしたプリセットは、代わりに OR(「Any filter can match」)を使うことがあります。どちらかは Load Preset に表示されます。)
デフォルトの開始行(Quarterly / Total Revenue / % Change / 1 period back / min 0%)はそのままで有効なので、Run はすぐに機能します。実行が始まる前に、有効なすべての行が検証されます。不完全な行があると、トーストとその行へのインラインエラーが表示され、実行は開始されません。数分かかるスキャンは、使えないクエリで始めるべきではないからです。
実例:Quarterly / Total Revenue / % Change / periods back 3 / min 1 / max 3 は、直近 3 四半期で売上が 1% から 3% の間で成長した企業を見つけます。
フィルターの種類
特に断りがない限り、すべてのフィルターは最新の値を読みます。
| フィルター | パラメータ | 該当するもの |
|---|---|---|
| Range | min、max | 最新の値が min と max の間(両端を含む)にある。片側を空欄にすると上限/下限なし。 |
| Above | value | 最新の値が value より大きい。 |
| Below | value | 最新の値が value より小さい。 |
| Equals | value、tolerance | 最新の値が value の ± tolerance 以内。 |
| Has a value | — | 最新の値が存在する。Financials Extended と併用すると便利。 |
| % Change | periods back、min %、max % | n 期前から最新までの変化率。開始値がゼロの場合は不合格になります。 |
| Absolute Change | periods back、min、max | 単純な差(最新 − n 期前)。 |
| QoQ Change % | min %、max % | 前四半期比の変化率。四半期のみ。期間セレクターはロックされます。 |
| YoY Change % | min %、max % | 前年比の変化率。ラグは自動で、四半期は 4、年次は 1。 |
| CAGR % | periods back、min %、max % | 年率換算の成長率。両端の値が正である必要があります。 |
| Average over N | periods back、min、max | 直近 N 期間の平均。ウィンドウ内に欠損値が 1 つでもあると、そのシンボルは不合格になります。 |
| Grew N in a row | periods back | ウィンドウ内のすべての期間で値が増加した。 |
| Fell N in a row | periods back | ウィンドウ内のすべての期間で値が減少した。 |
| Above X for N | value、periods back | 直近 N 期間のすべてが value を上回る。 |
| Below X for N | value、periods back | 直近 N 期間のすべてが value を下回る。 |
| Top N by field | n | ランキングフィルター — スキャンした全体のうち上位 n シンボルを残す。 |
| Percentile rank ≥ | min % | ランキングフィルター — スキャンした全体のうち、そのパーセンタイル以上のシンボルを残す。 |
2 つのランキングフィルターは、シンボルごとではなく母集団全体で決まるため、すべてのシンボルをスキャンした後に確定します。ランク付け対象のフィールドに値がないシンボルは、どちらにも入りません。
使える periods back の最大値は 40 です。
フィールドの選択
フィールドピッカーは検索でき、フィールドを次の順にグループ化しています。
Ratios → Valuation → Scores → Per Share → Income Statement → Balance Sheet → Cash Flow → Financials Extended → Earnings History
レシオは、スクリーナーに最も関連が深く、すでに単位が正規化されているため最初に表示されます。値の入力は、フィールドの単位($、%、日数、株数、1 株あたりの金額、件数、または単なる数値)に従います。各グループの内容については、ファンダメンタルデータのフィールドリファレンスを参照してください。
- すべてのグループが四半期と年次をサポートしますが、Earnings History(四半期のみ)と CAGR フィールド(
revenueCagr3y、revenueCagr5yなど。年次のみで、四半期のピッカーからは消えます)は例外です。期間を変更したとき、新しい期間にフィールドが存在しなければ、フィールドはクリアされます。 - **「Periods back」は、選択した期間内の行数を数えます。**四半期 + 3 は 3 四半期、年次 + 3 は 3 会計年度です。両者が混在することはありません。
- Valuation のマルチプルは、四半期の行でも直近 12 か月ベースです。
- **Financials Extended のフィールドはシンボルごとに異なります。**ファンダメンタルデータのキャッシュをダウンロードした後でなければピッカーに表示されず、「varies by symbol」と表示されます。ある企業が報告していないフィールドに対するフィルターは、その企業を不合格にします。それが問題になる場合は Has a value と組み合わせてください。
- 将来の日付の期末は無視されるため、「最新」がまだ来ていない期間になることはありません。
- フィルターできないもの:Company Info、Earnings Trend、Earnings Annual、TTM、最新(今日時点)のバリュエーション、指標の出所、Piotroski / Beneish スコアの構成要素、
priceBasisやapproximateのようなテキストまたは yes/no のキー。これらは比較できる報告期間を持たないか、数値ではありません。
**廃止されたフィールド。**より優れたものができたため、旧 Financials Extended の 8 つのフィールドが廃止されました:ebitda、ebitdaMargin、enterpriseValue、priceToEarnings、priceToBook、priceToSales、evToEbitda、evToRevenue。これらを使っていた保存済みのスクリーンは、読み込み時にその行(または列)が失われます。これらを直近 12 か月ベースで計算する Valuation グループから作り直してください(値は旧来のものと異なります)。(ratios.debtToEquity は単に ratios.debtToEquityRatio に名前が変わり、引き続き読み込めます。)
Industry 行
Industry 行は、フィールド/タイプ/値のコントロールを業種の複数選択に置き換えます。シンボルの業種が選択した業種のいずれかであれば合格します。少なくとも 1 つの業種を選択する必要があります。リストは、実際にダウンロードしたデータから作られます。
Python Script モード
AND で重ねた比較では足りないとき、たとえば複数フィールドにまたがる計算、条件付きロジック、独自のランキングスコアが必要なときは、Python Script を選びます。
ファイルは QuantCraft IDE の New File → Screener Script で作成します。動作するボイラープレートが最初から入っています。トップレベルの filter() を定義しているワークスペース内の任意の .py ファイルも対象です。Screener の Python Script タブはそれらを一覧表示し(異なるフォルダーのファイルを区別できるようフォルダーパスのラベル付き)、選択したものをプレビューします。ワークスペース内の他のファイルも実行時に一緒に送信されるため、スクリプトは自作のヘルパーモジュールをインポートできます。
def filter(fundamentals, symbol):
q = fundamentals["incomeStatement"]["quarterly"]
if len(q) < 4:
return {"result": False}
latest, year_ago = q[-1]["totalRevenue"], q[-4]["totalRevenue"]
if latest is None or not year_ago:
return {"result": False}
growth = (latest - year_ago) / abs(year_ago)
return {"result": growth > 0.10, "value": growth}
def rank(value, symbol):
return min(max(value, 0), 1) * 100filter(fundamentals, symbol) はティッカーごとに 1 回呼び出され、真偽値の "result" を持つ dict を返す必要があります。"value" は任意で、ランキングに引き継ぎたい値です。例外を発生させる、単なる True を返す、真偽値の "result" を持たない dict を返すスクリプトは、そのティッカーに限って不一致として扱われます。1 つの不具合のあるティッカーが実行全体を中止させることはありません。
rank(value, symbol) は任意で、一致したティッカーに対してのみ実行されます。実数を返してください。どのスケールでも構わず(0-1、1-10、0-100)、常に高いほど良いことを意味します。これは並べ替え可能な Rank 列を埋めます。この列は Python Script モードにのみ表示されます。失敗した rank() は行の一致を取り消しません。行は一致を維持し、ランクは — と表示されて最後に並びます。
symbol 引数は両方の関数で任意です。従来の 1 引数版の filter(fundamentals) と rank(value) も引き続き動作します。
fundamentals 引数
{
"symbol": "AAPL",
"entityName": "Apple Inc.",
"sicDescription": "ELECTRONIC COMPUTERS",
"balanceSheet": {"quarterly": [...], "yearly": [...]},
"incomeStatement": {"quarterly": [...], "yearly": [...]},
"cashFlow": {"quarterly": [...], "yearly": [...]},
"ratios": {"quarterly": [...], "yearly": [...]},
"perShare": {"quarterly": [...], "yearly": [...]},
"valuation": {"quarterly": [...], "yearly": [...]},
"scores": {"quarterly": [...], "yearly": [...]},
"financialsExtended": {"quarterly": [...], "yearly": [...]},
"earnings": {"history": [...]},
}アップロード時点の値はスクリプトには渡されません。ttm、valuation.latest、metricsInputs、metricsHealth には期間がなく、スクリーンはシンボル間で期間を比較するためです。valuation のマルチプルは四半期の行でも直近 12 か月ベースであり、符号付きの利回りの隣にある None のマルチプルは、データの欠損ではなく分母が正でないことを意味します。
- 値は数値または
Noneで、"1234.00"のような文字列はありません。数値でないキーは完全に除外されます:earnings.historyのbeforeAfterMarket、reportDate、currency、scoresのpiotroskiComponents/beneishComponentsの内訳、valuationのpriceBasis/approximateのようなテキストフラグ。 - **行は古い順なので、
rows[-1]が最新の期間です。**各行にはdate(期末)があります。 - 取得できるのは直近 12 四半期と直近 6 年までで、これがスクリプトがさかのぼれる範囲の上限になります。
スクリプトが print() したものはすべて取り込まれ、Run の隣の Output logs ボタンで表示されます。失敗した実行でも同様なので、クラッシュ直前に出力された内容を確認できます。バッファは 200,000 文字を保持し、それを超えると最も古い出力から削除されます。ノーコードの実行では、直近のスクリプト実行のログはクリアされません。
スクリプトが選択されていない、または選択したファイルに filter() がない場合は、トーストとともに Run がブロックされます。
結果
各行には、スターとチャートのボタン、Rank(Python Script モードのみ)、Symbol、Company、Industry、As of に加えて、フィルター行ごとの該当した値の列(No-Code モード)と、追加したフィールドが表示されます。
「As of」は、そのシンボルに使われた最新の期末です — フィルターが実際に評価された会計期間です。将来の期間になることはありません。
| コントロール | 動作 |
|---|---|
| 列ヘッダー | ページだけでなくテーブル全体を並べ替えます。空の値は両方向とも常に最後に並びます。 |
| 列ピッカー | 結果の列を追加または並べ替えます。スクリーンを再実行することはありません — 本当に新しいフィールドの場合は、画面上の行についてその列だけを取得します。 |
| 検索ボックス | すでにある行を絞り込みます。 |
| Tradable only | ブローカーアカウントの取引可能なシンボルリストにないシンボルを非表示にします。 |
| スター | シンボルをウォッチリストに追加します。スター付きのシンボルはテーブルの上にチップとして表示され、セッションをまたいで保持されます。 |
| シンボル(クリック) | Factor Exposure タブを含む、シンボルごとのファンダメンタルデータ詳細ダイアログを開きます。 |
| チャートボタン | そのシンボルの Trade チャートをポップアウトウィンドウで開きます(取引可能なシンボルのみ)。 |
一致したものは実行完了時にまとめて表示されるため、スクリーンの実行中はテーブルが空のままです。進行状況はバナーで確認してください。
**結果は保存されません。**古い結果は結果がないより悪いため、アプリを再読み込みすると意図的にテーブルがクリアされます。フィルター、列、スター付きシンボル、アクティブなタブ、選択したスクリプトは記憶されます。
プリセット
プリセットは、フィルター行、その結合方法、結果の列に名前を付けたスナップショットです。
| ボタン | 動作 |
|---|---|
| Save Preset | 現在のスクリーンに名前を付けて保存します。デフォルトから何かを変更するまで無効です。列を選んだだけではカウントされません。 |
| Load Preset | 保存済みのプリセットを参照し、それぞれの説明、フィルターが AND(「All filters must match」)か OR(「Any filter can match」)で結合されているか、フィルターの平易な要約を表示します。 |
| Update {name} | 新規作成の代わりに、読み込んだプリセットを置き換えます。読み込んだプリセットを編集すると、Save Preset がこれに変わります。 |
| Reset filters | 読み込んだプリセットとのリンクをクリアし、ボタンが Save Preset に戻ります。 |
Load Preset の中では、次のこともできます。
- Delete preset — 確認の後で削除します。
- Export preset — 共有やバックアップ用の JSON ファイルとして保存します。
- Import preset — そのような JSON ファイルからプリセットを読み込みます。
スクリーンでシンボルを選ぶ
バルクフォワード実行
New Run ダイアログの Targets タブで、Screener スコープを選びます。実行は、保存済みのプリセットまたは Screener Script に該当するものを取引し、稼働中は Refresh interval (days) ごとに再スクリーニングします。Include tickers with open positions は、該当しなくなった後もポジションをローテーションに残します。Screener のターゲットは株式のみです。Use fundamentals をオンにすると、現在のスクリーンのすべてのシンボルのファンダメンタルデータが自動的に取得され、再スクリーニングのたびにその集合が追従します。
QuantCloud では、ランナーがスクリーンに必要なファンダメンタルデータの独自のコピーを保持します。新しいランナーでの最初のスクリーナー実行はすべてをダウンロードするため時間がかかり、その後は 1 日 1 回だけ更新されます。ランナーはダウンロードにあなたのサインインを使いますが、それを自力で更新することはできないため、数日にわたる実行では、サインインの有効期限が切れた後、再スクリーニングはすでに持っているデータを使い続けます。
| フィールド | 備考 |
|---|---|
| Screener source | Screener preset または Python script。 |
| Preset / Screener script | どちらを実行するか。 |
| Sort column / Direction | 上限を適用する前に、プリセットの該当銘柄をどう並べるか。 |
| Rank direction | スクリプト用。スクリプトの rank() スコアのどちら側を先に取るか。 |
| Limit | 取引するシンボル数。0 はすべての該当銘柄。 |
| Refresh interval (days) | 稼働中にスクリーンを再実行する頻度。最小値かつデフォルトは 1 日。 |
| Refresh time (ET) | 再スクリーニングを行う時刻。デフォルトは 16:30(米国市場の引けの 30 分後)。 |
| Include tickers with open positions | すでにポジションを持っているシンボルを、該当しなくなっても追加し、稼働中の実行がポジションを黙って落とすことがないようにします。 |
**デフォルトが 16:30 ET の理由。**新しいユニバースを取り込むと実行が再起動するため、11:00 の再スクリーニングではライブの取引が中断してしまいます。引け後の時刻に固定すれば、何も取引されていない間に更新が行われ、次のセッションが始まる前に新しいシンボルリストが準備できます。
- **時刻は常に市場時間(ET)**で、どのタイムゾーンにいても同じです。フィールドの下のヘルプテキストにお住まいの地域での換算時刻が表示されるので、
16:30 ET · 21:30 your timeは 2 つの設定ではなく、同じ瞬間を表します。 - 変更はいつでも可能です。 09:30–16:00 ET のセッション内の時刻を選ぶと、再起動が取引を中断する旨の警告がフィールドの下に表示されますが、実行は開始されます。判断はあなた次第です。
- 間隔と時刻は連動します。
16:30で1日なら毎日引け後に再スクリーニングし、16:30で3日なら 3 日に一度、引け後に再スクリーニングします。 - フィールドが空、または
HH:MM以外の入力だと、インラインエラーとともに実行がブロックされます。
New Run ダイアログの全体については、AutoTrading と QuantCloud を参照してください。
バックテスト
Run backtest ダイアログの Symbol & data タブで、Symbol source を Screener に設定します。固定リストを取引する代わりに、バックテストは進行に合わせてスクリーンを再実行し、シミュレーション上のその時点で該当していたものを取引します。
| 設定 | 動作 |
|---|---|
| Screener source | Screener preset または Python script。 |
| Sort column / Direction | 上限を適用する前に、プリセットの該当銘柄をどう並べるか。 |
| Rank direction | スクリプト用。rank() スコアのどちら側を先に取るか。 |
| Limit | リバランスごとに取引するシンボル数。0 はすべての該当銘柄。 |
| Refresh interval (days) | スクリーンを再実行する頻度(シミュレーション上の暦日)。スクリプトでは 7 日以上が必要です。 |
| Keep tickers with an open position | 該当しなくなった後もシンボルを売買可能なままにし、建玉を引き続き管理できるようにします。 |
ファンダメンタルデータはスクリーンに追従します。 Uses fundamentals をオンにすると、スクリーニングされたすべてのシンボルのファンダメンタルデータが on_bar / on_tick で自動的に利用できます。選択する必要はありません。これは Screener のキャッシュから読み取られるため、Screener がすでにダウンロードしたシンボルは追加のダウンロードが不要です。読み取るときは必ず symbol=symbol を渡してください — ファンダメンタルデータを参照。
「Keep tickers with an open position」が影響するのは取引であり、評価ではありません。これをオンにすると、保有中のシンボルはスクリーンから外れた後もバーを受け取り続けるため、ストラテジーが決済できます。オフにすると、シンボルはコールバックを受け取らなくなり、ポジションはバックテストが終わるまで単に建玉のまま残ります。どちらの場合も、ポジションは常にそのシンボルの実際の価格で評価されるため、資産曲線と指標は正しくなります。
**on_init はリバランスのたびに再度呼ばれます。**スクリーナーのシンボルソースが有効な場合、エンジンはスクリーンが再実行されるたびに on_init(symbols=<ticker list>) を再度呼び出します。これにより、シミュレーションを再起動することなく、ストラテジーが新しいユニバースに対応できます。要点:
- 実行開始時、
on_initは連続して2 回呼び出されます。標準のセットアップ呼び出し(symbols=None)と、それに続く最初のスクリーン結果です。 - 再呼び出しのたびに、前の呼び出しが残したモジュールレベルの状態がそのまま見えます。状態はリバランス間でリセットされません。
def on_init():(パラメータなし)と宣言したストラテジーは影響を受けません。オプション引数は名前で対応付けられるため、存在しないsymbolsは単に無視されます。
スクリーニングされたユニバースのカレンダーデータ
Include calendar data は、スクリーナーのシンボルソースでも機能します。カレンダーは、スクリーンがリバランスの全ティッカーリストを確定した後に読み込まれ、ティックごとの参照遅延はありません。知っておくべき点:
- スクリーンには該当したが価格バーがないシンボル(日付範囲外、または実行開始前に上場廃止)には、カレンダーのリクエストは発生しません。
- 広範なスクリーンでは、サーバー上にカレンダーがないシンボル(通常は小型または対象外のティッカー)が該当することがよくあります。実行ログは、実行を失敗させるのではなく、その件数を報告します。
- カレンダーはリバランスごとに更新され、新しく追加されたティッカーもカバーします。
結果は Logs の隣の Screener Output タブに表示され、各リバランスが折りたたみ可能な日付として表示されます。+ をクリックして日付を展開すると、その期間に取引されたシンボルを確認できます。Expand all も使えます。スクリーンは最初のバーより前に確定されるため、スケジュール全体が最初から揃っています。
知っておくべき要件:スクリーナー駆動のバックテストには開始日と終了日の明示が必要です。追加の時間枠はサポートされません(そのため get_bar は None を返します。履歴には各ティッカー自身の bar.close[i] オフセットを使ってください)。Debug Test はスクリーナーのシンボルソースを使えません — デバッグするには Selected symbols に切り替えてください。バックテストを参照。
ポイントインタイムと生存者バイアス
各リバランスが参照できるのは、その日付までに実際に提出されていたレポートだけです。 2021 年 5 月 5 日のスクリーンは、4 月に終了したものの 6 月まで公表されなかった四半期を参照しません。例外は、提出日の記録がない期間で、その期末から採用されます。まれですが、その部分では多少の先読みが起こりうることを意味します。これが結果を誠実なものにしている一方で、バックテストの選定結果が、同じ日付を今日のデータでスクリーニングした結果と一致しない理由でもあります。
2 つの点は、シミュレーション上の日付ではなく今日の状態を反映しています。
- 接続済みブローカーのフィードでは、該当銘柄は現時点でブローカーで取引可能なシンボルに絞り込まれます。そのため、その後に上場廃止となった企業は、取引可能だったリバランスからも除外されます。QuantCraft(B2)のフィードでは、このチェックはスキップされます。
- キャッシュされたユニバースには、ファンダメンタルデータのコーパスがいまだに保持している企業しか含まれないため、ずっと前に上場廃止となった企業はまったく表示されません。
ポイントインタイムの正確さが適用されるのは、スクリーンが読み取る値であって、そこにどの企業が存在するかではありません。長期の結果についてはこの点を踏まえてください。
結果の解釈
履歴が不足していると、シンボルは不合格になります — 黙って合格することはありません。 5 四半期分のデータしかない企業に「Grew 8 in a row」を求めると、その企業は除外されます。合格させずに除外することで、結果セットが過大に報告されることはありません。
シンボルが一致ではなく除外される、その他のケース:
- % Change は、開始値がゼロの場合は計算できません。
- CAGR % は、両端の値が正である必要があります。
- Average over N は、ウィンドウ内に欠損値が 1 つでもあると失敗します — null はスキップされません。
- 企業が報告していないフィールドは、その企業を不合格にします。これは Financials Extended で特に重要です。
- ランキングフィルターは、ランク付け対象のフィールドに値がないシンボルを除外します。
ランキングの癖が 1 つあります。同値のものはパーセンタイルランクを共有しないため、同一の 2 つの値が Percentile rank ≥ のカットオフの両側に分かれることがあります。
バックエンドに接続できない場合は、遅くて黙ったフォールバックではなく、明確なエラーが表示されます。90 秒間無反応だった実行は、固まるのではなくエラーとして報告されます。
関連項目
- AutoTrading — Screener ターゲットスコープを含むバルクフォワード実行
- QuantCloud — Screener 駆動のバルクジョブを持つクラウドランナー
- バックテスト — スクリーンをバックテストのシンボルソースとして使う
- ファンダメンタルデータ — ストラテジーのコールバック内でファンダメンタルデータを読む方法と、フィールドリファレンス
- QuantCraft AI — AI にスクリーンを作成・実行させる
- Fama-French ファクター — 詳細ダイアログの Factor Exposure タブの背後にあるファクターデータ

