KIS-Agent — OpenAPI de Korea Investment & Securities, ahora con un solo `pip`
(github.com/Intrect-io)Lo hice para quienes alguna vez abrieron la documentación oficial de OpenAPI de Korea Investment & Securities para usarla y terminaron cerrándola.
Gestión de tokens de autenticación, estar pendiente del Rate Limit, descifrar nombres de campos como stck_prpr, bucles de paginación de 100 registros: me pareció que no tenía sentido tener que programar todo eso a mano cada vez, así que lo empaqueté en un wrapper.
Qué se puede hacer
Directo desde la terminal:
kis price 005930 # precio actual de Samsung Electronics
kis balance --holdings # saldo de la cuenta + posiciones
kis overseas NAS AAPL # AAPL en Nasdaq
Desde código:
agent = Agent(app_key=..., app_secret=..., account_no=...)
price = agent.get_stock_price("005930")
agent.order_stock_cash("buy", "005930", "03", "1", "0") # compra a mercado
Como herramienta para agentes LLM:
Con salida JSON + exploración de tipos del esquema de kis, se puede conectar directamente a tool calls de GPT/Claude.
Puntos principales que resuelve
Conversión automática de nombres de campos — stck_prpr → currentPrice. No hace falta recibir la respuesta oficial tal cual
Rate Limiting integrado — 18 RPS / 900 RPM con base en mediciones reales. No hace falta ajustar después de que reviente
Caché — reduce entre 80 y 95% las llamadas a la API cuando se repite la misma solicitud
Evita el límite de 100 registros — con get_daily_price_all() recopila automáticamente todo el período
96 modelos TypedDict — autocompletado en el IDE y type checker funcionando por completo
Cobertura compatible
Mercado local (KOSPI/KOSDAQ/NXT) · 9 bolsas del extranjero (NASDAQ, NYSE, Tokio, Shanghái, Hong Kong, Vietnam, etc.) · futuros y opciones locales e internacionales · streaming en tiempo real con WebSocket · análisis de tendencias por inversionista/program trading/casa de bolsa
Como lo hice con el objetivo de automatizar trading personal, está implementado principalmente con lo que de verdad se usa en la práctica. Si hay funciones de la API oficial que faltan, déjenlas como issue y las agregaré.
Aún no hay comentarios.