virtual-insanity
← 리포트 목록

윈도우 Bloomberg 뉴스 직접수집 진단·구축 지시서

2026-08-02 claude

윈도우 Bloomberg 뉴스 직접수집 진단·구축 지시서

0. 작업 의도

이 작업의 목적은 이메일 알림을 더 예쁘게 정리하는 것이 아니다. Bloomberg 원천에서 뉴스 전량과 본문을 먼저 확보하고, 해리 업무에 필요 없는 뉴스를 제거한 뒤, 남은 것만 요약하는 구조로 바꾸는 것이다.

해리가 원하는 결과:

  1. 이메일 20건 제한 없이 해당 기간 뉴스 전량 확인
  2. 지방채·거래량 색깔이 앞자리를 차지하기 전에 제거
  3. 헤드라인이 아니라 본문을 읽고 크레딧 영향을 요약
  4. 한국물, 실제 등급변경, 대형발행, 인수합병, 자본조달을 빠뜨리지 않음
  5. 지난주 잘린 약 307건을 가능하면 복구

기존 HIGRAD 메일 알림은 새 경로 검증 전까지 끄지 않는다. 직접수집이 실패했을 때의 비상 경로로 유지한다.

1. 지금 방식이 비효율적인 이유

확인한 자료: ~/knowledge-agent/200-projects/us-ig-weekly/260803_크레딧이슈.md

  • 받은 메일 26통, 헤드라인 187건, 중복 제거 후 181건
  • 하루 총정리 4통의 제목상 건수는 97·65·122·103건으로 합계 387건
  • 메일에는 각각 20건만 들어와 합계 80건만 보였고 약 307건은 확인하지 못함
  • 확인된 181건 중 미국 지방채 약 90건, 거래량 색깔 약 28건, 자동 상대가치 스크린 36건, 등급 유지·전망 안정 약 9건이 노이즈
  • 실제 매매·학습에 쓸 만한 것은 10개 사건 묶음 정도였음
  • 본문이 없어 등급 철회 사유, 자금조달 목적, 인수합병 영향 등을 다시 단말에서 확인해야 했음

현재 구조는 다음 세 단계에서 정보가 손실된다.

Bloomberg 검색 결과 전량
  → 이메일 생성 시 20건으로 절단
  → 지방채·색깔 뉴스가 상단 점유
  → 맥은 헤드라인만 받아 요약

바꿀 구조:

Windows Bloomberg 원천 수집
  → NSN 기준 원문 보관
  → 규칙 기반 노이즈 제거·사건 묶기
  → 본문 근거 요약
  → 해리용 일간·주간 결과만 전달

2. 현재 조사 결론 — 성공으로 포장하지 말 것

확인된 사실

  1. Bloomberg 공개 Core API 가이드가 열거한 서비스에는 일반적인 뉴스 검색·본문 서비스가 없다.
  2. 현재 열렸다고 실측된 서비스 중:
  3. //blp/srcref는 EID별 tick size, 브로커/조건코드, 거래상태 참조 서비스다. 뉴스가 아니다.
  4. //blp/pagedata는 GPGX 번호·모니터·페이지·행을 지정해 페이지 데이터를 구독하는 서비스다. 일반 NEWS 화면이나 저장 뉴스검색을 읽는 기능으로 확인되지 않았다.
  5. //blp/mktbar, //blp/tasvc, //blp/instruments도 뉴스 검색·본문 서비스가 아니다.
  6. Bloomberg 공식 최신 Windows C++ SDK 3.26.6.1의 배포 예제에도 뉴스 검색·본문 예제가 없다.
  7. //blp/apiflds에는 FieldSearchRequest가 있어 회사 단말의 필드 사전에서 news, story, headline, NSN을 검색할 수 있다.
  8. BLPAPI 서비스는 operation과 request/response schema를 런타임에 읽을 수 있다. 공개 문서에 없는 기능도 회사 단말이 실제 제공하는 스키마로 판정할 수 있다.

아직 확인되지 않은 것

  • BLPAPI로 HIGRAD와 같은 뉴스검색 결과 전량을 가져올 수 있는지
  • 뉴스 헤드라인에서 NSN과 본문을 모두 받을 수 있는지
  • 발행사·주제·등급변경·날짜 조건을 서버 요청에 넣을 수 있는지
  • 과거 기간을 지정해 7월 28~31일 뉴스 387건을 다시 받을 수 있는지
  • //blp/exrsvc가 뉴스와 관련 있는지

