2.2

🔶 Interactive Brokers の設定

Flex Queryと自動同期

1. 概要

Interactive Brokers(IBKR)は最も包括的な連携を提供しています。

IBKRの連携概要

2. Flex Queryとは何か?

Flex Queryは Interactive Brokers のカスタマイズ可能なレポートです。エクスポートしたいデータを一度定義すれば、いつでもレポートを取得できます — 手動でも自動でも。

ステップバイステップガイド

1

ステップ1:IBKRでFlex Queryを作成する

1. IBKRにログイン:
interactivebrokers.com にアクセスし、ご自身のアカウントにログインします。

2. Flex Queriesを開く:
次のメニューへ進みます:Performance & Reports → Flex Queries

3. 正しいクエリタイプを選ぶ:
Flex Queriesのページには2種類のクエリタイプが上下に並んで表示されます。正しいのは最初の1つだけです:
✅ Activity Flex Query (IBKRポータルの言語設定が異なる場合、この名称は翻訳されて表示されます)
こちらが正解です。このパネル右上の ➕ → "Create" をクリックします。
❌ Trade Confirmation Flex Query (IBKRポータルの言語設定が異なる場合、この名称は翻訳されて表示されます)
こちらは使わないでください。取引確認書しか含まれておらず、sTraderZ.com はそこからデータを読み取れません — インポート結果は完全に空になります。
まだクエリを1つも作成していない間は、Activity Flex Query のパネルにはテンプレートがない旨の注記だけが表示されます。➕ はそれでも存在します — そのパネルの右上隅です。

ℹ️「Configure with AI」ボタンは不要です — 下のステップ2と3に従うだけで、必要な設定はすべて揃います。
2

ステップ2:Flex Queryを設定する

クエリ名:任意の名前で構いません。例:「SingularityTrader」。

続いて Delivery Configuration と General Configuration を、以下のとおり正確に設定します:
0 / 11 項目 設定済み
3

ステップ3:レポートセクションを選択する

セクション名は英語で記載しています。IBKRポータルの言語設定が異なる場合、表示名は翻訳されます。

Flex Queryで以下のすべてのセクションを有効にしてください。このリストはチェックを付けながら進めるためのもので、ページを再読み込みしても進捗は保存されます。
0 / 20 セクション有効
⚠️ フィールドとタイプオプションの決定的な違い

フィールド(各セクション内の番号付きリスト):常に "Select All" を使ってください — 多ければ多いほど良いです。フィールドの不足はインポートエラーの最も多い原因です。

タイプオプション(セクション冒頭の "Options:" の行):こちらは逆です — 詳細レベルは1つだけ、上記で指定されたものだけを選びます。追加のレベル("Summary"、"Orders"、"Symbol Summary"、"Lots")は、同じ出来事を別の行でもう一度記述するものです。sTraderZ.com は詳細レベルを判別せず、すべての行を処理します — そのため複数のレベルを選ぶとトレード・手数料・ポジションの二重計上につながります。例外:Trades セクションの "Closed Lots" と "Wash Sales" は単に冗長なだけでなく、必ずオフにしなければなりません。
4

ステップ4:クエリを保存する

「続ける」をクリックし、「作成」をクリックします。

作成後、リストにクエリが表示されます。Query IDを控えておいてください。
5

ステップ5:Flex Queryトークンを生成する

自動取得にはアクセスキーが必要です。IBKRではこれをトークン(Token)と呼びます — sTraderZ.com では後ほど Flex Token として入力します。

1. Flex Web Service を開く:
Flex Queries のページを一番下までスクロールし、"Flex Web Service Configuration" のブロックで "Configure"(⚙️)をクリックします。

2. サービスを有効化する:
"Configure Flex Web Service" のページで、Flex Web Service status が有効(enabled)になっている必要があります。オフのままだと sTraderZ.com はクエリを取得できません — IBKR がリクエストを拒否します。

3. トークンを生成する:
"Generate New Token" のセクションで:
0 / 3 項目 設定済み
⚠️ トークンは一度しか表示されません
すぐにコピーして安全に保管してください。紛失した場合は新しいトークンを生成する必要があり、そうすると古いトークンは即座に無効になります。古いトークンを使い続けている同期は、その時点から失敗します。

