Skip to content

ev3rlit/mwosa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mwosa

AI야, 그래서 뭐 사?

mwosa는 여러 금융 데이터 provider 를 하나의 명령어 인터페이스로 다루기 위한 투자 리서치 CLI입니다. 주식, ETF, 지수, 거시 지표, 뉴스, 포트폴리오 데이터를 수집, 조회, 계산하고, 사람과 AI 에이전트가 투자 리서치에 사용할 수 있는 형태로 제공합니다.

종목 추천이나 자동매매 도구가 아니라, 판단에 필요한 데이터를 일관된 CLI와 구조화 출력으로 제공하는 것을 목표로 합니다.

목표

  • 여러 provider API를 하나의 CLI로 사용
  • 주식, ETF, 지수, 거시 지표, 뉴스, 포트폴리오 데이터 조회
  • AI 에이전트가 읽기 좋은 JSON 출력 지원
  • 리서치, 비교, 스크리닝, 계산, 기록을 하나의 명령 체계로 통합

최소 사용 조건

mwosa 로 실제 시장 데이터를 조회하려면 최소 1개 이상의 provider 가 활성화되어 있어야 한다.

help, version, config, list providers 같은 로컬 명령은 provider 없이도 실행할 수 있다. 하지만 inspect, get, ensure, sync, screen, compare, calc 처럼 시장 데이터가 필요한 명령은 해당 capability 를 제공하는 provider 가 필요하다.

CLI help 초안

mwosa 는 장기적으로 아래와 같은 verb-first 명령 체계를 가진다.

mwosa <verb> [resource] [target] [flags]

예를 들어 inspect AAPL, get quote 005930, search instruments 반도체, compare symbols AAPL MSFT 처럼 먼저 동사를 쓰고, 그 다음에 대상을 적는다.

이 목록은 구현 순서가 아니라, 장기적으로 mwosa --help 에서 제공할 명령어 표면을 정리한 것이다.

명령어 압축 원칙

mwosa 는 명령어 수를 무작정 늘리기보다, 적은 수의 verb 를 넓은 resource 에 적용하는 방식을 우선한다.

verb 역할
inspect 선택한 대상을 한눈에 볼 수 있게 상세 정보를 출력한다.
list 저장되어 있거나 지원 가능한 대상의 목록을 출력한다.
search 키워드로 종목, 뉴스, 공시, 지표를 찾는다.
get provider 또는 로컬 저장소에서 원천 데이터를 조회한다.
ensure 필요한 데이터가 없으면 가져와서 저장한다.
sync provider 기준으로 메타데이터나 묶음 데이터를 갱신한다.
calc 가격과 재무 데이터를 바탕으로 계산값을 만든다.
screen 조건에 맞는 후보를 걸러낸다.
compare 여러 대상을 같은 기준으로 비교한다.
record 거래, 가설, 메모 같은 사용자 기록을 남긴다.
create 포트폴리오, universe, 전략, 알림 같은 리소스를 만든다.
update 기존 리소스의 속성을 수정한다.
delete 저장된 리소스나 데이터를 삭제한다.
validate 설정, 전략, 출력, 데이터 정합성을 검사한다.

가장 중요한 축은 inspect 다. inspect 는 "이 대상이 지금 어떤 상태인지 자세히 보여줘" 라는 의미로 사용한다.

mwosa inspect <symbol...>
mwosa inspect --stdin
mwosa inspect instrument <symbol...>
mwosa inspect instrument --stdin
mwosa inspect portfolio <name>
mwosa inspect provider <name>
mwosa inspect tool <name>

mwosa inspect <symbol...> 은 짧은 기본형이고, mwosa inspect instrument <symbol...> 은 명시형이다. 두 명령은 같은 결과를 반환한다.

여러 종목을 한 번에 볼 때는 공백으로 symbol 을 나열한다. 다른 명령의 출력이나 AI agent 가 만든 symbol 목록을 넘길 때는 --stdin 을 사용한다.

공통 옵션