따라서 지금 판정은 “BLPAPI 뉴스 직접수집 가능성 미확인”이다. 아래 진단에서 실제 schema와 응답을 확보하기 전에는 NewsSearchRequest, NewsStoryRequest 같은 이름을 짐작해서 구현하지 않는다.

3. 1단계 — 회사 PC에서 기능을 확정하는 진단

news_capability_probe.py 하나를 먼저 만든다. 최종 수집기를 만들기 전 진단용이다.

3-1. 접속과 서비스 스키마 덤프

현재 스프레드 수집에 성공한 동일한 BLPAPI 접속 설정을 재사용한다. 다음 서비스의 operation, request definition, response definition을 텍스트로 저장한다.

//blp/refdata
//blp/mktdata
//blp/apiflds
//blp/srcref
//blp/pagedata
//blp/exrsvc

Python API에서 사용할 공식 introspection 경로:

for op in service.operations():
    print(op.name())
    print(op.description())
    print(op.requestDefinition())
    for response_schema in op.responseDefinitions():
        print(response_schema)

각 덤프에서 대소문자를 무시하고 다음 단어를 찾는다.

NEWS, STORY, HEADLINE, NSN, SEARCH, DATE, TOPIC, SOURCE, LANGUAGE

판정:

  • 검색·헤드라인·본문 operation이 실제로 있으면 그 정확한 이름과 요소만 사용
  • exrsvc에 관련 operation이 없으면 뉴스 경로에서 제외
  • pagedata는 NEWS 화면이라는 이유만으로 쓰지 않음. HIGRAD 결과가 실제 GPGX 페이지 번호로 제공되는 것이 확인될 때만 재검토

3-2. Bloomberg 필드 사전 검색

//blp/apiflds의 공식 FieldSearchRequest를 다음 검색어별로 실행한다.

service = session.getService("//blp/apiflds")
request = service.createRequest("FieldSearchRequest")
request.set("searchSpec", "news")  # story, headline, NSN도 각각 실행

각 결과에서 반드시 저장할 것:

  • field mnemonic
  • field ID
  • 설명
  • datatype
  • static/realtime 구분
  • reference data 적용 가능 여부
  • history 가능 여부가 응답 설명에 있다면 그 값

후보 이름을 미리 고정하지 않는다. apiflds가 실제 반환한 mnemonic만 FieldInfoRequest로 다시 조회한다.

3-3. 알려진 NSN으로 본문 시험

다음 네 건은 맥 자료에 NSN이 남아 있어 단말 화면과 API 응답을 대조할 수 있다.

TIUUO0KJH6V7  엔비디아 CDS 급등
TJ29WO33O5C0  US스틸 등급 철회
TIWF26KJH6V7  S&P글로벌 실적 미스
TJ09ZL33O5C0  Freeport LNG 전망 상향

스키마 또는 필드 사전에서 NSN/본문 요청 경로가 확인된 경우에만 요청한다.

검증 기준:

  • 헤드라인과 NSN 일치
  • 본문 글자 수 기록
  • 단말에서 연 기사와 첫 문단·마지막 문단 표본 일치
  • 단순 1~2줄 요약, 링크, “단말에서 확인” 문구만 오면 본문 확보 실패
  • 권한 오류, field not applicable, 빈 응답을 구분

3-4. 검색 조건 시험

검색 operation이 실제 schema에 존재하는 경우에만 아래 네 검색을 수행한다. 조건 문법은 스키마와 단말 도움말에서 확인한 값을 사용한다.

  1. 한국 발행사·한국물만
  2. 등급 상향·하향, 전망 변경, watch 변경만
  3. 신규 회사채 발행·가격 확정·수요·신규발행 프리미엄
  4. 인수합병·자본조달·대규모 투자·자산매각

각 검색에 대해 확인할 항목:

  • 날짜 시작·종료 조건 존재 여부
  • 발행사/증권 식별자 조건 존재 여부
  • topic/category/source/language 조건 존재 여부
  • 결과 상한
  • 20건을 넘는 결과가 오는지
  • pagination, continuation token 또는 PARTIAL_RESPONSE 존재 여부
  • 결과별 NSN, 게시시각, source, 관련 종목, headline 제공 여부

서버 검색이 없고 종목별 최근 뉴스 필드만 있으면 이를 HIGRAD 전량 대체로 포장하지 않는다. 보유·Axe 발행사 뉴스 보강용 제한 경로로 분류한다.