トークンの有効期間は1年です。期限が切れたら新しいトークンを生成し、アカウント設定に保存してください。
6

ステップ6:全年度のXMLエクスポート

取引履歴の各年のFlex QueryをXMLとしてエクスポートします:

1. Flex Queryを開く:
IBKRで:パフォーマンス & レポート → Flex Queries。
7

ステップ7:過去履歴のXMLインポート

ダウンロードしたすべてのXMLファイルを Singularity Trader にインポートします:

1. インポートセクションを開く:
口座 → あなたのIBKR口座 → 設定に移動。
8

ステップ8:Singularity Traderで設定する

1. アカウント設定を開く:
「アカウント」→ ご自身のIBKRアカウント → 「設定」へ進みます

2. Flex Queryのデータを入力する:
• Flex Query ID:IBKRの7桁のクエリID(クエリ一覧に表示されます。例:1570627)
• Flex Token:ステップ5で生成したトークン

3. 保存してテストする:
「保存」をクリックし、続いて「今すぐ同期」でテストします。
✨

自動同期

セットアップが完了すると、トレードが毎日自動的に同期されます。追加操作は不要です!

同期中に行われること:すべての新しいトレードの取り込み、ポジションの更新、損益の計算。

12. 一時的なエラーの自動リトライ

IBKRのFlex取得は、さまざまな理由で一時的に失敗することがあります(例:IBKRの短時間のサーバーエラー、ネットワークタイムアウト、クエリが処理中など)。Singularity Traderにはこのための自動リトライキューがあります:

• 同期が失敗した場合、最大3回自動的にリトライされます(指数バックオフ)。
• すべての試行が失敗した場合のみ、システムログにCRITICALエントリーが記録され、通知が届きます。
• 一時的な問題は通常、手動で介入しなくても自然に解決されます。

現在の同期ステータスはアカウントエリアで確認できます — 緑=最後の同期成功、黄=リトライ中、赤=3回の試行後に失敗。

13. 代替方法:手動XMLインポート

自動同期を希望しない場合は、Flex Queryを手動でエクスポートできます:

1. IBKRで:Flex Queries → クエリの横の「Run」
2. ダウンロード:XMLファイルを保存
3. アップロード:Singularity Trader → アカウント → 設定 → 「XMLをアップロード」

この方法は、Flex Syncが1年分しか遡れないため、古いデータ(365日超)にも必要です。

14. IBKRでインポートされるデータ

完全サポート:
• 株式トレード(買い/売り)
• オプショントレード(Greeks含む)
• 先物・Forex
• 配当(総額、純額、源泉税)
• 利息(受取/支払)
• オプション行使・割り当て
• 株式分割・合併
• 通貨FIFOのStatement of Funds

自動認識:
• オプション戦略(スプレッド、Iron Condorなど)
• カバードコール / Cash-Secured Put
• トレードキャンペーン
• §23 EStGに基づく通貨差益

15. 📥 TradingLogbookからのデータ?タグも持ち込めます。

📥 TradingLogbookからお移りですか?

管理している戦略をタグとして、既にインポートされたトレードに引き継ぐことができます — シンボル+開始日があれば十分です。3分で完了します。

3ステップ移行へ

⚠️ トラブルシューティング

「トークンの有効期限切れ」:
IBKRで新しいトークンを生成し、設定に入力してください。

「クエリが見つかりません」:
Query IDが正しく、クエリがアクティブであることを確認してください。

「データなし」:
クエリで必要なすべてのセクションが有効になっていることを確認してください。

「インポートエラー」:
詳細はインポートログを確認してください。よくある原因:クエリのフィールド不足。

⚠️ 不足している過去のトレードを再読み込みする(ポジションの⚠️バッジ)

問題:
ダッシュボードやポジションリストで、ポジションのアカウント名の横に⚠️シンボルが表示されます。ツールチップには「取引データが不足しています — このポジションに対してトランザクションがインポートされていません。そのため、戦略を自動的に認識できません。」と表示されます。

原因:
ポジション自体はIBKRのポートフォリオスナップショットで把握していますが、開設トレードがこれまでにインポートした最も古い取引日より前にあります。これは、最初のFlex Sync前に数ヶ月または数年前に開設されたLEAPS(長期オプション)によく見られます。