옵션 설명
-o, --output <format> 출력 형식을 선택한다. 지원 형식은 table, json, ndjson, csv 다. 기본값은 table 이다.
--provider <name> 특정 provider 를 명시해서 조회한다. 호환 provider 는 provider compatibility guide를 참고한다.
--prefer-provider <name> 가능한 경우 특정 provider 를 우선 사용한다.
--market <market> 조회 시장을 제한한다. 예: krx, nasdaq, nyse
--currency <code> 출력 통화 기준을 지정한다. 예: KRW, USD
--from <date> 조회 시작일을 지정한다.
--to <date> 조회 종료일을 지정한다.
--as-of <date> 특정 기준일의 스냅샷을 조회한다.
--cache-only 외부 API 호출 없이 로컬 캐시만 사용한다.
--refresh 로컬 캐시가 있어도 provider 에서 새로 가져온다.
--explain 계산값, 필터 통과 이유, provider 선택 이유를 함께 출력한다.
--quiet 사람이 읽는 설명을 줄이고 결과만 출력한다.
--verbose provider 호출, 캐시 적중 여부, 계산 과정 등 진단 정보를 더 보여준다.

기본 명령

명령어 설명
mwosa help 전체 도움말을 출력한다.
mwosa help <command> 특정 명령어의 사용법과 옵션을 출력한다.
mwosa version CLI 버전, schema 버전, 빌드 정보를 출력한다.
mwosa completion <shell> zsh, bash, fish 같은 shell 자동완성 스크립트를 출력한다.

Inspect

명령어 설명
mwosa inspect <symbol...> 하나 이상의 종목, ETF, 지수 같은 투자 대상의 현재 상세 정보를 한 화면에 요약한다.
mwosa inspect --stdin 표준 입력으로 받은 symbol 목록을 inspect 한다.
mwosa inspect instrument <symbol...> inspect <symbol...> 과 같은 명시형 명령이다.
mwosa inspect instrument --stdin 표준 입력으로 받은 symbol 목록을 instrument 로 명시해 inspect 한다.
mwosa inspect provider <name> provider 가 지원하는 시장, 자산군, 데이터 종류, 제한사항을 자세히 출력한다.
mwosa inspect market <market> 시장의 거래 시간, 통화, 지원 provider, 주요 지수를 출력한다.
mwosa inspect exchange <exchange> 거래소의 기본 정보, 시간대, 휴장일, 지원 데이터 범위를 출력한다.
mwosa inspect universe <name> universe 에 포함된 종목과 주요 통계를 출력한다.
mwosa inspect portfolio <name> 포트폴리오의 보유 종목, 비중, 평가금액, 리스크를 출력한다.
mwosa inspect strategy <name> 전략의 조건, 필요한 데이터, 최근 실행 결과를 출력한다.
mwosa inspect trade <trade-id> 특정 거래의 진입, 청산, 손익, 메모를 출력한다.
mwosa inspect alert <alert-id> 알림 조건, 상태, 마지막 평가 결과를 출력한다.
mwosa inspect tool <name> agent tool 의 입력 schema, 출력 schema, 예시를 출력한다.
mwosa inspect schema <resource> 특정 리소스의 JSON schema 와 필드 의미를 출력한다.
mwosa inspect coverage <symbol> 로컬에 저장된 데이터 범위와 누락 구간을 출력한다.
mwosa inspect storage 로컬 데이터 저장소의 크기, record type, 기간 범위를 요약한다.
mwosa inspect config 현재 적용된 설정과 설정 파일 경로를 출력한다.
mwosa inspect auth provider 별 인증 상태를 요약한다.

List

list 는 "어떤 것들이 있는지"를 확인할 때 사용한다. 상세 정보가 필요하면 같은 대상을 inspect 로 본다.