3-5. 과거 307건 복구 시험

날짜 범위 검색이 확인됐을 때만 다음 기간을 조회한다.

날짜 HIGRAD 제목상 총건수 이메일 확인 미확인
2026-07-28 97 20 77
2026-07-29 65 20 45
2026-07-30 122 20 102
2026-07-31 103 20 83

성공 기준:

  • 동일 검색조건·날짜대에서 일별 건수가 HIGRAD 제목상 건수와 대체로 일치
  • 20건 초과 결과가 실제로 수집됨
  • 모든 결과에 NSN 또는 안정적인 고유번호 존재
  • 본문 가능 건/불가능 건 수량 구분
  • 중복 제거 전·후 수량 모두 기록

검색 문법이나 권한 차이로 건수가 다르면 원인을 확인하기 전 복구 성공으로 쓰지 않는다. 날짜 검색이 없거나 상한이 20건이면 307건은 BLPAPI로 복구 못 함으로 보고한다.

4. 1단계 결과에 따른 판정

실측 결과 판정 다음 행동
검색+날짜+NSN+본문 모두 가능 직접 수집기 구축 아래 5~8절 그대로 구현
검색·날짜 가능, 본문 불가 헤드라인 전량 수집 가능 NSN별 본문 경로를 별도 확인. 본문 없는 자동요약 금지
종목별 최근 뉴스만 가능 부분 보강 PRTU·Sell Axe 발행사 모니터에만 사용. HIGRAD 대체 금지
20건 상한 또는 과거 검색 불가 절단 문제 미해결 이메일과 차이 없음. 지난 307건 복구 실패 표시
뉴스 관련 operation/field 없음 BLPAPI 뉴스 경로 없음 Bloomberg Help에 Desktop API 뉴스 접근·내보내기 가능 여부 문의. 단말 검색 화면의 공식 export 경로는 확인 후 별도 설계

5. 직접수집 가능할 때의 수집기 구조

파일명: bloomberg_credit_news.py

모듈

  1. capability.py: 서비스·operation·field manifest 검증
  2. search.py: 기간·검색조건별 헤드라인과 NSN 수집
  3. story.py: NSN별 본문 수집
  4. normalize.py: 시간·발행사·증권·topic 정규화
  5. filter.py: 노이즈 제거와 중요도 부여
  6. cluster.py: 같은 사건의 속보·업데이트·등급사 후속보도 묶기
  7. brief.py: 본문 근거 요약
  8. export.py: 원시자료·선별결과·해리용 요약 출력

실행 방식

  • Bloomberg 로그인과 Desktop API가 살아 있을 때만 실행
  • 시작 시 마지막 성공시각 이후를 먼저 백필
  • 과거 검색이 지원되면 10~15분 간격 증분수집
  • 과거 검색이 지원되지 않으면 PC가 꺼진 시간은 자동 복구할 수 없으므로 HIGRAD 메일을 비상 보완으로 유지
  • 동일 NSN은 한 번만 저장하되 수정·업데이트 시각이 있으면 revision 보존

6. 뉴스 선별 규칙

무조건 남길 것

  1. PRTU 보유·관심종목, Sell Axe 발행사 직접 뉴스
  2. 한국 발행사·한국 정부/공기업·한국계 금융기관의 외화채 뉴스
  3. 실제 등급 상향·하향, 전망 변경, watch 등재·해제, 등급 철회
  4. 대형 신규발행, 발행 취소·연기, 가격 확정, 수요, 신규발행 프리미엄
  5. 인수합병, LBO, 분할, 자산매각, 대규모 투자
  6. 채권 발행·차환·텐더·바이백·배당·자사주매입 등 자본조달과 채권자순위 변화

버릴 것

  1. 미국 지방정부·학교구·대학·병원·공항·수도공사 등 지방채 뉴스
  2. “평균 대비 거래량 2배” 같은 거래량 색깔
  3. 매일 반복되는 단순 스프레드 확대·축소 자동 스크린
  4. 등급 유지+전망 안정처럼 신용 판단이 바뀌지 않은 알림

예외: 보유·Sell Axe 발행사는 위 버림 규칙에 걸려도 별도 보유물건 모니터에 남긴다.

잠정 중요도