✅ 解決策:
既存のFlex Queryで過去の期間を指定したアドホックエクスポートを一度実行し、XMLとしてダウンロードしてXMLインポートでアップロードします。新しいFlex Queryを作成する必要はありません!
ステップごとの手順:
1. IBKRで過去のエクスポートを実行
• 既存のFlex Queryを探す → Runをクリック
• 期間をCustom Date Rangeに変更
• 開始:必要なだけ遡る(例:01.01.2024)
• 終了:既にインポートした最も古いトレードの前日
• 形式:XML → Runを確認

2. XMLファイルをダウンロードしてローカルに保存

3. Singularity Traderにアップロード
• アカウント → IBKRアカウント → 「IBKRを設定」 → XMLインポート

4. インポート時の処理
• 新しいトレードのみインポートされます(重複なし)
• 戦略、キャンペーン、トレードサイクルが再計算されます

5. 結果を確認
• ダッシュボードを再読み込み — ⚠️バッジが消えているはずです

⚠️が残る場合:開設トレードがさらに前にあります → より早い開始日で再度実行してください。

⚠️ Verkaufte Position ohne Anschaffungskosten, nach Übertrag zwischen zwei eigenen IB-Konten

Das Problem:
Du hast bei Interactive Brokers mehrere eigene Konten (z. B. ein Hauptkonto und ein separat angelegtes zweites Individual-Konto — nicht zu verwechseln mit dem automatisch erkannten Unterkonto aus einer gemeinsamen Flex Query). Eine Position — typisch bei einer Optionsandienung/-zuteilung (Assignment) — wurde ursprünglich in einem der beiden Konten aufgebaut, taucht aber irgendwann im anderen Konto auf und wird von dort verkauft. Im Steuerreport erscheint diese Position bei „Nicht abgedeckte Veräußerungen" (uncovered sales) mit der Fußnote „°" — Legende: „Mit ° gekennzeichnete Positionen haben keinen Depotübertrag als Ursache." Es fehlen also jegliche Anschaffungskosten, obwohl du die Position nachweislich selbst erworben hast.

So erkennst du den Fall sicher — Checkliste:
  1. Öffne im Quellkonto (dort, wo die Position ursprünglich entstand) die Trade-Historie und suche nach dem betroffenen Symbol. Bei einer Optionszuteilung findest du dort eine Buchung mit Kaufkurs und Datum — sie ist vorhanden.
  2. Öffne im Zielkonto (dort, wo verkauft wurde) den Reiter „Transfers" der Konto-Detailseite. Erwartest du dort einen Eingang für dieses Symbol, findest du gar keine Zeile — nicht mal eine mit ungeklärter Herkunft (die gäbe es im Reiter zu sehen und du könntest ihr wie im vorigen FAQ-Eintrag ein Herkunftskonto zuweisen).
  3. Im Steuerreport steht die verkaufte Position unter „Nicht abgedeckte Veräußerungen" mit der Fußnote °.
Treffen alle drei Punkte zu, liegt exakt dieser Sonderfall vor.