명령어 설명
mwosa list providers 사용 가능한 provider 목록과 활성화 상태를 출력한다.
mwosa list provider-capabilities quote, candles, news, fundamentals 등 기능별 지원 provider 를 출력한다.
mwosa list markets 지원하는 시장 목록을 출력한다.
mwosa list exchanges 지원하는 거래소 목록을 출력한다.
mwosa list asset-types stock, etf, etn, fund, crypto, index 같은 자산 유형을 출력한다.
mwosa list universes 저장된 종목 universe 목록을 출력한다.
mwosa list portfolios 저장된 포트폴리오 목록을 출력한다.
mwosa list strategies 저장된 전략 목록을 출력한다.
mwosa list trades 저장된 거래 목록을 조건별로 출력한다.
mwosa list alerts 등록된 알림 목록을 출력한다.
mwosa list tools agent tool 로 노출 가능한 명령어 목록을 출력한다.

Search

명령어 설명
mwosa search instruments <query> 종목명, 티커, ISIN, 키워드로 투자 대상을 검색한다.
mwosa search news <query> 키워드로 시장 뉴스와 종목 뉴스를 검색한다.
mwosa search filings <query> 공시, 사업보고서, 10-K, 10-Q 같은 filing 자료를 검색한다.
mwosa search indicators <query> 금리, 환율, 물가, 고용 같은 거시 지표 이름을 검색한다.
mwosa resolve symbol <query> 사용자 입력을 canonical symbol 로 해석한다.

Get

get 은 현재가, OHLCV, 재무제표, 뉴스처럼 원천 데이터에 가까운 값을 조회한다. 조회 결과가 없을 때 자동 수집까지 보장해야 한다면 ensure 를 사용한다.

명령어 설명
mwosa get quote <symbol> 현재가 또는 최신 quote snapshot 을 조회한다.
mwosa get candles <symbol> 일봉, 주봉, 월봉, 분봉 같은 OHLCV 시계열을 조회한다.
mwosa get daily <symbol> 일별 OHLCV 데이터를 간단히 조회한다.
mwosa get orderbook <symbol> 호가 잔량과 매수/매도 호가를 조회한다.
mwosa get trades <symbol> 최근 체결 내역을 조회한다.
mwosa get fundamentals <symbol> 시가총액, PER, PBR, EPS 등 기본 지표를 조회한다.
mwosa get financials <symbol> 손익계산서, 재무상태표, 현금흐름표를 조회한다.
mwosa get earnings <symbol> 실적 발표일, 예상치, 실제 발표값을 조회한다.
mwosa get dividends <symbol> 배당 내역과 배당 수익률을 조회한다.
mwosa get splits <symbol> 액면분할, 병합 등 split 이벤트를 조회한다.
mwosa get filings <symbol> 공시, 사업보고서, 10-K, 10-Q 같은 filing 자료를 조회한다.
mwosa get news <symbol> 종목 관련 뉴스를 조회한다.
mwosa get macro <indicator> 금리, 환율, 물가, 고용 같은 거시 지표를 조회한다.
mwosa get fx <pair> 환율 데이터를 조회한다. 예: USD-KRW
mwosa get index <symbol> 지수 데이터를 조회한다. 예: KOSPI, SPY, QQQ

데이터 확보와 저장소

명령어 설명
mwosa ensure quote <symbol> 최신 quote 가 없으면 provider 에서 받아 저장한다.
mwosa ensure candles <symbol> 요청 범위의 candle 데이터가 없으면 부족한 구간만 받아 저장한다.
mwosa sync instrument <symbol> 종목 메타데이터를 provider 기준으로 갱신한다.
mwosa sync universe <name> universe 에 포함된 종목의 주요 데이터를 일괄 갱신한다.
mwosa backfill candles <symbol> 과거 시계열 데이터를 지정한 범위만큼 채운다.
mwosa verify data <symbol> 저장된 데이터의 중복, 누락, 날짜 정합성을 검사한다.
mwosa reindex data 로컬 파일을 다시 스캔해 검색/coverage 인덱스를 재구축한다.
mwosa prune cache 오래된 캐시나 임시 데이터를 정리한다.
mwosa delete data <selector> 특정 종목, 기간, record type 의 로컬 데이터를 삭제한다.
mwosa export data <selector> 데이터를 json, ndjson, csv 등으로 내보낸다.
mwosa import data <path> 외부 파일을 canonical 데이터로 가져온다.

