2.1

🔶 Interactive Brokers 설정

Flex Query 및 자동 동기화

1. 개요

Interactive Brokers (IBKR)은 가장 포괄적인 연동 기능을 제공합니다.

✅ 절차:
1. Flex Query 생성
2. 각 연도별 Flex Query를 XML로 다운로드하여 가져오기
3. Flex Sync를 통해 업데이트 수신
⚠️ 중요:
Flex Sync는 최근 며칠간의 업데이트만 가져옵니다. XML 가져오기는 전체 거래 내역을 구축합니다. 내역이 없으면 시스템이 트레이드를 올바르게 분석할 수 없습니다(예: 옵션 전략, 캠페인, 환차익).

2. Flex Query란 무엇인가요?

Flex Query는 Interactive Brokers에서 제공하는 맞춤형 보고서입니다. 내보낼 데이터를 한 번 설정하면 해당 보고서를 수동 또는 자동으로 언제든지 불러올 수 있습니다.

장점:
• 모든 트레이드, 배당금, 포지션을 하나의 보고서로
• 자동 동기화 가능
• 최근 365일 데이터 이용 가능
• 수동 데이터 입력 불필요

단계별 안내

1

1단계: IBKR에서 Flex Query 생성

1. IBKR 로그인:
interactivebrokers.com에 접속하여 계정에 로그인하세요.

2. Flex Queries 열기:
다음 경로로 이동하세요: Performance & Reports → Flex Queries

3. 올바른 쿼리 유형 선택:
Flex Queries 페이지에는 두 가지 쿼리 유형이 위아래로 나열됩니다. 올바른 것은 첫 번째 유형뿐입니다:
✅ Activity Flex Query
이것이 올바른 유형입니다. 이 패널의 오른쪽 위에 있는 ➕를 클릭 → "Create".
❌ Trade Confirmation Flex Query
이 유형은 사용하지 마세요! 거래 확인서(Trade Confirmations)만 포함되어 있어 sTraderZ.com이 데이터를 전혀 읽을 수 없습니다 — 가져오기 결과가 완전히 비어 있게 됩니다.
아직 쿼리를 만들지 않았다면 Activity Flex Query 패널에는 템플릿이 없다는 안내만 표시됩니다. 그래도 ➕는 있습니다 — 해당 패널의 오른쪽 위 모서리에 있습니다.

ℹ️ "Configure with AI" 버튼은 필요하지 않습니다 — 아래의 2단계와 3단계만 따라 하시면 됩니다. 모든 설정이 그대로 나와 있습니다.
2

2단계: Flex Query 설정

Query Name: 원하는 이름을 쓰시면 됩니다(예: "SingularityTrader").

그런 다음 Delivery Configuration과 General Configuration을 정확히 다음과 같이 설정하세요:
0 / 11개 설정 완료
3

3단계: 보고서 섹션 선택

섹션 이름은 영어로 표기했습니다. IBKR 포털이 다른 언어로 설정되어 있으면 해당 언어로 번역되어 표시됩니다.

Flex Query에서 다음 섹션을 모두 활성화하세요. 아래 목록은 체크하며 진행하기 위한 것입니다 — 페이지를 새로고침해도 진행 상황은 저장됩니다.
0 / 20개 섹션 활성화
⚠️ 필드와 유형 옵션의 결정적인 차이

필드(각 섹션 안의 번호가 매겨진 목록): 항상 "Select All"을 사용하세요 — 많을수록 좋습니다. 필드 누락은 가져오기 오류의 가장 흔한 원인입니다.

유형 옵션(섹션 상단의 "Options:" 줄): 여기서는 반대입니다 — 상세 수준을 하나만, 위에 명시된 것만 선택하세요. 추가 수준("Summary", "Orders", "Symbol Summary", "Lots")은 같은 이벤트를 다른 행에서 한 번 더 기술합니다. sTraderZ.com은 상세 수준을 평가하지 않고 모든 행을 처리하므로, 여러 수준을 선택하면 트레이드·수수료·포지션이 중복 계산될 수 있습니다. 예외: Trades 섹션의 "Closed Lots"와 "Wash Sales"는 단순히 중복일 뿐 아니라 반드시 꺼야 합니다.
4