등급 조건 용도
A 보유·Axe 직접 이슈, 한국물, 실제 등급변경, 대형 M&A·자본조달 당일 해리 확인·본문 요약
B 대형발행·수요·NIC, 섹터 대표기업 실적·투자계획 주간 발표와 학습
C 배경 뉴스, 반복 업데이트 사건 묶음의 보조 근거
DROP 지방채, 거래량 색깔, 무변화 등급, 반복 스크린 저장은 원시층에만, 요약 제외

대형발행 금액 기준은 임의로 확정하지 않는다. 최근 US IG 주간 발행분포를 본 뒤 데스크 기준을 정한다. 그 전에는 금액 상위 10%와 10억달러 이상을 각각 표시만 하고 어느 하나를 공식 기준으로 쓰지 않는다.

7. 본문 요약 규칙

뉴스 한 건이 아니라 같은 사건을 하나로 묶어 다음 네 줄로 만든다.

[사실] 본문에서 확인된 사건과 숫자
[채권 영향] 레버리지·현금흐름·순위·공급·등급 중 무엇이 바뀌는지
[해리가 볼 것] 해당 채권 OAS, 신규발행 가격, 등급 트리거 등 다음 확인값
[근거] NSN, 게시시각, 원문 보유 여부

금지:

  • 헤드라인만 보고 본문 내용을 추정
  • 등급 철회 사유, 인수자금 조달, 스프레드 방향을 본문 근거 없이 단정
  • 지방채·거래량 색깔을 요약 앞부분에 배치
  • 한 사건의 속보와 업데이트를 여러 핵심 이슈처럼 중복 집계

GPT·Claude 요약은 규칙 필터와 본문 확보 후 실행한다. Bloomberg 본문을 외부 모델로 보내도 되는지는 회사 보안정책과 Bloomberg 계약을 먼저 확인한다. 확인 전에는 원문을 Windows 로컬에 두고, 모델에는 해리가 승인한 범위만 전달한다.

8. 저장 형식

원시층 news_raw_YYYYMMDD.jsonl

nsn, headline, body, body_status, provider, published_at, updated_at,
related_securities, issuers, topics, language,
query_name, service, request_type, collected_at,
entitlement_status, error_text

선별층 news_filtered_YYYYMMDD.jsonl

event_id, nsn_list, issuer, event_type, importance,
keep_reason, drop_reason, portfolio_match, axe_match, kp_flag,
headline, body_evidence, credit_impact, follow_up

해리용 Bloomberg_크레딧뉴스_YYYYMMDD.md

순서:

  1. 보유·Sell Axe 직접 이슈
  2. 한국물
  3. 등급변경
  4. 인수합병·자본조달
  5. 대형발행·수요
  6. 이번 주에 확인할 질문
  7. 수집 한계: 전체 수, 본문 성공 수, 권한·누락 수

원문 NSN은 항상 남긴다. 본문은 외부 공유 파일에 넣지 않고 Windows 내부 원시층에 보관한다.

9. 검증 조건

  1. 같은 기간 HIGRAD 메일보다 더 많은 헤드라인을 가져왔는지
  2. 한 쿼리에서 20건 초과 수집을 실제 확인했는지
  3. 알려진 NSN 4건 중 몇 건의 본문이 단말과 일치했는지
  4. 지방채와 거래량 색깔이 해리용 결과에서 0건인지
  5. 한국물·등급변경·대형발행·M&A·자본조달 표본을 사람이 확인했는지
  6. 같은 사건 중복이 하나로 묶였는지
  7. 권한 오류·본문 미지원·검색 상한을 정상 빈 결과와 구분했는지
  8. 7월 28~31일 387건/미확인 307건 복구 수량을 날짜별로 보고했는지

10. 보고 형식

다음 표로만 1차 진단 결과를 보고한다.

질문 실측 결과 근거 판정
BLPAPI 뉴스검색 가능 service/operation/schema 가능/불가/부분
본문 가능 NSN 4건 성공 수·글자수 가능/불가/부분
검색조건 가능 지원 조건과 결과 수 가능/불가/부분
과거뉴스 가능 7/28~7/31 날짜별 수 가능/불가/부분
20건 상한 해소 최대 수집 건수·pagination 해소/미해소
지난 307건 복구 복구 건수 복구/일부/실패

기능이 없거나 권한이 막히면 그 사실이 결과다. 다른 뉴스나 이메일을 대체물로 가져와 BLPAPI 성공처럼 보고하지 않는다.

공식 근거