설정과 인증

설정과 인증도 같은 원칙을 따른다. 현재 상태는 inspect, 변경은 set 또는 login/logout, 검사는 validate 로 처리한다.

명령어 설명
mwosa init config 기본 설정 파일과 데이터 디렉터리 구조를 만든다.
mwosa get config <key> 특정 설정값을 조회한다.
mwosa set config <key> <value> 특정 설정값을 변경한다.
mwosa validate config 설정 파일, 필수 환경변수, provider 인증 정보를 검사한다.
mwosa login provider <name> provider 인증 정보를 등록한다.
mwosa logout provider <name> provider 인증 정보를 제거한다.

Provider 제어

명령어 설명
mwosa test provider <name> provider 인증과 기본 API 호출이 정상인지 확인한다.
mwosa enable provider <name> provider 를 기본 후보에 포함한다.
mwosa disable provider <name> provider 를 기본 후보에서 제외한다.
mwosa prefer provider <name> provider 우선순위를 조정한다.

Calc

명령어 설명
mwosa calc returns <symbol> 기간 수익률, 누적 수익률, 연환산 수익률을 계산한다.
mwosa calc indicator <symbol> <name> RSI, MACD, SMA, EMA, ATR 같은 기술적 지표를 계산한다.
mwosa calc volatility <symbol> 변동성, 연환산 변동성, 구간별 변동성을 계산한다.
mwosa calc drawdown <symbol> 최대 낙폭과 낙폭 구간을 계산한다.
mwosa calc correlation <symbols...> 여러 종목 사이의 상관관계를 계산한다.
mwosa calc beta <symbol> 기준 지수 대비 beta 를 계산한다.
mwosa calc risk <symbol> VaR, downside risk, 손절 기준 리스크를 계산한다.
mwosa calc valuation <symbol> 밸류에이션 지표와 과거 구간 대비 위치를 계산한다.
mwosa calc relative-strength <symbol> 기준 지수나 universe 대비 상대강도를 계산한다.
mwosa calc relative-volume <symbol> 평균 거래량 대비 현재 거래량 수준을 계산한다.
mwosa calc position-size 진입가, 손절가, 허용 손실 기준으로 수량을 계산한다.
mwosa calc rr 진입가, 손절가, 목표가 기준으로 reward/risk 를 계산한다.

Screen

명령어 설명
mwosa screen stocks 조건에 맞는 주식 후보를 찾는다.
mwosa screen etfs 조건에 맞는 ETF 후보를 찾는다.
mwosa screen universe <name> 저장된 universe 안에서 조건에 맞는 후보를 찾는다.
mwosa screen momentum 모멘텀, 상대강도, 추세 조건으로 후보를 찾는다.
mwosa screen value PER, PBR, 배당수익률 등 가치 지표로 후보를 찾는다.
mwosa screen volatility 변동성, ATR, 낙폭 기준으로 후보를 찾는다.
mwosa screen liquidity 거래대금, 거래량, 스프레드 기준으로 후보를 찾는다.
mwosa explain screen <run-id> 특정 스크리닝 결과가 왜 통과하거나 탈락했는지 설명한다.

Compare

명령어 설명
mwosa compare symbols <symbols...> 여러 종목의 수익률, 변동성, 거래량, 밸류에이션을 비교한다.
mwosa compare etfs <symbols...> ETF 의 기초지수, 보수, 추적오차, 유동성, 수익률을 비교한다.
mwosa compare sectors <sectors...> 업종 또는 섹터 단위 성과와 위험을 비교한다.
mwosa compare providers <symbol> provider 별 동일 데이터의 차이와 신선도를 비교한다.
mwosa compare portfolios <names...> 여러 포트폴리오의 성과와 위험 지표를 비교한다.

리소스 생성과 수정

포트폴리오, universe, 전략, 알림은 같은 CRUD 계열 verb 를 공유한다.