4단계: Query 저장

"Continue"를 클릭한 후 "Create"를 클릭하세요.

생성 후 목록에서 Query를 확인하실 수 있습니다. Query ID를 메모해 두세요 — 곧 필요합니다.
5

5단계: Flex Query 토큰 생성

자동 조회를 위해서는 액세스 키가 필요합니다. IBKR은 이를 토큰이라고 부르며, sTraderZ.com에서는 나중에 Flex Token으로 입력하게 됩니다.

1. Flex Web Service 열기:
Flex Queries 페이지에서 맨 아래로 스크롤하여 "Flex Web Service Configuration" 블록으로 이동한 뒤 "Configure"(⚙️)를 클릭하세요.

2. 서비스 활성화:
"Configure Flex Web Service" 페이지에서 Flex Web Service statusenabled여야 합니다. 꺼져 있으면 sTraderZ.com이 쿼리를 조회할 수 없습니다 — IBKR이 요청을 거부합니다.

3. 토큰 생성:
"Generate New Token" 섹션에서:
0 / 3개 설정 완료
⚠️ 토큰은 단 한 번만 표시됩니다
즉시 복사하여 안전하게 보관하세요. 분실하면 새로 생성해야 하며, 새 토큰을 만들면 기존 토큰은 즉시 무효화됩니다. 기존 토큰을 사용하는 동기화는 그 시점부터 실패합니다.

토큰의 유효 기간은 1년입니다. 만료 후에는 새로 생성하여 계정 구성에 저장하세요.
6

6단계: 전체 연도 XML 내보내기

거래 내역의 각 연도에 대해 Flex Query를 XML로 내보내세요:

1. Flex Query 열기:
IBKR에서: Performance & Reports → Flex Queries

2. 기간 조정:
Query를 편집하여 기간을 한 달력 연도로 설정하세요(예: 01.01.2023 - 31.12.2023)

3. Query 실행:
"Run"을 클릭하고 XML 파일을 다운로드하세요

4. 각 연도 반복:
IBKR에서 트레이드한 모든 연도에 대해 2~3단계를 반복하세요(예: 2021, 2022, 2023, 2024).
7

7단계: 내역 XML 가져오기

다운로드한 모든 XML 파일을 Singularity Trader에 가져오세요:

1. 가져오기 섹션 열기:
계정 → IBKR 계정 → 설정 → "XML 업로드"로 이동

2. 가장 오래된 연도부터 시작:
가장 오래된 XML 파일(예: 2021)부터 시작하여 시간순으로 진행

3. 모든 연도 가져오기:
현재 연도까지 모든 XML 파일을 순서대로 가져오세요

⚠️ 중요: 이 단계는 필수입니다! 전체 내역 없이는 옵션 전략, 트레이드 캠페인 및 환차익을 올바르게 계산할 수 없습니다.
8

8단계: Singularity Trader에서 설정

1. 계정 구성 열기:
계정 → IBKR 계정 → 구성으로 이동하세요

2. Flex Query 데이터 입력:
Flex Query ID: IBKR의 7자리 쿼리 ID(쿼리 개요 페이지에 표시됨, 예: 1570627)
Flex Token: 5단계에서 생성한 토큰

3. 저장 및 테스트:
"저장"을 클릭한 다음 "지금 동기화"를 클릭하여 테스트하세요.

자동 동기화

설정이 완료되면 트레이드가 매일 자동으로 동기화됩니다. 추가 작업이 필요하지 않습니다!

동기화 시 수행 작업:
• 새 트레이드 가져오기
• 포지션 업데이트
• 배당금 기록
• 옵션 전략 인식
• 환차익 계산(FIFO)

최신 데이터를 즉시 원하시면 언제든지 수동으로 동기화할 수 있습니다.

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. 결과 확인
• 대시보드 새로고침 — ⚠️ 뱃지가 사라져야 합니다

⚠️가 계속 표시되는 경우: 개설 트레이드가 더 이전에 있습니다 → 더 이른 시작일로 다시 실행하세요.

18. ✅ 최종 점검: 완성된 쿼리의 모습

저장하면 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 ConfigurationGeneral 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단계에서 토큰과 함께 필요합니다.