ℹ️ Die Ursache liegt bei IBKR, nicht in sTraderZ.com
sTraderZ.com erkennt Positionsüberträge zwischen zwei Konten automatisch, sobald IBKR sie in der Flex Query als Transaktion mitliefert — siehe den FAQ-Eintrag zum regulären Positionsübertrag. Bei zwei eigenständig gehaltenen Individual-Konten (keine formale Master-/Sub-Struktur bei IBKR) meldet IBKR eine interne Umbuchung zwischen ihnen aber manchmal an keiner Stelle als Transaktion — nicht als Trade, nicht als Transfer und auch nicht im „Statement of Funds" (Kapitalflussrechnung), also selbst im vollständigsten Report, den IBKR liefert. Für sTraderZ.com — wie für jede Auswertungssoftware, die auf die offiziellen IBKR-Datenexporte angewiesen ist — gibt es dann schlicht keine Quelle, aus der sich die Anschaffungskosten automatisch übernehmen ließen. Das lässt sich softwareseitig nicht nachbessern, weil in den Rohdaten nichts steht, das man auswerten könnte.
Was du tun kannst — trage die Anschaffungskosten selbst nach:
Dafür brauchst du keinen Support-Kontakt. Auf der Konto-Detailseite gibt es genau für diesen Fall die Funktion „Manuellen Depotübertrag hinzufügen" (Karte „Depot-Überträge").
  1. Ermittle im Quellkonto (Trade-Historie) die genauen Zugangs-Buchungen: Datum, Stückzahl und Kaufkurs je Zuteilung. Wurden mehrere Zuteilungen zu unterschiedlichen Kursen/Terminen verkauft, trägst du jede Zuteilung als eigene Zeile ein — nicht als eine Zeile mit Durchschnittskurs, sonst stimmt die FIFO-Reihenfolge bei künftigen Teilverkäufen nicht mehr.
  2. Öffne im Zielkonto (dort, wo verkauft wurde) die Konto-Detailseite → Karte „Depot-Überträge" → „Manuellen Depotübertrag hinzufügen".
  3. Fülle je Zuteilung aus: Symbol, Stückzahl, Anschaffungsdatum (das echte Datum der Zuteilung im Quellkonto, nicht das Übertragsdatum), Anschaffungskosten (Gesamtbetrag dieser Zeile, nicht der Kurs pro Stück — die Plattform rechnet daraus automatisch den Stückkurs), Übertragsdatum (an dem die Position im Zielkonto auftauchte bzw. verkauft wurde) und — falls in der Dropdown-Liste vorhanden — dein Quellkonto als Herkunftskonto.
  4. Speichern. Die Position fließt danach steuerneutral ins FIFO des Zielkontos ein, mit korrektem Anschaffungsdatum und -kurs — dein Steuerreport rechnet ab sofort richtig.
💡 So beugst du künftig vor
Verzichte, wo möglich, auf interne Umbuchungen einer Position zwischen zwei separat gehaltenen IB-Konten. Nutze stattdessen entweder ein einziges Konto für zusammengehörige Strategien, oder — falls du bewusst mehrere Konten trennen willst — richte bei IBKR eine formale Family-/Advisor-Kontostruktur ein, bei der interne Bewegungen regulär als Transfer gemeldet werden (siehe FAQ-Eintrag oben).

19. ✅ 最終チェック:完成したクエリはこうなります

保存すると、IBKRは概要ページ("Review your Activity Flex Query")を表示します。以下のリファレンスと見比べてください — すべてが正しく設定されていれば、あなたのクエリはこのようになっているはずです。
セクションタイプオプション("Options:" の行)
Interest Accruals—
Cash Transactionsすべてのサブタイプ(Dividends, Payment In Lieu Of Dividends, Withholding Tax, Deposits & Withdrawals, Broker/Bond Interest, Other Fees, Other Income …)+ Detail
CFD Charges—
Cash Report—
Incoming/Outgoing Trade TransfersTrade Transfers
Forex P/L DetailsTransaction
Grant Activity—
Financial Instrument Information—
Statement of FundsBase Currency Summary, Currency Breakout, Include Starting and Ending Balances
Corporate ActionsDetail
Account Information—
Net Asset Value (NAV) in Base—
Open PositionsSummary ("Lots" なし)
Open Dividend Accruals—
Option Exercises, Assignments and Expirations— (最も忘れられやすいセクション!)
Prior Period Positions—
TradesExecution のみ — "Closed Lots" なし、"Wash Sales" なし、"Orders"/"Asset Class"/"Symbol Summary" なし
Transaction FeesExecution のみ ("Summary" は追加しない)
TransfersTransfer ("Lots" なし)
Change in Dividend AccrualsDetail ("Summary" は追加しない)

Delivery Configuration と General Configuration:

設定項目値
Accountsご自身のアカウントID(例:U1234567)
FormatXML
PeriodLast 30 Calendar Days
Profit and LossDefault
Include Offsetting Trade/Cancel Pairs?No
Include Currency Rates?No
Include Audit Trail Fields?No
Display Account Alias in Place of Account ID?No
Breakout by Day?No
Date FormatyyyyMMdd
Time FormatHHmmss
Date/Time Separator; (semi-colon)
💡 Query ID を控えておきましょう
同じ概要ページの上部に Query ID(7桁の数字。例:1570627)が表示されています。ステップ8でトークンと一緒に必要になります。