명령어 설명
mwosa create universe <name> 관심 종목 universe 를 만든다.
mwosa update universe <name> universe 이름, 설명, 기본 필터를 수정한다.
mwosa add universe-symbol <universe> <symbol> universe 에 종목을 추가한다.
mwosa remove universe-symbol <universe> <symbol> universe 에서 종목을 제거한다.
mwosa create portfolio <name> 새 포트폴리오를 만든다.
mwosa update portfolio <name> 포트폴리오 이름, 설명, 목표 통화, 목표 비중을 수정한다.
mwosa add holding <portfolio> <symbol> 포트폴리오에 보유 종목을 추가한다.
mwosa update holding <portfolio> <symbol> 수량, 평균단가, 목표비중 같은 보유 정보를 수정한다.
mwosa remove holding <portfolio> <symbol> 포트폴리오에서 보유 종목을 제거한다.
mwosa rebalance portfolio <name> 목표 비중 대비 매수/매도 필요 금액을 계산한다.
mwosa simulate portfolio <name> 특정 가격, 환율, 비중 변화가 포트폴리오에 미치는 영향을 계산한다.
mwosa stress portfolio <name> 금리, 환율, 지수 하락 같은 시나리오로 포트폴리오 스트레스를 계산한다.
mwosa create strategy <name> 스크리닝 조건, 진입 조건, 청산 조건을 가진 전략 초안을 만든다.
mwosa update strategy <name> 전략 조건, universe, 리스크 설정을 수정한다.
mwosa validate strategy <name> 전략 정의의 필수 항목과 데이터 요구사항을 검사한다.
mwosa backtest strategy <name> 과거 데이터로 전략 성과를 검증한다.
mwosa compare strategies <names...> 여러 전략의 수익률, 낙폭, 승률, 회전율을 비교한다.
mwosa explain backtest <run-id> 백테스트 결과의 주요 거래, 성과 요인, 한계를 설명한다.
mwosa create alert <target> 가격, 지표, 뉴스, 공시 조건에 대한 알림을 만든다.
mwosa update alert <alert-id> 알림 조건과 전달 경로를 수정한다.
mwosa delete alert <alert-id> 등록된 알림을 삭제한다.

거래 기록과 복기

명령어 설명
mwosa record trade 실제 또는 가상 거래를 기록한다.
mwosa close trade <trade-id> 거래의 청산가, 청산일, 청산 사유를 기록한다.
mwosa record thesis <symbol> 종목별 투자 가설을 기록한다.
mwosa record note <target> 종목, 포트폴리오, 전략에 대한 메모를 남긴다.
mwosa review journal 거래일지와 메모를 기간별로 복기한다.
mwosa summarize journal 승률, 평균 손익, 룰 준수율, 반복 실수를 요약한다.

알림과 모니터링

명령어 설명
mwosa watch quote <symbol> 특정 종목의 quote 변화를 터미널에서 지속적으로 보여준다.
mwosa watch screen <name> 저장된 스크리닝 조건을 반복 실행해 변화만 보여준다.
mwosa test alert <alert-id> 알림 조건과 전달 경로가 정상인지 확인한다.

AI agent 지원

명령어 설명
mwosa build context <target> AI agent 가 리서치에 바로 사용할 수 있는 데이터 묶음을 만든다.
mwosa build prompt <target> LLM 에 전달하기 좋은 리서치 프롬프트를 생성한다.
mwosa validate output <path> 저장된 JSON/NDJSON 출력이 schema 를 만족하는지 검사한다.

진단

명령어 설명
mwosa doctor 설정, provider 인증, 데이터 디렉터리, 네트워크 상태를 종합 점검한다.
mwosa trace request <command> 특정 명령이 어떤 provider, cache, normalizer 를 거쳤는지 추적한다.
mwosa benchmark provider <name> provider 응답 시간과 rate limit 상태를 측정한다.

About

AI야, 그래서 뭐 사? 한국 주식·ETF 리서치를 위한 데이터 CLI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors