English | 中文 | 日本語 | 한국어 | العربية | Español
Un Solo Comando para Dotar a tu Agente de Capacidades Integrales de Trading
Sitio web · Documentación · News · Features · Shadow Account · Demo · Quick Start · Examples · API / MCP · Roadmap · Contributing
⚠️ Advertencia de seguridad: la cuenta de XVibeTrading_HKU, el proyecto de Virtuals101845y el contrato de token0x640BDBF77b6447E8b7DB7894cED84BD1c40571f4no son activos oficiales de Vibe-Trading. Nunca hemos lanzado ni respaldado ningún token o memecoin. No compres, conectes una wallet ni firmes nada. Detalles.
- 2026-08-25 🛡️ Cerrados dos fail-open en las puertas de trading en vivo, y el purged CV deja de borrar el entrenamiento entre bloques de test: Un corto de Alpaca se contabilizaba como exposición positiva (
qtyes magnitud y la dirección va enside), así que vender más aflojabamax_total_exposure_usd— la cantidad ahora lleva signo en las rutas TAP JSON y SDK directa (#1209); las lecturas de OKX/Futu aplanaban una llamada API rechazada en «libro vacío,status: ok», dejando a la puerta de mandato evaluar límites contra nada — ahora devuelven el sobre de error con el que la puerta falla cerrada (#1212). Ambos son la Fase 0 de la hoja de ruta de auditoría en #1207. Corregido: el purged CV combinatorio trataba bloques de test no contiguos como un solo tramo y purgaba todo el entrenamiento entre ellos; ahora cada segmento purga por separado y un fold vaciado lanza un error (#1204); las funciones de riesgo de crédito rechazan entradas NaN/inf en lugar de devolver puntuaciones NaN o un veredicto de «zona gris» (#1215, cierra #1214). Nuevo: los reintentos de los workers del swarm usan retroceso equal-jitter acotado (#1210, hacia #1208); yvibe-trading --swarm-retry <run_id>//swarm retryrelanza una ejecución fallida, conservando las tareas completadas con--resume(#1194). ¡Gracias @he-yufeng, @santhreal, @Robin1987China, @pengpengyi92 y @SiMinus! - 2026-08-24 🔗 El MCP oficial de IBKR pasa de «listar herramientas» a ser una fuente de cartera de solo lectura que funciona, y la programación gana una herramienta de agente que no puede actuar sola: #1178 corrigió la URL, pero la pasarela de IBKR seguía rechazando el registro de cliente OAuth estándar de FastMCP antes del inicio de sesión. Un proveedor OAuth específico de IBKR — cabeceras de perfil de navegador,
token_endpoint_auth_method: none, puerto de callback estable y recuperación de registros obsoletos, aplicado solo cuando el host MCP esapi.ibkr.com— completa la autorización (#1186), y las herramientasget_account_summary/get_account_positions, verificadas con una cuenta real, respaldan ahora las lecturas genéricas de cuenta/posiciones, con lo queibkr-live-official-mcp-readonlyes una fuente elegible para/portfolio(#1190, cierra #1126). Nuevo: el agente ve exactamente una herramienta de programación,scheduled_research— suspropose_create/propose_cancelnunca tocan el almacén de jobs hasta que confirmas en la superficie en la que estás (tarjeta web,y/Nen la CLI, o una respuesta exactaconfirm/确认en IM), los destinos de entrega son referencias opacas configuradas por el operador que nunca exponen un chat/user id crudo, y un job que supera suend_atexpira en lugar de volver a dispararse (#1187). Corregido: los motores de comps y de tres estados ahora rechazan entradas no finitas en cada punto donde entran a la aritmética — una métrica NaN de un comparable se incluía en la distribución de múltiplos y arrastraba la mediana a NaN, yabs(nan) > toleranceesFalse, así que un balance NaN pasaba la comprobación dura (#1184, cierra #1183);get_market_datavalida codes, fechas, source e interval antes de quemar la cadena de fallback de loaders en una llamada malformada, y su enum de sources dejó de rechazar en silencio seis loaders registrados (#1185); el login QR de Feishu ahora persiste las credenciales que solo recibe una vez — de forma atómica y con permisos solo del propietario (#1188); la fórmula del estadístico de orden del VaR histórico en la doc de la skill risk-analysis coincide ahora con el código (#1189). ¡Gracias @sykuang, @goatyyc, @AirHua-byte, @Robin1987China, @cgycorey y @youngjincho02-arch! - 2026-08-23 🔌 La semilla MCP de IBKR apuntaba a la URL equivocada, y cerrar un adaptador LLM los cerraba todos: La semilla del perfil oficial de IBKR MCP de solo lectura, el README y
SKILL.mdapuntaban ahttps://api.ibkr.com/v1/api/mcp; la propia página de integración con IA de IBKR publicahttps://api.ibkr.com/v1/api/mcp-public, y ahora la semilla, los seis README ySKILL.mdla usan. Vuelve a ejecutarvibe-trading connector configure ibkr-live-official-mcp-readonly --yessi tuagent.jsonaún conserva la URL antigua. El paso de registro del cliente OAuth que la pasarela de IBKR rechaza sigue abierto en #1126 (#1178). Corregido:ChatLLM.close()cerraba los clientes HTTPX en caché de todo el proceso de LangChain, así que una sola llamada terminada de generación de título o de visión de imágenes dejaba todas las peticiones posteriores fallando con "client has been closed" hasta reiniciar — ahora solo se cierran los transportes creados por el propio Vibe-Trading (#1182); un reinicio del servicio a mitad de respuesta descartaba el texto ya transmitido y dejaba el intento en running para siempre — ahora las respuestas parciales se guardan como checkpoints y se reconcilian en el siguiente arranque como una entrada interrupted explícita (#1180). Nuevo: el chat web adjunta hasta cinco archivos por turno mediante el selector, arrastrar y soltar o pegar desde el portapapeles (#1179). ¡Gracias @c020627 y @AirHua-byte!
Noticias anteriores
-
2026-08-22 💼 Una página de Cartera: tus posiciones en todos los brókers, en solo lectura: Elige perfiles de conector de solo lectura (instancias de conexión sobre
account.read+positions.read; el perfil oficial MCP de IBKR aún no es elegible) y la nueva página/portfoliolos agrega en instantáneas inmutables con procedencia por fuente, valoración en USD/CNY, exportación CSV y un gráfico histórico. Una fuente que no logra actualizarse se reporta como error y queda excluida de los totales — nunca se arrastra la caché anterior — y la instantánea se marca incompleta. La herramienta de agenteportfolio_summarydevuelverisk_xray_argsque alimentan alportfolio_risk_xrayexistente, yvibe-trading portfolio show|refresh|sourcesimprime la misma instantánea en la terminal. Los conectores de solo lectura que escribas tú viven en~/.vibe-trading/connectors/(un manifiesto que declare cualquier capacidad de escritura se rechaza; los secretos van al llavero del sistema vía el extra[keyring]), y nada en esta ruta puede colocar una orden (#1072, hacia #1171). Corregido: trece factores del Alpha Zoo rellenaban hacia delante un cierre faltante antes de calcular retornos, convirtiendo un hueco de datos en un «retorno del 0 %» finito — el hueco ahora se mantieneNaN(#1172); clientes MCP independientes en un mismo servidor http/sse compartían una única sesión de objetivo de investigación de reserva (#1173); la recolección de basura y la compresión de memoria dejaban filas FTS obsoletas y sidecars de relaciones huérfanos (#1174);cancel_run()nunca llegaba a un worker swarm que ya transmitía — la parada ahora interrumpe el flujo, omite las llamadas de ese turno y queda como tarea cancelada (#1175);get_research_reportspor MCP descartababeginTime/endTime(#1176);get_options_chainrespondía a un vencimiento de otro ciclo conok: truey los contratos de otra fecha (#1177). ¡Gracias @goatyyc, @Shizoqua y @cgycorey! -
2026-08-21 ⏱️ Ejecuciones colgadas para siempre: El tiempo límite de
bashmataba el shell pero no a los nietos que retenían sus descriptores de tubería, así que una ejecución quedaba «en ejecución» más de 20 minutos. Ahora los comandos se lanzan en su propio grupo de procesos y el tiempo límite mata el árbol completo, un vigilante de estancamiento termina una ejecución que no avanza, y la compactación dejó de descartar los registros de verificación del propio modelo (#1169). Corregido: el histórico de Tencent de varios años se truncaba en silencio a 500 barras (#1154). Nuevo: las ejecuciones swarm reproducen solo su subgrafo fallido (#1158, cierra #1157); Market Watch muestra el último veredicto de cada monitor en la lista (#1156, cierra #943);quantlibalcanza 286 funciones probadas (#1159–#1168). ¡Gracias @wiliao, @cgycorey, @he-yufeng, @BigFishEmily, @santhreal, @SiMinus y @alinv0! -
2026-08-20 🚀 Se lanza v0.1.14 (Notas de la versión,
pip install -U vibe-trading-ai): 272 commits y 74 pull requests fusionados desde 0.1.13. El titular es que un backtest terminado ya es algo que se puede leer, y no una carpeta de CSV. Run Detail gana cuatro pestañas — Investigación de factores (serie diaria de IC con su línea media, estadísticas de IC, curvas de equity por quintiles y una matriz de correlación de IC que no existía en ninguna parte), Posiciones (tarta/treemap de pesos con deslizador de fechas, barras de exposición neta por sector y área de evolución de pesos — la tarta es composición bruta y las barras son netas, así que un par largo/corto en un mismo sector se anula en las barras mientras ambas patas siguen visibles en la tarta), Tearsheet (mapa de calor de rentabilidades mensuales, barras anuales y las 5 mayores caídas anotadas sobre la curva de equity) y un panel de investigación interactivo con KPIs, equity relativa al índice, Sharpe móvil y el libro de operaciones completo. Las cuatro leen artefactos que la ejecución ya escribe: ninguna canalización de datos nueva. La nueva página Options Lab añade un diagrama de pagos al vencimiento, una matriz de escenarios spot×IV, las griegas de la cartera y una cadena de opciones en vivo, calculadas con el mismo motor fijado por tests que usan las herramientas MCP. Instalación: los Mac Intel vuelven a poder hacerpip install vibe-trading-ai—smartmoneyconceptsarrastraballvmlite, que desde 0.46 no publica wheel para macOS x86_64, de modo que toda instalación en Intel se convertía en una compilación desde fuente con CMake; ahora es el extra opcional[smc]y el tope obsoleto<3.14desaparece (#1035). Novedades: descubrimiento de estrategias con puerta de evidencia sobre el Alpha Zoo y el almacén SDM, con ruta de población, frescura calculada en lectura (fresh/aging/stale) y filas obsoletas que salen fail-closed de las recomendaciones por defecto; investigación programada que se entrega sola a través de una bandeja de salida con lease y que persiste el veredicto de cada monitor para la lista de Market Watch; siete endpoints de solo lectura de Futu; Vietnam (HOSE) como mercado de backtest; conciliación de cuenta USD-M offline; los proveedores Novita AI y GitHub Copilot; una fuente de datos MetaTrader 5 alojada; los idiomas español y alemán; y MCP crece a 74 herramientas. Corrección de errores: la suite de tests dejó de escaparse hacia tu raíz de configuración real, donde cada ejecución completa venía añadiendo registrosorder_rejectedsintéticos al libro de auditoría encadenado por hash;build_registry()ya no devuelve en silencio una lista de herramientas incompleta;xirrsobrevive al subdesbordamiento del descuento a largo plazo y el DCF rechaza entradas no finitas en lugar de devolver un valor por acción negativo; los símbolos.VNdejaron de ejecutarse bajo reglas de acciones A chinas; el archivo de backtest dejó de mezclar los artefactos de dos ejecuciones; y una amplia pasada de grounding terminó con una clase de rechazos falsos sobre fechas, listas ordenadas, constantes de identidad en fórmulas de tasas y líneas de orden leídas como cotizaciones. Gracias @Shizoqua, @shadowinlife, @pengpengyi92, @cgycorey, @ofeksh-tr, @lorenzozanee, @AndyLongest, @zzz607, @wiliao, @jay79-boop, @Robin1987China, @Echoandelementwebsites, @zhiwuyazhe-fjr, @x-lambda, @sykuang, @straun-repo, @nstavros, @ngoanpv, @miguelangelo78, @lukiod, @jax-novita, @honginp, @he-yufeng, @fixXxerTech, @er-s-an, @daviddaco1, @birdxs, @QCYTSN, @549236606-oss y @1psconstructor. -
2026-08-19 🔌 Ejecuciones congeladas, una conexión filtrada por tarea y Macs Intel que no podían instalar: un proveedor que se quedaba en silencio congelaba la ejecución indefinidamente; el nuevo
VIBE_TRADING_LLM_TIMEOUT_SECONDS(300s por defecto) acota la llamada, y el marcado de tool-call nunca se publica como respuesta final (#1105). Cada tarea del swarm filtraba una conexión HTTP del pool (#1145, cierra #1141). También corregido: el fallo devibe-trading show <run_id>(#1147, cierra #1146), la sobrescritura de entregas en curso (#1140), la pérdida de evidencia de validación del backtest (#1139), la paginación MCP (#1137, #1138) y los valores no finitos en mercados de predicción (#1136). Nuevo: siete endpoints de solo lectura de Futu (#1135) y un chip explícitoInferreden los títulos de estrategia inferidos (#1134). Instalación:smartmoneyconceptspasa a ser el extra[smc]— elllvmliteque arrastraba no publica wheel para macOS x86_64, así que cada instalación en un Mac Intel se convertía en una compilación desde fuente con cmake (#1035); el tope<3.14desaparece con él. Gracias @wiliao, @cgycorey, @Shizoqua, @Echoandelementwebsites, @549236606-oss y @fixXxerTech. -
2026-08-18 🈶 Los informes correctos dejaron de rechazarse, y los backtests dejaron de operar ruido:
\breconoce Unicode, así que最cuenta como carácter de palabra y(2026-07-14最低)no tenía frontera después del día: la fecha sobrevivía al enmascarado y2026,7y14llegaban a la verificación OHLC como precios que ningún rango observado puede contener (#1132, cierra #1122). Con él se fueron otros cuatro rechazos de la misma familia: una fecha de sesión con guion (08-10(一)), un nivel expresado como rango que dejaba-20detrás, una línea GTC (100 @ $3.50) leída como dos cotizaciones observadas, y una celda de fecha con formato de informe que no coincidía con ninguna fila de evidencia. Backtests:position_adjustment="hold"descartaba en silencio un cambio de tamaño solicitado, y"rebalance"no tenía banda de deriva alguna: medido, un movimiento diario del 0,01 % volvía a fijar la posición en 19 de 30 barras, de modo que una estrategia con su propiorebalance_freqoperaba igualmente en cada barra. Las solicitudes descartadas ahora se informan, yrebalance_tolerancees la banda que los profesionales describen como "rebalancear cuando los pesos se muevan más de X"; su valor por defecto0.0deja intacta cualquier ejecución existente. Además, diecinueve alfas alpha101 neutralizadas por industria se omitían en cada bench de SP500 por falta de una etiqueta de sector que ya estaba en la tabla de la que provienen los constituyentes. Novedades: un monitor de Market Watch puede enviar su informe a un canal de mensajería cuando la ejecución termina, a través de un outbox persistido que un reinicio no puede perder y que un barrido concurrente no puede duplicar (#942); el alemán es el séptimo idioma de la interfaz (#1117);run_dcfrechaza entradas no finitas en lugar de devolver un precio por acción negativo y verosímil (#1121, cierra #1120); la respuesta deget_market_dataen MCP incluye el_provenanceque su propio docstring prometía (#1131); un módulo de herramientas que falla al importarse se nombra en vez de reducir el registro en silencio (#1129, cierra #1124); y la conciliación de cuenta USD-M sin conexión compara el estado de riesgo local con una observación del exchange sin abrir ninguna conexión (#1106). También: importarbacktest.runnerya no carga un.enven el proceso, algo que volvía poco fiable una ejecución local de toda la suite en cualquier máquina que tuviera uno (#1123). Gracias @Robin1987China, @newgo, @er-s-an, @Shizoqua, @1psconstructor, @honginp, @cgycorey, @alinv0 y @jelech. -
2026-08-17 🔒 La suite de pruebas dejó de escribir en tu raíz de configuración real, incluido el libro de auditoría en vivo: Ejecutar la propia suite del proyecto añadía registros
order_rejectedfabricados a~/.vibe-trading/live/audit.jsonl, un libro solo-de-adición encadenado por hash cuyo valor completo consiste en que sus entradas no se pueden fabricar; en Windows dejaba además un archivo de cadena corrupto.conftest.pyno tenía ningún aislamiento de la raíz de configuración, así que cualquier módulo que fijaraPath.home() / ".vibe-trading"en tiempo de importación resolvía contra el home real en cualquier plataforma: Windows era peor solo porque allíPath.home()lee%USERPROFILE%e ignora$HOME, dejando inerte el modismo de aislamiento que la suite venía usando. Ahora el home se redirige antes de la recolección, el sandbox posee una sola perilla para que el aislamiento por prueba siga ganando, y el final de la sesión afirma que los libros reales son idénticos byte a byte en lugar de solo comprobar que la redirección estaba instalada (#1118, cierra #1116). Además:xirrymoney_weighted_returnlanzabanZeroDivisionErroren horizontes de más de ~51 años, donde el factor de descuento se desborda a cero — exactamente los flujos largos e irregulares para los que existe XIRR (#1119); y un backtest archivado en una ejecución activa se fusionaba con los artefactos del anterior, de modo que un solo informe podía describir dos backtests distintos mientras/runs/{id}listaba los restos como propios (#1094). Gracias a @lorenzozanee, @straun-repo y @pengpengyi92! -
2026-08-16 🔧 Las ejecuciones con Anthropic ya no mueren en las rutas de recuperación, y la búsqueda de símbolos deja de reportar resultados vacíos como si fueran correctos: Los mensajes
systemque las rutas de recuperación añadían a mitad de conversación los rechaza la API de Anthropic, matando la ejecución; el direccionamiento de recuperación viaja ahora como mensajes de usuario con etiquetas<system>en línea (#1112, cierra #1109).search_symboldevolvía cero candidatos para consultas ticker+nombre mientras ambas fuentes reportabanok, así que la identidad nunca se bloqueaba y todas las herramientas de datos rechazaban la petición; la vía de Yahoo marca ahora esas consultas comoskippeden vez de unokengañoso (#1114, cierra #1108). Además:LANGCHAIN_REASONING_EFFORTya se aplica en la rama de Anthropic mediante una lista de modelos permitida (#1115); el cargador de Tencent se recupera deCERTIFICATE_VERIFY_FAILEDcon el paquete CA de certifi (#1113); la derivaciónrevenue - cogsdel beneficio bruto deja de ser código muerto (#1111); y los trabajadores del swarm recortan con el helper compartido, así que el subagente siempre ve el aviso de recorte (#1110). ¡Gracias a @lorenzozanee, @straun-repo, @x-lambda, @cgycorey y @Shizoqua! -
2026-08-15 🛡️ Actualizaciones de escritorio más seguras, empaquetado fiable en Windows e investigación factorial en Run Detail: El límite del updater inactivo conserva ahora la evidencia de los procesos propios para reintentar la limpieza, comprueba listeners TCP en vez de HTTP health, reserva el recovery journal de forma atómica, vincula Authenticode y los hashes a los mismos bytes preparados y vuelve a verificarlos justo antes del lanzamiento (#1101). El empaquetado de Windows gestiona descargas de Electron acotadas y verificadas por checksum, y extrae el asset GTK fijado como datos mediante 7-Zip en vez de ejecutar su instalador antiguo e inestable; la CI nativa de Windows cubre códigos de salida, timeouts, ensamblado del runtime, NSIS y arranque del paquete (#1104, cierra #1093). Run Detail incorpora series y estadísticas de IC, quantile equity y correlación de IC, con recorrido acotado de artifacts y valores JSON finitos (#1099, cierra #1100); los universal hash locks también se verifican de forma nativa en Linux, macOS ARM64 y Windows (#1102, cierra #1089). ¡Gracias a @QCYTSN y @shadowinlife!
-
2026-08-14 ⚙️ Un ajuste de razonamiento que no hacía nada, y ejecuciones que se detenían cuando aún podían recuperarse:
LANGCHAIN_REASONING_EFFORTera silenciosamente inocuo en casi todos los proveedores — solo OpenAI directo llegaba a recibirlo, así que ponerhighen DeepSeek no cambiaba nada y no lo advertía en ninguna parte. Ahora el ajuste llega a ambos transportes mediante el campo propio de cada adaptador: Chat Completions por defecto, y la API de Responses cuandoLANGCHAIN_USE_RESPONSES_API=true. Los proveedores que reciben unreasoning_effortde primer nivel son una lista de permitidos verificada, no "todo lo que habla el formato de OpenAI" — un endpoint que valida su cuerpo de petición con rigor rechaza la clave desconocida y hace fallar la llamada entera, así que el coste de equivocarse es cada petición, no un ajuste que no surte efecto (#1025). La verificación de evidencia tampoco devuelve ya "confirma y continúa" mientras siga disponible una recuperación determinista de solo lectura: un instrumento sin resolver ahora impulsasearch_symbol→get_market_datacon su propio presupuesto acotado en vez de agotar las iteraciones y cerrarse en fallo (#1092, cierra #1081). Novedades: una página Options Lab — diagrama de resultado multipata, matriz de escenarios precio × volatilidad implícita, griegas de la cartera y cadena de opciones en vivo, calculado por la herramienta de payoff existente yquantliben lugar de una segunda implementación de las fórmulas (#1096); una pestaña tearsheet de backtest con mapa de calor de rentabilidad mensual, rentabilidad anual y las N mayores caídas (#1091); tickerall como la 25.ª fuente de datos de mercado — barras de forex y metales de MetaTrader 5 alojado, sin terminal local en ningún sistema operativo, solo bajo petición explícita para que una clave de bróker nunca sea un destino de repliegue silencioso, y una ventana histórica truncada es un error en vez de una serie corta sin avisar (#968, cierra #897); y Novita AI junto con GitHub Copilot como proveedores integrados (#1059, #990). eToro incorpora la exploración por clase de activo según el tipo de instrumento, y la operativa de copia ahora rechaza una cuenta demo con un motivo explícito en lugar de fallar de forma opaca (#1070). Gracias a @cgycorey, @Shizoqua, @shadowinlife, @miguelangelo78, @jax-novita, @sykuang, y @ofeksh-tr. -
2026-08-13 🎯 Los informes de backtest muestran la cartera que realmente se ejecutó:
positions.csvcontenía los pesos objetivo del optimizador, así que un informe podía declarar una exposición del 80% mientras el redondeo de lotes, las comisiones o una orden bloqueada dejaban la cartera cerca del 20% — y esos mismos objetivos alimentaban las métricas de peso invertido y la radiografía de riesgo. Las ejecuciones van ahora apositions.csvy las solicitudes atarget_positions.csv(#1082). Run Detail incorpora un panel de investigación en?view=dashboard(#1084), y el español es el sexto idioma de la interfaz (#1087). Además:get_research_reportsdevolvía HTTP 400 para todos los símbolos de acciones A (#1077); las cotizaciones de IBKR separan el nivel solicitado del aplicado (#1075);.env.partialse escribe de forma atómica (#1086); el flujo de Docker fija las actions a commits y bloquea por hash los SDK de canales (#1088); y la puerta de grounding deja de leer escalones de soporte/resistencia y máximos históricos como precios observados (#1060). Gracias @AndyLongest, @daviddaco1, @zzz607, @jay79-boop, @lukiod, @birdxs y @wiliao. -
2026-08-12 📏 El volumen de acciones A ya no se dispara ×100 cuando cambia la fuente de fallback: cinco fuentes de la cadena de fallback de acciones A informaban en lotes de mercado (board lots) mientras que BaoStock informaba en acciones individuales, y como la procedencia (provenance) del dato servido no llevaba unidad, un fallback podía reescalar silenciosamente cualquier señal basada en volumen. Los loaders ahora declaran las unidades de volumen por mercado, la procedencia expone la unidad de la fuente que realmente sirvió cada símbolo, BaoStock convierte acciones a lotes de mercado en el límite del loader, la caché v4 evita que reaparezcan entradas previas a la corrección, y una regresión de datos en vivo entre fuentes exige que los valores de días cerrados coincidan dentro de un 1% (#1065, #1067, cierra #1062). El paquete de diez PR de corrección también le da a eToro un estado de runtime completo y una interfaz conectada al SDK en cinco idiomas (#1051); hace que el DELETE de una ejecución programada devuelva un 204 realmente vacío (#1068); renderiza en la CLI el payload de cuenta del SDK directo de Alpaca (#1073); normaliza las raíces de Ollama a
/v1en el límite de credenciales usado por el constructor de modelo real (#1074); convierte el EOF de stdin de OAuth de Docker Codex en una guía de TTY procesable (#1054, cierra #1050); evita que los marcadores de lista ordenada de Markdown como1.se conviertan en afirmaciones numéricas no soportadas (#1063); hace que las consultas de memoria de dos caracteres comoGEse comporten igual con o sin FTS5 (#1071); y calcula el precio de opciones europeas de volatilidad cero a partir del valor intrínseco forward descontado, restableciendo la lógica del lado del ejercicio y la paridad put-call (#1066). Gracias @shadowinlife, @ofeksh-tr, @zhiwuyazhe-fjr, @zzz607, @pengpengyi92, y @Shizoqua. -
2026-08-11 🧠 La compactación deja de descartar contenido de la conversación, y un reintento de swarm ya no puede borrar su propia ejecución: la autocompactación recortaba el historial serializado en un límite estricto de 80.000 caracteres antes de resumir, así que todo lo que quedaba después de ese corte no llegaba ni a la llamada de resumen ni a la cola preservada — desaparecía sin lanzar ningún error, en contra de la propia garantía de «cero pérdida de información» de la función, y el corte caía en medio de un objeto, de modo que el resumidor recibía un JSON inválido. El historial ahora se empaqueta respetando los límites de mensaje y se pliega fragmento a fragmento mediante la plantilla iterativa existente; un único mensaje demasiado grande para un fragmento se convierte en fragmentos etiquetados en lugar de truncarse, y una respuesta vacía del modelo ya no borra el resumen acumulado hasta ese momento (cierra #1055). La nueva limpieza de artefactos en el reintento ejecutaba
shutil.rmtreesobrerun_dir/artifacts/<agent_id>, dondeagent_idllega sin validar desde un preset y los presets de usuario se cargan desde~/.vibe-trading/swarm/presets/, de modo que un id..se resolvía como el propio directorio de la ejecución — ahora la ruta se rechaza a menos que sea un único segmento seguro que resuelva dentro del directorio de artefactos de esa ejecución. Además,technical_indicatorsRSI pasa a la convención Wilder-EWM que su propio docstring ya afirmaba, donde una media móvil simple puede desplazar una lectura a través del límite 30/70 (#1056);excess_returnse vuelve a derivar a partir del total de benchmark corregido para que ambos campos dejen de contradecirse dentro de un mismo diccionario de métricas (#1058); la validación de entregables de swarm rechaza sobres de herramientas en bruto con clavesok/successpresentados como análisis (#1052); un worker reintentado ya no hereda elreport.mddel intento fallido (#1053); y los prompts de worker se reordenan para que los bloques invariantes del agente formen un único prefijo apto para caché (#1057). Gracias @Shizoqua y @Echoandelementwebsites. -
2026-08-10 🚀 Se lanza v0.1.13 (Notas de la versión,
pip install -U vibe-trading-ai): 408 commits y 162 pull requests fusionados desde 0.1.12 — la mayor versión hasta ahora. El titular es una corrección, no una función: la puerta de identidad deja de rechazar respuestas para las que ya tenía la evidencia. Una pregunta bien formada podía pasar minutos haciendo llamadas reales a herramientas y luego devolver "no se puede confirmar de forma segura la identidad del instrumento ni la evidencia de precio". Las causas:.SSy.SHse trataban como instrumentos distintos, así que todo ticker de Shanghái quedaba permanentemente ambiguo; una consulta secundaria fallida podía degradar una identidad ya bloqueada; el HTTP 400 de Yahoo en cada consulta CJK se registraba como un fallo de la fuente en lugar de "no listado aquí"; una lista blanca fija por herramienta bloqueaba 11 de las 17 grafías de argumento documentadas; las respuestas en chino se rechazaban por escribir雅虎o元en lugar del nombre ASCII del loader; y un separador de miles dividía¥1,309.22de modo que1se comparaba contra el rango observado. Las preguntas conceptuales y los informes comparativos tampoco quedan ya en un callejón sin salida. Una cotización fuera de la evidencia OHLC registrada sigue rechazándose. Novedades:src/quantlib— 249 funciones probadas en 17 módulos (opciones, bonos, crédito, econometría, VaR/CVaR/EVT, atribución, estudios de eventos, CV purgada) accesibles desde la CLI, la Web UI, la REST API y MCP mediante la herramienta de solo lecturaquantlib_call, de modo que las skills importan matemática financiera en lugar de llevar fórmulas en markdown; un motor de valoración (run_dcf/run_comps/ tres estados financieros) cuya única regla es que un input faltante hace que un modelo NO SEA EJECUTABLE en lugar de asignarle un valor por defecto silenciosamente; una columna vertebral de entidad + flujos de caja irregulares (XIRR / MOIC / DPI / TVPI, TWR / Modified Dietz víacashflow_performance) mantenida deliberadamente en paralelo a los motores de barras; gobernanza en cada ejecución — un manifiesto hash sobre el prompt, las skills, el registro de herramientas y las versiones de paquetes, más un libro de auditoría encadenado por hash y con fsync, donde incluso una edición auto-rehasheada se detecta un registro después; cuatro herramientas de datos de solo lectura sobre fuentes públicas gratuitas (SEC 13F con diferencias trimestre a trimestre, ETF look-through donde un tracker del CSI-300 se resuelve en 342 posiciones que cubren el 98.66% de los activos netos en lugar del top diez trimestral, mercados de predicción como probabilidad implícita etiquetada, y arXiv/OpenAlex con afirmaciones ancladas a la fuente); seis comandos institucionales (/comps/dcf/attrib/memo/earnings/screen); lentes de inversor como skill independiente; cinco guiones de investigación programada; un shell de escritorio Electron con empaquetado de Windows anclado por checksum ysafeStorage; eToro como decimotercer conector de broker; Corea (KRX) como noveno motor de backtest; un puente a OpenBB Workspace; acciones canadienses de punta a punta; ysentiment,technical_indicators,options_payoff,orderbook_depth, ModelScope yvibe-trading update. Corrección de errores: los períodos de la SEC se indexan por su intervalo(start, end)— las cifras anuales venían devolviendo un único trimestre, una subestimación de 4.2×; los precios de acciones A de Tushare están ajustados por eventos corporativos, donde una rentabilidad bruta a través de una fecha ex-dividendo se desviaba hasta 47 puntos porcentuales;bar_returnsya no registra una suspensión de cotización como un movimiento del 0%; la anualización cubre las 24 fuentes de datos; se cierra un hueco de sandbox donde el código generado podía importar la capa de broker o alcanzarsocket/subprocessa través de un binding renombrado; y los backtests compuestos en múltiples divisas se rechazan en lugar de sumarse en una sola curva de equity. Gracias @santhreal, @shadowinlife, @Robin1987China, @he-yufeng, @QCYTSN, @Shizoqua, @honginp, @cgycorey, @wiliao, @ngoanpv, @x-lambda, @ofeksh-tr, @00EVA, @zwrong, @yrk111222, @su322, @hhj123123, @dineeshd, @sambazhu, @ddy4633, @tyj147454413-cmd, @y85998607, @JungHoonGhae, @shugaoye, @TSENGCHIENFENG, @darkknight4563, @MuggleJinx, @klmtseng, @ebujinovch, @g0rdonL, @AmirF194, @Echoandelementwebsites, @yagnikpipaliya, @dvirarad y @1anter. -
2026-08-09 🪟 Empaquetado seguro para Windows, mercados de Canadá, ModelScope y Alpha Zoo sobre MCP: el empaquetado de escritorio para Windows ahora ensambla un runtime embebido de Python 3.12 anclado por checksum y rutas de revisión/firma NSIS x64, además de
safeStoragede Electron para un conjunto de credenciales en lista blanca. El renderer puede establecer o borrar secretos pero nunca leerlos; la configuración en texto plano se migra una sola vez; los valores descifrados solo llegan al backend propietario; y tanto las builds de revisión sin firmar como las firmadas fallan de forma cerrada ante un estado de firma incorrecto. Este PR no publicó ningún artefacto de instalador (#1015). Las acciones canadienses ahora funcionan de punta a punta: los símbolos.TO/.Vse clasifican en CAD, se enrutan a través de Yahoo → yfinance → fallback local, se ejecutan bajo las reglas GlobalEquity específicas de Canadá, se comparan contraXIC.TO, y se rechaza la agregación en múltiples divisas. Los backtests históricos estrictos USD-M también pueden optar porposition_adjustment=rebalancepreservando el colateral, el funding, las comisiones, el P&L realizado, el comportamiento de liquidación y la evidencia inmutable de ejecuciones a través de aumentos y reducciones (#1024, #1019, cierra #952). ModelScope se une a los proveedores integrados a través de su endpoint oficial de inferencia alojada compatible con OpenAI, conQwen/Qwen3.5-27Bcomo valor por defecto (#1011); el nuevovibe-trading updatedistingue instalaciones por wheel de checkouts editables/desde fuente, instala exactamente la versión que verificó y comprueba metadatos actualizados sin hacer downgrade (#1020); yalpha_zoojunto conalpha_benchacotado ya llegan a MCP (64 herramientas), con límites de horizonte/resultado/ruta de salida y creación segura de informes (#979). Las actualizaciones verificadas de los locks de Python y frontend también actualizan dependencias agrupadas,postcssyakshare(#1021, #1023, #1026, #1027). Gracias @QCYTSN, @wiliao, @honginp, @yrk111222, @zwrong, y @cgycorey. -
2026-08-08 🧱 Shell de escritorio, eToro, rebalanceo atómico y una amplia pasada de fiabilidad: un host Electron centrado en la fuente ahora gestiona el ciclo de vida del backend existente — puerto loopback aleatorio, secreto por lanzamiento, recuperación de arranque en cinco idiomas y limpieza de procesos propios — mientras que eToro se incorpora con perfiles demo/real separados por ruta; las acciones en vivo que incrementan el riesgo siguen sujetas a mandato y auditadas, y las superficies de capacidades de la API se autentican bajo un CSP forzado (#923, #989, #961). Los backtests ganan rebalanceo atómico opcional en la misma dirección con evidencia inmutable de ejecuciones; Shadow divide los mercados mixtos por divisa de liquidación sin inventar agregación de FX y respeta la raíz de runtime configurada; los indicadores usan historial consecutivo sin muestrear; el drawdown con equity negativo y las cuentas cruzadas insolventes vacías se gestionan correctamente (#951, #997, #1017, #1005, #958, #959). El OAuth de OpenAI Codex obtiene un almacén de credenciales sincronizado independiente y una recuperación 401 de un solo uso; la exclusión de proxy cubre clientes síncronos y asíncronos; las ejecuciones en sandbox conservan su raíz canónica; la investigación programada aísla registros malformados y corrige la validación de zona horaria de los intervalos; las solicitudes en minúscula
4hdevuelven barras de cuatro horas reales (#1014, #995, #1012, #1003, #1004, #1013). Las respuestas de QQ conservan los IDs de mensaje de origen, los slugs largos de modelo siguen siendo legibles, y el agente se detiene cuando la evidencia es suficiente (#1008, #1006, #1010). Gracias @QCYTSN, @Shizoqua, @ngoanpv, @hhj123123, @su322, @Robin1987China, @shadowinlife, @dineeshd, @honginp, @santhreal, @00EVA, @x-lambda, @ofeksh-tr. -
2026-08-07 🛡️ Menos rechazos falsos, un hueco de sandbox cerrado, QVeris en MCP: la puerta de fundamentación (grounding) deja de rechazar respuestas bien formadas sobre números que nunca fueron precios — puntuaciones de confianza, lecturas de indicadores, ventanas de media móvil, fechas sin año como
8/5, rangos porcentuales, y los propios niveles de disparo de un plan de trading (close ≥ 6.45es una condición, no una cotización) — mientras que una cotización fuera de la evidencia OHLC registrada sigue rechazándose, y una tabla de precios fechada08-05ahora coincide con su evidencia en lugar de que todas las celdas vuelvan como no disponibles (#1001, #983). Sandbox: el código de estrategia generado ya no puede importar la capa de broker, ni alcanzarsocket/subprocess/os.system/ctypesa través de un binding renombrado — ambos se aceptaban antes, ysrc.quantlibsigue pudiendo importarse. QVeris discovery/inspect/execute se incorporan a la superficie de MCP (62 herramientas), con la cotización de coste leída desde el marketplace en lugar de confiar en la que envía el llamador (#976, cierra #964, gracias @shadowinlife). Además, se repara el enrutamiento de fallback de datos de mercado de HK con una nueva fuente Tencent HK, el crypto de yfinance se enruta al motor de cripto, las entradas de memoria se escriben y recuperan con su sufijo.md, los argumentos list/dict de MCP toleran clientes que envían JSON como string, y los artefactos de Portfolio Studio se muestran en el detalle de la ejecución (#1000, #970, #984, #993, #980, #982, #966, #973, gracias @he-yufeng, @ngoanpv, @sambazhu). -
2026-08-06 🧮 Una capa de matemática financiera probada + motor de valoración + flujos de caja irregulares + gobernanza integrada:
src/quantlibsustituye las fórmulas que vivían como markdown dentro de las skills por una implementación probada de cada una — opciones, bonos, crédito, econometría, VaR/CVaR/EVT, atribución, estudios de eventos, control de pruebas múltiples, validación cruzada purgada — 265 funciones, accesibles desde la CLI, la Web UI, la REST API y MCP mediante la nueva herramienta de solo lecturaquantlib_call. Un motor de valoración (run_dcf/run_comps/ tres estados financieros) se niega a ejecutarse si falta un input en lugar de asignarle un valor por defecto silenciosamente, y una nueva columna vertebral de entidad + flujo de caja admite NAVs, capital calls y cupones (XIRR/MOIC/DPI/TVPI y TWR/Modified Dietz víacashflow_performance; coste de impacto L2 de cripto víaorderbook_depth). Cada ejecución ahora escribe un manifiesto hash, el libro de auditoría está encadenado por hash de modo que la manipulación es detectable, y los 30 presets de swarm fueron reauditados — un entregable que ninguna herramienta concedida puede calcular ahora se declara como tal en lugar de inventarse. -
2026-08-05 🔭 Tenencias institucionales, ETF look-through, mercados de predicción, papers de investigación: cuatro herramientas de datos de solo lectura, todas sobre fuentes públicas gratuitas — libros SEC 13F con diferencias de posición trimestre a trimestre; componentes de ETF en distintos mercados (un tracker del CSI-300 se resuelve en 342 posiciones que cubren el 98.7% de los activos netos, no el top diez trimestral); contratos de eventos como probabilidad implícita etiquetada; y búsqueda en arXiv/OpenAlex que marca lo que una fuente no afirma en lugar de inferirlo. Además, cinco plantillas de investigación programada, seis comandos institucionales (
/comps/dcf/attrib/memo/earnings/screen), lentes de inversor como skill independiente, y un núcleo de agente que rastrea cada número hasta la herramienta que lo produjo. -
2026-08-04 🔧 Pasada de corrección: fundamentales, precios de acciones A, resultados sobredimensionados: los períodos de reporte de la SEC ahora se indexan por su intervalo
(start, end)— un 10-Q presenta el trimestre real y el marco año-hasta-la-fecha bajo la misma fecha de cierre y período fiscal, así queperiod="annual"venía devolviendo un único trimestre para AAPL FY2018–2020 (una subestimación de 4.2×) y cada ranura de Q4 fiscal en una serie trimestral llevaba la cifra del año completo;get_fundamentals("AAPL.US")ya no respondeok:truecon un panel completamente nulo. Los precios de acciones A de Tushare ahora están ajustados por eventos corporativos tanto en el factor bench como en los backtests — una rentabilidad bruta de cierre a cierre a través de una fecha ex-dividendo se desviaba hasta 47 puntos porcentuales (300750.SZ, 2023-04-26) — y el benchmark del CSI300 enmascara cada fecha según su composición de índice vigente en ese momento (point-in-time). Los backtests compuestos entre mercados rechazan un conjunto de códigos en múltiples divisas en lugar de sumar CNY, USD y KRW en una sola curva de equity; las patas de opciones se marcan a la volatilidad con la que se abrieron, eliminando un P&L de día cero fabricado de hasta +93% de la prima; los resultados de herramientas sobredimensionados se paginan por registro completo con un total explícito en lugar de cortarse en medio del JSON; ycalc_metricsreporta el tracking error y la beta contra el benchmark. -
2026-08-03 ⏰ Investigación programada con reconocimiento de zona horaria + desbloqueo del cribado de acciones: los trabajos programados ahora aceptan un
timezoneIANA opcional y evalúan el cron según el reloj de esa zona, de modo que una cadencia sobrevive al horario de verano — se omite un hueco de adelanto de reloj y un instante ambiguo de retraso de reloj se ejecuta una sola vez — mientras que los campos de cron ganan listas separadas por comas y rangos (1,3-5), los trabajos sin zona horaria mantienen la semántica UTC, y la web UI gana una página Programadas en los cinco idiomas donde antes no había ninguna superficie de programación (#954, cierra #953, gracias @ngoanpv). Una solicitud de cribado ya no llega a un callejón sin salida: una lista corta de muchos candidatos cuenta como una respuesta en lugar de una resolución estancada y se retira una vez que se bloquea un candidato, y la validación de precios deja de leer dígitos de ticker, fechas localizadas, cantidades de acciones y costes de posición como precios cotizados — aunque sigue rechazando cualquier cotización fuera de la evidencia OHLC registrada (cierra #955). La memoria del agente también obtiene coincidencia exacta por ancla de índice y un límite de resultados respetado (#956, #957, gracias @santhreal). -
2026-08-02 🧠 Descubrimiento de modelos en vivo, identidad de runtime veraz, y una actualización de dependencias verificada: Settings ahora descubre a demanda los modelos del proveedor configurado con códigos de advertencia estables y controles en cinco idiomas, mientras que cada respuesta registra y recarga la identidad inmutable de proveedor/modelo/razonamiento que realmente la sirvió — que se limpia de forma segura cuando cambian las sesiones (#924, gracias @QCYTSN). Nueve actualizaciones de Python ancladas por hash más
jsdom/postcsstambién se incorporaron con imports de versión exacta, 330 tests focalizados, el build de producción, 373 tests de frontend, el CI completo demain, y el Dependency Graph en verde (#949, #948); el salto disruptivo a MCP 2.0 permanece sin fusionar a la espera de una migración completa de lock/runtime (#950). -
2026-08-01 🧮 Analítica de estrategias de opciones + sentimiento de mercado + investigación auditable USD-M: un nuevo flujo de payoff de opciones calcula analíticamente los extremos de P&L al vencimiento, los breakevens exactos — incluyendo intervalos continuos de P&L cero —, las comisiones de entrada alineadas con el motor, y escenarios de spot × IV a través de Agent y MCP (#946, reconstruido a partir de #883, gracias @he-yufeng). La herramienta de solo lectura
sentimentpuntúa texto arbitrario localmente y recupera el Fear & Greed Index de cripto sin necesitar API key (#939, gracias @Robin1987China). Los backtests estrictos USD-M ahora persisten eventos ordenados de ejecución, funding, riesgo y liquidación además de un resumen de fidelidad, a la vez que rechazan intervalos 100× no soportados (#936, gracias @honginp). Las mejoras de fiabilidad también garantizan que la resolución de símbolo y venue preceda a las llamadas de datos de mercado, que los precios cotizados finales se verifiquen contra la evidencia OHLC registrada, que la investigación programada reintente fallos transitorios, y que los resultados anidados de MCP se serialicen correctamente. -
2026-07-31 🔧 Ciclo de vida de liquidación USD-M + indicadores técnicos + directorios de estado por usuario: el modo opcional
perpetual_strictliquida el funding histórico antes de las ejecuciones y ejecuta los incumplimientos de margen aislado/cruzado como liquidaciones reales (#903, gracias @honginp). Una herramienta de solo lecturatechnical_indicatorscalcula RSI/MACD/Bollinger/SMA/EMA a través de los loaders existentes (#921, refs #920, gracias @Robin1987China). Las sesiones, ejecuciones, ejecuciones de swarm y subidas ahora residen bajo~/.vibe-trading(reubicable víaVIBE_TRADING_HOME) con una migración automática de una sola vez (#925, cierra #904, gracias @MuggleJinx). Además, un lote de diez correcciones —.SSde Yahoo clasificado como acción A, códigos de acciones A en formato simple/con prefijo, pares de cripto delimitados por barra, guardas denan/inf(#919, #926–#935, gracias @santhreal). -
2026-07-30 🎨 Web UI reconstruida + mercado de Corea (KRX) + un puente a OpenBB Workspace: la web UI recibe su renovación de minimalismo guiado — sin parpadeo en el primer frame, un objeto de actividad duradero por turno con un susurro de razonamiento en vivo y un rastro de herramientas resistente a recargas, títulos de sesión escritos por el LLM, paridad completa en cinco idiomas. La renta variable de Corea (KRX: KOSPI/KOSDAQ) se convierte en el noveno motor de backtest — banda de ±30% en tiempo de ejecución, solo largo, impuesto de transacción del 0.20% de 2026, loader opcional
pykrx(#693, gracias @JungHoonGhae) — más un puente a OpenBB Workspace (#817, gracias @shugaoye) y una herramienta de solo lectura de snapshot de Taiwán (#848, gracias @TSENGCHIENFENG). Corrección: las bandas de precio diarias se evalúan en el momento de la ejecución, no a partir del cierre de la barra de decisión; una sesión ejecuta un intento a la vez (HTTP 409) y una detención por parte del usuario es su propio estado terminal (#676, gracias @tyj147454413-cmd). Además, trazas duraderas (#662), resultados de herramientas con secretos depurados (#675), argumentos de herramientas con fallo cerrado (#913/#911, gracias @santhreal),reasoning_effortdirecto de OpenAI (#755, gracias @1anter), y guardas numéricas a través del risk x-ray / edge density / motor de opciones (#909/#908/#907). -
2026-07-29 🔧 Retornos seguros ante gaps + modelado de riesgo de liquidación + un risk x-ray en cada ejecución:
bar_returnsya no borra el movimiento real a través de una suspensión de cotización más larga que la ventana de forward-fill — el movimiento de reanudación se registraba silenciosamente como 0, subestimando la volatilidad e inflando el Sharpe — y un precio previoinfya no puede leerse como un limpio −100% (#895, gracias @darkknight4563). La anualización ahora cubre las 24 fuentes de datos en todos los intervalos, con un test de cobertura que hace fallar el CI cuando un loader llega sin entradas (#891, cierra #884, gracias @Robin1987China). La investigación de perpetuos USD-M gana una evaluación determinista de liquidación de margen aislado y cruzado (#889, gracias @honginp), y cada backtest de portafolio ahora emite artefactos de risk x-ray (risk_xray.json/.md) con métricas principales de concentración/volatilidad/drawdown (#900, gracias @he-yufeng). La CLIconnectorahora carga~/.vibe-trading/.env, así que las credenciales de broker con origen en variables de entorno vuelven a resolverse (#902, cierra #901, gracias @MuggleJinx). Además, divisiones de mensajes de canal que preservan la sangría y parseo de frontmatter de skills al final del archivo (EOF) (#867/#861, gracias @santhreal). -
2026-07-28 🔧 Desbloqueo de los modelos Claude de próxima generación + retornos seguros ante el signo: los modelos Claude que dejan obsoleto el campo
temperature(opus-4-7, opus-5, sonnet-5) ya funcionan — el adaptador descarta el campo cuando la API lo rechaza, reintenta una vez, y recuerda el modelo, así que no se necesita un parche por cada lanzamiento (#890, cierra #856, gracias @yagnikpipaliya). Elvibe-trading runno interactivo ahora inyecta un id de sesión de host: las herramientas de objetivo de investigación antes fallaban en cada llamada mientras la ejecución seguía reportando éxito (#885). Los retornos de comprar y mantener (buy-and-hold) son seguros ante el signo — un cierre previo cercano a cero ya no hace explotar el benchmark compuesto, y un cierre exactamente cero ya no produceinf/nan(#872, gracias @darkknight4563). El frontend pasa a Node 22 + React Router 8, resolviendo un aviso de severidad alta. -
2026-07-27 🔧 Integridad de la correlación + reparación de exportación a vn.py 4.0 + un lote de codificación: la matriz de correlación móvil ya no rellena hacia adelante (forward-fill) los cierres faltantes — una sesión suspendida se puntuaba como un retorno fabricado del 0% frente al movimiento real del par, distorsionando la matriz (#873, gracias @ddy4633). La skill de exportación a vn.py se repara para el layout de vn.py 4.x, donde
vnpy.app.cta_strategyya no existe upstream — las plantillas ahora importan desdevnpy_ctastrategy(#869, gracias @y85998607). Además, un lote de seis correcciones: decodificación de BOM UTF-16 en el lector de documentos y en los CSV de diario de operaciones, símbolos de divisa eliminados antes de la coerción numérica, símbolos con estiloBTCUSDTinferidos como cripto, intervalos en minúscula1h/1danualizados correctamente, y caracteres CJK preservados en los slugs de directorio de skills (#862, #863, #864, #865, #866, #868, gracias @santhreal). -
2026-07-26 🔒 Lock de dependencias + transparencia del universo: la instalación anclada por hash de Docker vuelve a funcionar, con una nueva comprobación de lock en el CI (#858, cierra #847).
alpha benchahora revela las fuentes, los recuentos, los fallbacks degradados y el sesgo de supervivencia del CSI300/SP500 (#859, cierra #845). También se actualizaron las Actions y cinco dependencias del frontend (#850–#852). -
2026-07-25 🔧 Realismo de perpetuos + corrección de un crash de MCP + un lote de correcciones: los perpetuos USD-M ganan contratos de estado de margen (#798, gracias @honginp) y el motor ahora consume tasas de funding históricas en lugar de obtenerlas e ignorarlas (#819, gracias @g0rdonL). Los resultados de dataclass de MCP ya no fallan por un falso
Circular reference detected(#849, gracias @Echoandelementwebsites), y la CLI/HTML dealpha benchpropagan la divulgación de supervivencia_meta(#841, cierra #797, gracias @AmirF194). Además, 12 correcciones a través de diarios, conectores y canales (#799–#810, gracias @santhreal), y una etiqueta de cuenta real en los balances de la CLI (#843, cierra #846, gracias @Robin1987China). -
2026-07-24 🔀 Memory Tier 2, restricciones componibles del optimizador + una pasada de manejo de intervalos: la memoria persistente gana organización estructural Tier 2 (#815, gracias @shadowinlife), y los optimizadores de backtest aceptan restricciones de peso componibles (#818, gracias @he-yufeng). Corrección: el validador de barras diarias puede optar por permitir precios no positivos — abriendo en barras negativas mientras sigue rechazando el cero (#816, cierra #571, gracias @darkknight4563). Además, una pasada de normalización de intervalos de 19 PR en los loaders: los alias en minúscula
1h/4h/1d/1wse aceptan en todas partes, los intervalos no soportados ahora fallan rápido en lugar de devolver silenciosamente barras diarias,4Hde Yahoo se mapea a1h, y MT5 acepta1W/1M(#812–#838, gracias @santhreal), una corrección de diario de operaciones para fechas de número de serie de Excel de Eastmoney (#811, gracias @santhreal), y una corrección de ancla de navegación del README (#840, gracias @dvirarad). -
2026-07-23 🔧 Pasada de fiabilidad + alpha-bench estricto expuesto + ciclo de vida de memoria opcional: un lote de 22 PR de contribuidores. Una amplia pasada de fiabilidad corrige el manejo de timeframes de punta a punta — yfinance
1M→mensual (no minuto), CCXT1W/1M, akshare/india-broker rechazando intervalos no soportados en lugar de devolver silenciosamente barras diarias, y los conectores Tiger/Alpaca/OKX/Shoonya/Longbridge manteniendo1H/4Hcomo barras horarias — además de normalización de fechas Excel en el diario de operaciones (floatYYYYMMDDde eastmoney, fechas de número de serie de Futu/Tonghuashun),report_auditcon JSON finito, validación deholding_daysen blanco, y bordes de tablas markdown en Feishu/CLI (#778–#794, gracias @santhreal).trading_historyde MT5 ahora convierte los escalares de numpy de modo que la serialización JSON ya no muere conint64(#776, cierra #774, gracias @shadowinlife), y los fundamentales PIT deduplican filas reformuladas y evitan que el snapshot retroceda a un período fiscal más antiguo ante una reformulación tardía (#772, cierra #771, gracias @klmtseng). Novedad:alpha bench --strictfinalmente conecta la puerta estricta de control aleatorio de mismo universo + OOS que había quedado inalcanzable desde 0.1.9 (#796, cierra #773, gracias @he-yufeng), un ciclo de vida de memoria opcional (puntuación de calidad, decaimiento de Ebbinghaus, GC solo de archivado — todo desactivado por defecto) (#733, cierra #732, gracias @shadowinlife), y artefactos de notas de rebalanceo de backtest + métricas de turnover (#795, gracias @he-yufeng). -
2026-07-22 🚀 Se lanza v0.1.12 (Notas de la versión,
pip install -U vibe-trading-ai): la línea de tiempo de regímenes de correlación añade un endpointGET /correlation/regime+ una franja opcional en la pestaña Correlation — la edge density pasa por una máquina de estados de histéresis causal que marca episodios de mercado FUSED, un contexto de riesgo descriptivo y no una señal (#756, cierra #719, gracias @ebujinovch). La resolución del endpoint del proveedor ahora recae en la URL base canónica de cada proveedor y maneja con elegancia los endpoints que no son SSE, corrigiendo el proveedor nativo zai en glm-5.1 (#758). Además, una pasada de fiabilidad de JSON estricto / números finitos a través de métricas, factores, patrones, sesión y diario (#761–#770, gracias @santhreal) y un desacople del bracket de mantenimiento de Binance que mantiene los backtests-PERPsin necesidad de credenciales (#757, gracias @honginp). Consolida ~90 correcciones desde 0.1.11. -
2026-07-21 🔧 Completitud de los loaders de datos + una pasada de correcciones de fiabilidad: los resultados parciales de datos de mercado ahora completan los símbolos faltantes a través de la cadena de fallback y fallan de forma cerrada en lugar de reducir silenciosamente el universo del backtest (#689, cierra #681, gracias @xkam7ar), y las barras de OKX usan el endpoint
history-candlescon reintento por límite de tasa para backfills profundos (#644, gracias @tyj147454413-cmd). Además, una pasada de correcciones: la guarda de red de MCP acepta hosts IPv6 / con variantes de mayúsculas (#750, gracias @Robin1987China), los parsers de diario de operaciones omiten filas de símbolo en blanco/NaN (#749, gracias @Robin1987China), la Shadow Account omite la puerta de hora de entrada minada en barras diarias (#748, gracias @Robin1987China), y los endpoints regionales de la API de MiniMax son seleccionables (#731, gracias @octo-patch). -
2026-07-20 🔀 Proveedores, MetaTrader 5, y una pasada de fiabilidad: la Anthropic Messages API nativa (extra opcional
[anthropic], #695, gracias @jelech), SiliconFlow (#565, gracias @UNHNQ), y iFlytek Spark (#537, gracias @FenjuFu) se unen al listado de proveedores, y llega un conector de broker MetaTrader 5 (Exness) + una fuente de datos forex/metalesmt5(conectores de broker → 12, #481, gracias @StaniellG). Además, un motor OCRllm-visionagnóstico de proveedor (#548, gracias @shadowinlife), una vectorización de alineación de señales 80× (#698, gracias @shadowinlife), datos históricos de funding/bracket de Binance USD-M (#716, gracias @honginp), una caché de descubrimiento MCP para swarm (#704), y una consolidación de fiabilidad que cierra 13 issues de SSE/sesión/CLI/swarm/scheduler (#584, gracias @xkam7ar). Corrección: el cierre parcial de opciones ahora respeta la cantidad solicitada en lugar de aplanar el lote completo (#577), resolución centralizada de credenciales de proveedor (#563), manejo de cancelación en cola (#641), una condición de carrera de streaming-DOM en el frontend (#717, gracias @Marnie0415), y los renderers de la CLI del connector (#726, gracias @nareshkps). -
2026-07-19 🔧 Artículos reales de noticias bursátiles de EE. UU./HK + corrección de análisis factorial de MCP + una pasada de robustez: la herramienta de noticias bursátiles ahora devuelve artículos reales de Yahoo Finance (título/url/fuente/fecha de publicación/fragmento) para tickers de EE. UU. y HK en lugar de coincidencias de instrumentos relacionados, todavía enrutados a través del cliente congelado con limitación de IP (#730, gracias @yxhuang). La herramienta MCP
factor_analysisse realinea con el contrato CSV real de la herramienta registrada, así que las llamadas ya no mueren porKeyErrorantes de ejecutarse (#715, cierra #635, gracias @Robin1987China). Además, una pasada de robustez: toda la serie Kimi K (k2/k3/…/for-coding) ahora fuerza automáticamentetemperature=1como exige la API (#701, gracias @sambazhu), ysplit_message, los rangos de páginas de PDF, y los filtros de fecha del diario de operaciones fallan rápido ante entradas degeneradas o invertidas en lugar de colgarse o devolver silenciosamente nada (#727–#729, gracias @santhreal). -
2026-07-18 🔧 Fallback de cripto en Binance + correcciones de ejecución paralela y de corrección: un loader de Binance se une a la cadena de fallback de datos históricos de cripto (#643, gracias @tyj147454413-cmd), y el connector de IBKR pasa a un pool de conexiones thread-local con cotizaciones snapshot, corrigiendo bloqueos bajo ejecuciones paralelas de agentes (#636, gracias @MikeCer). Además, una pasada de corrección: el análisis factorial rechaza
n_groupsno positivos, los rangos de período invertidos y las ventanas de detección no positivas fallan rápido, se maneja unDatetimeIndexsin nombre en la matriz de correlación, se aceptan los alias de columna nav/value deequity.csv, y los códigos de acciones A vacíos ya no se coaccionan a000000.SZ(#709–#714, gracias @santhreal). Un factor de estabilidad de reconexión de correlación se une al zoo académico (#705, gracias @ebujinovch), el zoo fundamental queda en lista blanca para el análisis factorial (#707, gracias @sambazhu), el estado de ejecución persistido ahora es durable mediante fsync (#645, gracias @tyj147454413-cmd), y el extradevinstala el toolchain documentado de Black/Ruff (#634, gracias @xkam7ar). -
2026-07-17 🧩 Skill de régimen de correlación + una amplia pasada de corrección de backtest / datos / seguridad en vivo: una nueva skill de detección de régimen de correlación (skills incluidas → 88, #557, gracias @ebujinovch), una tarjeta de conexión de runtime de Longbridge (#569, gracias @fanfpy), y presets de swarm definidos por el usuario cargados desde
~/.vibe-trading(#570, gracias @darkknight4563). Además, endurecimiento a través de toda la pila: correcciones de corrupción silenciosa de datos en los loaders de Futu / Tencent / CCXT / mootdx, guardas de look-ahead-bias y de OOS estricto en el factor bench y en la Shadow Account, seguridad en el trading en vivo (límites de exposición firmados, límites diarios de órdenes atómicos, confirmaciones de mandato con consentimiento previo, estado en vivo con fallo cerrado), y mejoras de diario / presupuesto de QVeris / swarm / puerta de CI (#552, gracias @xor-xe; buena parte del trabajo de corrección de @xkam7ar). -
2026-07-16 🔧 Lock de dependencias reparado + corrección al guardar configuración en Windows: el lock de runtime verificado por hash se regenera de modo que
pip install --require-hashesde Docker vuelve a resolverse limpiamente, corrigiendo los pins incompatibles decaio/pydantic-core/websockets(#564, cierra #558, gracias @tianrking). Guardar la configuración del LLM del Agent desde la Web UI ya no devuelve HTTP 500 en Windows — el endurecimientoos.fchmod, exclusivo de POSIX, ahora está protegido por plataforma, con un test de regresión para plataformas sinfchmod(#561, gracias @CRui5in). -
2026-07-15 🧮 Corrección de backtest + núcleo de Portfolio Studio: una pasada de convergencia de 10 PR hizo que los rebalanceos fueran causales e independientes del orden, cobró los costes de cierre terminal, reportó el turnover derivado de las ejecuciones, aplicó los límites de exposición, y mantuvo la salida de validación finita y estricta (#530/#531/#532/#540). Los gráficos ahora reutilizan la fuente de datos real de la ejecución, las consultas de mercado repetibles ya no se descartan, y las cargas de
.envrefrescan la configuración en caché (#535/#544/#554). Se cierran Portfolio Studio #456 y el bug de configuración #541; también se cierran las correcciones de proveedor #528/#529. Gracias @YZY0108, @santhreal, @Robin1987China, @xkam7ar, @Marnie0415, y @marichu99. -
2026-07-14 🌉 Datos de mercado de Longbridge + transporte MCP moderno + fiabilidad de proveedores: Longbridge se une a la capa de fallback de datos históricos con credenciales controladas por clave, división por ventana de fechas, comprobaciones estrictas de completitud, y una dependencia opcional del SDK; cuatro herramientas de flujo del mercado chino ganan fallbacks verificados de Tushare, y un equity final negativo ya no hace fallar las métricas de backtest. El servidor MCP ahora soporta Streamable HTTP,
write_filerecupera de forma segura argumentos de ruta con alias o faltantes, las actualizaciones de hipótesis rechazan campos no soportados, y las solicitudes de Correlation están autenticadas. NVIDIA NIM ahora es un proveedor de primera clase tanto en Web Settings como en ambos flujos de onboarding de la CLI, con un User-Agent de compatibilidad versionado para abordar el 403 reportado; Web Settings ahora escribe en el~/.vibe-trading/.envcanónico, migra la configuración heredada, y reporta con claridad los fallos de permisos, corrigiendo el 500 de DeepSeek al guardar (#534, cierra #516/#524; #528/#529). Gracias @fanfpy, @asahikiko, @santhreal, @sTunnaSu, @abhishekjaisinghani, @huangcheng, @ShiroKSH, @Meru143, @DIEGOD79, y @not-knope por el código, los reportes y el diagnóstico. -
2026-07-13 🔒 Endurecimiento de seguridad: se cierran los 10 hallazgos de la auditoría externa + lote de contribuidores: todos los hallazgos de la auditoría de seguridad externa del 2026-07-10 (issue #476, discusión #468) ya están resueltos en
main— reconstrucción multi-etapa de Docker con imágenes ancladas por digest, un sandbox de backtest endurecido con AST que bloquea network/subprocess/eval/os.environ/unsafe-open (incluso dentro de cuerpos de función anidados), tickets de autenticación SSE de un solo uso y de corta duración, Compose endurecido (rootfs de solo lectura, capabilities eliminadas, límites de recursos), autenticación + limitación de tasa en/correlation, cabeceras de seguridad, dependencias ancladas por hash, y más. También se fusionó: modo TAP opcional para el aislamiento de claves de Alpaca (#377, gracias @0xZKnw), el turnover de portafolio realizado expuesto en las métricas de backtest (#478, gracias @Robin1987China), un factor académico de betting-against-beta de Frazzini-Pedersen (Alpha Zoo → 461, #480, gracias @YogeshModi24), una corrección de look-ahead-bias en los 5 optimizadores de portafolio (#487, gracias @YZY0108), y dos correcciones de preflight/configuración de proveedor (#479/#484, cierra #477/#482, gracias @ananaymital/@Bortlesboat). -
2026-07-12 🧪 Strategy Development Manager + lote de correcciones de contribuidores: la nueva skill
strategy-dev-manager(#87) convierte papers académicos e investigación de brokers en factores/estrategias registrados con un almacén persistente de artefactos y monitoreo automatizado de decaimiento de IC/Sharpe —sdm_register/sdm_status/sdm_decay_scangestionan un ciclo de vida activo → en monitoreo → decaído → deshabilitado sobre~/.vibe-trading/(#457, cierra #455, gracias @shadowinlife). También se fusionó: la pestaña Correlation acepta tickers simples (AAPL,SPY) y recorre toda la cadena de fallback de loaders (#472, cierra #471, gracias @yxhuang), el loaderlocalrespeta los intervalos solicitados mediante remuestreo de OHLCV (#467, gracias @Shizoqua), el historial de perpetuos USD-M de Binance llega con enrutamiento explícito deBTC-USDT-PERP+ separación de precio de ejecución/marca como la primera porción de #462 (#470, gracias @honginp), los imports de transporte de FastMCP ahora funcionan en ambos layouts de módulo (#469, gracias @roberttidball), y Requesty está disponible como proveedor de gateway LLM compatible con OpenAI (#474, gracias @Thibaultjaigu). -
2026-07-11 🚀 Se lanza v0.1.11 (
pip install -U vibe-trading-ai): consolida tres semanas desde 0.1.10 — backtesting de primera clase para acciones indias (NSE/BSE), la capa de factores fundamentales segura ante PIT (Alpha Zoo → 460), el runtime de canales IM con 16 adaptadores, investigación programada de punta a punta, datos premium opcionales de QVeris, y el lote de contribuidores de hoy: un optimizador consciente del turnover (#466, gracias @Robin1987China), una herramienta de visiónanalyze_image+ emparejamiento de DM de NapCat + la corrección de lectura de medios IM (#464/#463/#465, gracias @fei-moss), serialización Decimal de Longbridge (#459, gracias @fanfpy), y guardas de recuento del manifiesto empaquetado (#461, gracias @asahikiko). Detalles completos: CHANGELOG · notas de la versión. -
2026-07-10 🇮🇳 Soporte para acciones indias (NSE/BSE) + configuración de entorno centralizada: llega un
IndiaEquityEnginededicado — liquidación T+1, bandas de circuito, y una pila de costes STT/stamp/exchange/SEBI/GST gobernada por configuración — con enrutamiento de símbolos.NS/.BO, un puente de datos opcional de solo lectura para Shoonya/Dhan, y 255 factores alpha101/qlib158 incorporados al nuevo universoequity_in(#305, gracias @muku314115). Las variables de entorno ahora fluyen a través de un único esquema PydanticEnvConfigcon una puerta de CI basada en AST contra la futura proliferación deos.getenv(#440, cierra #438, gracias @shadowinlife). Además: un diálogo de segunda confirmación antes de confirmar un mandato de trading real más toasts de error unificados (#453, gracias @wison1717-maker), tests de rutas de investigación programada (#452, gracias @Robin1987China), y los modelos de razonamiento de GLM ya no pierden su stream de razonamiento en el proveedor zhipu (#458). -
2026-07-09 🧯 Desbloqueo del arranque de Docker + lote de contribuidores de proveedores/CLI: el arranque de Docker/servidor ya no falla cuando la iteración de rutas de FastAPI encuentra una entrada tipo router incluido sin
path(#450, gracias @Penn-Live). También incorporamos las correcciones rápidas en cola de contribuidores: las firmas defetch()de los loaders ahora coinciden con el protocolo en OKX / Tushare / yfinance (#437, gracias @shadowinlife), el prompt de reanudación de la CLI preserva el primer mensaje del usuario (#448, cierra #447, gracias @morluto), el OAuth de Codex usa por defectoopenai-codex/gpt-5.4(#446, gracias @morluto), Kimi for Coding está disponible como un proveedor distinto (#435, gracias @yxhuang), los mapeos de proveedor de opencode están conectados (#444, gracias @imsankz), y los bloques de código de referencia de Tushare ahora dicenpythonen lugar depyhton(#449, gracias @flash1234pku). La validación incluyó tests focalizados de servidor/CLI/proveedor/loader además de un build de Docker y un smoke test de/health. -
2026-07-08 💎 Capa de factores fundamentales (Fase 1) + datos premium opcionales de QVeris + día de mantenimiento: los fundamentales de la SEC seguros ante PIT ahora fluyen a los paneles de factores diarios — columnas de panel
fund:*, anclaje por fecha de presentación con protección ante reformulaciones y marcos YTD, y 4 nuevos factores de calidad/valor (el registro ya tiene 460 alphas). El enrutamiento de datos gana una vía premium opcional: las 18 fuentes gratuitas siguen siendo la opción por defecto, mientras que QVeris desbloquea más de 63 proveedores vía Settings → QVeris ovibe-trading data mode paid(ver la sección de QVeris más abajo). Además: se completa la modularización deapi_server(1,103 → 371 líneas, #424 cerrando #331, gracias @shadowinlife), elvalidation.jsondel backtest ya no requiere un directorio de artefactos preexistente (#429, gracias @isaveall), errores de--swarm-runmás claros (#428, gracias @isaveall), y revertimos la pila de gobernanza que rompía los chats de sesión (#433, gracias @yxhuang por el diagnóstico preciso). -
2026-07-07 ✅ Lote de PR de contribuidores: se fusionó el trabajo en cola de contribuidores para la configuración de timeout de canales IM (#413, gracias @SyntaxSawdust), las vistas previas sociales de Alpha Library y el tutorial para principiantes (#396, #393, gracias @kadaliao), skills / herramientas / presets de comité de value investing (#407, gracias @sambazhu), el manejo de campos de orden de tamaño cero en
trading_place_order(#417, gracias @irfanallana-oss), y timestamps UTC con reconocimiento de zona horaria en las rutas de sesión/API (#397, gracias @mustafakamal88). -
2026-07-06 🧭 Endurecimiento del preflight, particiones de API, y fallback de búsqueda para CN: el preflight de proveedor ya no sigue redirecciones (#404, cierra #402, gracias @SyntaxSawdust), las rutas de API restantes se movieron a módulos focalizados (#387, sustituyendo a #383-#386, gracias @shadowinlife), y los fallbacks de búsqueda web para CN ahora incluyen Alibaba Cloud IQS (#408, gracias @sambazhu). La limpieza de mantenimiento añadió tests de fallback sin red y limpieza de espacios en blanco al final de archivo (EOF) (fbac74f); el CI de
mainestá en verde (ejecución 28780619018). -
2026-07-05 ✅ Cola de PR de contribuidores cerrada + baseline de Windows en verde: se fusionaron los cuatro PR no-draft seleccionados para la pasada de mantenimiento de hoy. Las extracciones por lote de mootdx de acciones A ahora dejan propagar
KeyboardInterrupt/SystemExiten lugar de que unexceptdesnudo los engulla (#399, cierra #398, gracias @shadowinlife). La partición de rutas de Settings y los pisos de dependencia parcheados ya están fusionados bajo sus PR de contribuidores originales (#382, #390, gracias @shadowinlife y @aeonframework). La compatibilidad de baseline de Windows ahora aísla las cachés de loaders, hace que las aserciones de caché de OAuth sean conscientes de la plataforma, omite un test mock exclusivo de fork en Windows, y evita los proxies para los fixtures de loopback de MCP (#401, gracias @Elfsa-Miranda). Validación:4701 passed, 47 skipped. -
2026-07-04 🧩 Particiones de rutas de API, documentación de tutorial, y pisos de dependencia: las rutas de canales IM y de Settings se movieron fuera de
api_server.pyhaciasrc/api/channels_routes.pyysrc/api/settings_routes.py, continuando la vía acotada de modularización de #331 a partir del trabajo de contribuidores (#379, #382, gracias @shadowinlife). El wiki ganó un tutorial para principiantes en chino para lectores sin formación financiera (#393, gracias @kadaliao), y los pisos de dependencia ahora mantienen a Pillow / LangChain / LangGraph en la vía parcheada instalable (#390, gracias @aeonframework). -
2026-07-04 🧹 Limpieza de timestamps UTC para rutas de sesión y API: se reforzó la corrección de timestamps de #395 para que los timestamps de sesión, objetivo, canal y API ahora emitan valores UTC con zona horaria explícita en formato ISO.
-
2026-07-03 🛡️ Actualización de Robinhood MCP + modularización de API + protección SSRF: Robinhood Agentic Trading ahora usa los nombres de herramientas MCP actuales en las lecturas genéricas, la plomería del live-runner, las semillas de solo lectura por defecto y las pruebas de la puerta de mandato, mientras que el arranque interactivo respeta el mismo orden de búsqueda de
.envque el cargador de proveedores (~/.vibe-trading/.env→agent/.env→$CWD/.env) (#391, cierra #381 y #380). Las rutas del sistema (/health,/correlation,/system/shutdown,/skills,/api) se movieron asrc/api/system_routes.pycomo el siguiente tramo acotado de modularización de la API (#378, gracias @shadowinlife). Las defensas SSRF de medios de canal ahora rechazan objetivos CGNAT/mesh/no globales, y los redireccionamientos de medios de QQ hacia destinos internos se bloquean antes de la obtención (#389, gracias @hobostay). -
2026-07-02 ⚡ Aceleración de factores + límites de runtime más seguros: los operadores de factores rolling en caliente ahora usan las rutas rápidas de
bottleneck/NumPy, el paralelismo del alpha bench evita cargas de trabajo repetidas sobre paneles grandes, y las matemáticas base de equity cuentan con cobertura de regresión (#376, cierra #339, trabajo original de #342 por @shadowinlife). Las rutas de subida y de informes Shadow se sacaron del monolíticoapi_server.pycomo el primer tramo acotado de modularización de la API, mientras #331 permanece abierto (#375, basado en #358, gracias @shadowinlife). Los backtests generados ahora heredan solo un entorno de subproceso en lista blanca en lugar de la superficie completa de secretos del proceso padre (#374, cierra #332), y los canales de mensajería instantánea ganaron el restablecimiento de sesión/newy comandos de emparejamiento insensibles a mayúsculas/minúsculas (#372, cierra #371, gracias @shadowinlife). -
2026-07-01 🧹 Refinamiento de seguridad + limpieza del tracker: se reforzaron los valores por defecto de desarrollo de API/Docker/frontend, se estabilizaron el canal de Settings y los bordes de
zh-CN, se resolvieron alertas de dependencias/CSP del frontend y se cerraron elementos obsoletos del tracker de WhatsApp y paper-trading (#338, #351, #349, #365, #367, #350, #335, #283). -
2026-06-30 💬 Runtime de canales de mensajería instantánea para entrega de investigación: Vibe-Trading ahora puede conectar el mismo runtime de sesión de agente a 16 adaptadores de mensajería integrados — WebSocket, Telegram, Slack, Discord, Matrix, WhatsApp, Signal, QQ/NapCat, WeChat/WeCom, Feishu/Lark, DingTalk, Teams, correo electrónico y Mochat. La CLI (
vibe-trading channels status/start/stop/login/pairing), REST (/channels/status,/channels/start,/channels/stop,/channels/pairing/command) y el panel de Settings de la Web UI exponen estado, sugerencias de recuperación, arranque/detención y emparejamiento de remitentes; los adaptadores respaldados por SDK permanecen detrás de extras comovibe-trading-ai[telegram]ovibe-trading-ai[channels](#341). -
2026-06-29 🛡️ Seguridad de asesoría en vivo + conector de solo lectura de Trading 212 + correcciones de Windows/Gemini: las protecciones de órdenes en vivo ahora cuentan con una
PreTradeAdvisoryInterfaceopcional y agnóstica de broker que registra revisiones de asesoría sin eludir la puerta de mandato, el interruptor de emergencia ni el registro de auditoría (#328, cierra #317, gracias @shadowinlife). Trading 212 se incorpora a la capa de conectores con soporte de solo lectura para cuenta, posiciones, órdenes, historial y metadatos de instrumentos;place_order/cancel_ordersiguen rechazando de forma estricta hasta que exista un límite estructural entre paper y live (#321, cierra #309, gracias @mvanhorn). El arranque en Windows evita el fallo deTimestampde pandas 3.0 mediante la restricción<3.0.0(#329, cierra #324, gracias @hannibal-lee); se verificó/corrigió enmainla reproducción del historial en formato dict dethought_signaturede Gemini (#318); los estados financieros de.USahora se enrutan a SEC EDGAR en lugar de Eastmoney (#325); y la página de aterrizaje de la Alpha Library recibió endurecimiento de caché/fecha/selector/noscript/DNS-prefetch, mientras que un CSP más estricto y mejoras de tarjetas sociales siguen en seguimiento (#323). -
2026-06-28 🧰 Configuración/desarrollo multiplataforma + endurecimiento de runtime y herramientas de archivo:
vibe-trading setupyvibe-trading devahora manejan compilaciones de TypeScript en Windows, lanzan el backend desde el cwd correcto, usan el puerto 5899 de Vite y cierran los procesos hijos de forma limpia (#292, gracias @digger-yu). El sondeo de estado del runtime ahora se degrada en lugar de fallar (#322); las claves de caché de OAuth de MCP se sanean (#313); se reforzaron los valores por defecto de OpenAI y la validación deagent.jsonde Robinhood (#319, #320, gracias @mvanhorn); y las herramientas de archivo obtuvieron raíces de lectura/escritura aisladas más pruebas de sandbox más amplias (#299, gracias @skloxo). -
2026-06-27 🧯 Resiliencia del filtro de contenido + limpieza del contrato de funciones de la cuenta espejo: las ejecuciones dirigidas por eventos y de swarm ahora omiten los rechazos individuales de moderación de contenido de LLM, advierten en las tarjetas de ejecución cuando las tasas de filtrado son altas, y reconocen los motivos de finalización de seguridad de Gemini en lugar de abortar todo un análisis (#308, cierra #307, gracias @shadowinlife). La extracción/generación de código de la cuenta espejo ahora comparte un único contrato
PRICE_FEATURESy mantiene límites de retorno de cuatro decimales, evitando la desviación entre reglas y código generado y la pérdida de precisión enprior_5d_return(#316, gracias @Robin1987China). -
2026-06-26 🎯 Entrada condicional de la cuenta espejo + enrutamiento de tushare para ETF/índice/HK: las reglas extraídas de la cuenta espejo ahora incorporan límites de RSI / retorno previo, de modo que el SignalEngine generado entra en condiciones reales (RSI dentro de rango, retorno previo dentro de rango) en lugar de replicar ciegamente la cadencia de tenencia (#314, sigue a #302, gracias @Robin1987China). El cargador de tushare también enruta ETF/LOF →
fund_daily(), índices →index_daily(), y acciones de HK →hk_daily()en lugar de llamar siempre adaily()(que devuelve vacío silenciosamente para no-acciones), con advertencias de resultado vacío/obtención parcial por símbolo (#315, cierra #310, gracias @shadowinlife). -
2026-06-25 🧪 JSON de validación estricto + contexto de agente más ligero: la validación de backtest independiente ahora normaliza los valores anidados
NaN/Infinityantes de escribirartifacts/validation.jsono la salida estándar de la CLI, de modo que los analizadores JSON estrictos ya no fallan con los payloads de validación (#306, gracias @gyx09212214-prog). El prompt del agente también deriva el número actual de fuentes de datos desde el registro del cargador, y_microcompact()ahora espera a que haya presión real de tokens en lugar de limpiar resultados de herramientas antiguos durante ejecuciones cortas (#296, cierra #282, gracias @MarkfuGod). -
2026-06-24 🎯 Contexto de precio de la cuenta espejo + UI china reactiva + corrección de autenticación LAN: la extracción de reglas de la cuenta espejo ahora ve un contexto de entrada seguro en el tiempo (PIT) —
entry_rsi14yprior_5d_returnobtenidos a través del registro del cargador a la fecha debuy_dt, con degradación elegante sin conexión/sin datos (#302, sigue a #295, gracias @Robin1987China). Los paneles principales de la Web UI ahora usan traducciones reactivas en inglés / zh-CN en gráficos, chat, Alpha Library, Correlation y Run Detail (#301, gracias @skloxo). Los despliegues remotos del mismo origen de la Web UI conAPI_AUTH_KEYpueden volver a publicar y subir archivos tras el endurecimiento de CSRF, mientras que los orígenes cross-site no coincidentes siguen bloqueados (#304, gracias @Hinotoi-agent). -
2026-06-23 🛡️ Endurecimiento de CSRF de la API local: una página web maliciosa ya no puede impulsar solicitudes cross-site inseguras (POST/PUT/DELETE) contra la API loopback — CORS bloquea la lectura de la respuesta pero no el efecto secundario, así que la confianza del modo de desarrollo loopback ahora aplica la protección cross-site existente a los métodos inseguros antes de otorgarla. Los métodos seguros y las subidas locales de CLI / no-navegador no se ven afectados (#293, gracias @Hinotoi-agent).
-
2026-06-22 🔧 Corrección de OAuth de autorización en vivo + corrección del titular de Alpha Zoo:
connector authorizeahora mantiene abierto el intercambio OAuth durante un inicio de sesión de broker de varios minutos (ajustable medianteVIBE_LIVE_AUTHORIZE_TIMEOUT_SECONDS) y ya no lanza un servidor de callback competidor en el reintento, de modo que el token realmente persiste (#281, cierra #259, gracias @Robin1987China). La página de Alpha Zoo ya no imprime su recuento de alphas dos veces (#287, cierra #286, gracias @digger-yu). La investigación programada también recibió documentación de uso de extremo a extremo (#288). -
2026-06-21 ⏰ Ejecutor de investigación programada + biblioteca de informes + atribución posterior al backtest: la investigación programada ahora funciona de extremo a extremo — un ejecutor en segundo plano desactivado por defecto (
VIBE_TRADING_ENABLE_SCHEDULER) dispara los trabajos de intervalo/cron vencidos a través del runtime de sesión (#278, gracias @mvanhorn, cerrando #254). Una nueva página de biblioteca de ejecuciones/reportslista, busca y filtra ejecuciones dignas de informe con enlaces a Run Detail + Compare (#224, gracias @LemonCANDY42). Y después de cada backtest el agente ahora ejecuta atribución por capas — ganadores/perdedores a nivel de operación, regresión beta, análisis de régimen de mercado, y una prueba de permutación de Monte Carlo, condicionada por la disponibilidad de datos y el enrutamiento (#280, gracias @shadowinlife). -
2026-06-20 🔬 Se cierra el bucle del Research Autopilot (fase 3) + protección de integridad OHLC del cargador + 4 alphas académicos: Research Autopilot ahora ejecuta hipótesis → motor de señales → backtest de extremo a extremo —
scaffold_signal_engineescribe un motor con contrato correcto ylink_autopilot_backtestretroalimenta las métricas de la ejecución a la hipótesis (68 herramientas) (#267). Una comprobación estructural de sanidad OHLC descarta barras corruptas (high < low, precios no positivos, mal encuadre) de forma centralizada en el límite del cargador, protegiendo cada fuente de datos (#274, gracias @Shizoqua). Y la familia de alphas académicos crece de 6 a 10 — reversión de Jegadeesh, máximo de 52 semanas de George-Hwang, iliquidez de Amihud, asimetría de Harvey-Siddique (456 factores) (#277, gracias @Robin1987China). -
2026-06-19 🚀 v0.1.10 — Capa de datos global: las fuentes de datos de mercado crecen de 10 a 18 (gratuitas Eastmoney / Sina / Stooq / Yahoo + con clave Finnhub / Alpha Vantage / Tiingo / FMP, con respaldo ante riesgo de bloqueo) más 18 herramientas de datos de solo lectura (flujo de fondos, dragon-tiger, flujo hacia el norte, margen, operaciones en bloque, SEC EDGAR + XBRL, estados financieros, cadenas de opciones, cribado de todo el mercado…) en A-share / US / HK, todo a través de MCP. También agrupa todo lo publicado desde 0.1.9 — 10 conectores de broker,
alpha compare, la revisión general de fiabilidad de proveedores, y la caché de datos opcional.pip install -U vibe-trading-ai -
2026-06-18 🔬 Research Autopilot fase 1 + un cargador local Data Bridge, + un aviso de seguridad de Discord: las nuevas
run_research_autopilot+generate_backtest_configconectan Hipótesis → Objetivo de Investigación → backtest de extremo a extremo (ahora 50 herramientas), y un cargadorlocallee OHLCV directamente desde tus propios archivos CSV / Parquet / DuckDB (#260, #252, gracias @Robin1987China), junto con el análisis de llamadas a herramientasDSMLde DeepSeek y una ola de endurecimiento de contención de identificadores.⚠️ Seguridad: la antigua invitación de Discord de la comunidad ahora apunta a un servidor que no controlamos, que ejecuta una estafa de phishing con una falsa "verificación" de wallet de Collab.Land — eliminada en todas partes; el único Discord oficial es el servidor de HKUDS (discord.gg/6TdQnT5xcF), y nunca te pediremos que conectes una wallet. -
2026-06-17 🧩 Compatibilidad de instalación + correcciones de proveedores Opus/Kimi: la instalación base
pip install vibe-trading-aiya no arrastra la cadena de dependencias opcionalpyharmonics/ta; la detección armónica ahora vive detrás devibe-trading-ai[harmonic]mientras el detector integrado sigue disponible (#250, cierra #249). El bucle del agente también evita los mensajes de traspaso de prellenado del asistente rechazados por Opus 4.8+, y Kimi/Moonshot puede sobrescribir elUser-Agentdel cliente conMOONSHOT_USER_AGENT(#248, cierra #246 y #204); las pruebas de seguimiento ahora cubren directamente las rutas de traspaso de resultados en segundo plano y de auto-compactación (#251). -
2026-06-16 🛡️ Endurecimiento de seguridad/API + alias GLM/Zhipu: las escrituras de Settings requieren autenticación cuando está configurada (#245); las herramientas de la API con capacidad de shell requieren la habilitación explícita
VIBE_TRADING_ENABLE_SHELL_TOOLS=1(#243); el apagado local requiere autenticación cuando hay una clave de API configurada (#241); y los hosts con apariencia loopback no confiables se rechazan en lugar de tratarse como locales (#242). También se limpiaron bordes del runtime: el chat de la Web UI sincroniza los intentos completados (#236), las tarjetas de ejecución emiten JSON estricto para métricas no finitas (#238), un valor malformado deRSSHUB_TIMEOUT_S/RSSHUB_FETCH_BUDGET_Srecurre de forma segura a su valor por defecto (#240), y el respaldo de reintento de ddgs cuenta con cobertura de regresión (#239). GLM/Zhipu es ahora un alias de proveedor de primera clase con inferencia de nombre de modelo (#247, cierra #237). -
2026-06-15 🧭 Resiliencia de búsqueda web + correcciones de continuidad de ejecución en la Web UI:
web_searchya no falla cuando un solo motor está limitado por tasa — ahora consulta varios motores gratuitos sin clave en orden (DuckDuckGo, Google, Bing, Brave, Mojeek, Yahoo) con reintento/backoff, trata "sin resultados" como una respuesta vacía en lugar de un error, y devuelve un mensaje útil en lugar de un ❌ escueto cuando todos los motores están limitados (sobrescribe la lista de motores conVIBE_TRADING_SEARCH_BACKENDS) (#232, cierra #231, gracias @Ethan-sun01). En la Web UI, cambiar de página durante una ejecución ya no la congela — el chat se vuelve a suscribir a la transmisión en vivo y reproduce el progreso perdido al regresar (#234) — y el botón Detener ahora surte efecto en medio de la transmisión y entre herramientas en lugar de solo en los límites de iteración (#235), cerrando ambas mitades de #229 (gracias @kalkinj). El cargador de baostock también acepta códigos nativossh.601398/sz.000001junto con el estilo tushare601398.SH(#230, gracias @bhlt). -
2026-06-14 📊 Uso de tokens por ejecución + gráficos progresivos en Run Detail: cada ejecución del agente ahora persiste el uso de tokens reportado por el proveedor como un
llm_usage.jsona nivel de ejecución — proveedor/modelo, totales agregados y conteos por iteración — expuesto de forma aditiva en/runs/{id}, de modo que el costo en tokens de una ejecución terminada sigue siendo auditable después de que la transmisión en vivo desaparece (solo datos reportados por el proveedor; sin captura de prompt/contenido, sin estimación de precio) (#223, gracias @LemonCANDY42). La página Run Detail ya no carga por adelantado las velas de todos los símbolos: la respuesta por defecto de/runs/{id}no cambia, pero la UI ahora renderiza primero el resumen de la ejecución y carga el gráfico de cada símbolo a demanda mediante los modos opcionales?chart_payload=summary/?chart_symbol=, con estado de carga por símbolo y un control de "cargar todo con progreso" (#225, gracias @LemonCANDY42). Dos correcciones del cargador cierran el ciclo: el límite exclusivoendde yfinance ya no descarta el último día de negociación solicitado — la descarga ahora pasaend + 1 díamientras las claves de caché conservan el rango original (#226, gracias @gyx09212214-prog) — y un valor malformado deCCXT_TIMEOUT_MS/OKX_TIMEOUT_Sahora advierte y recurre a su valor por defecto en lugar de lanzar una excepción en la importación y bloquear el arranque (#227, gracias @gyx09212214-prog). -
2026-06-13 ↩️ Reanudar una sesión pasada por ID desde la CLI: la CLI interactiva ahora imprime el id de sesión al salir, con una sugerencia lista para copiar y pegar
vibe-trading resume <session-id>— de modo que localizar el rastro de una ejecución terminada ya no implica adivinar cuál carpeta bajoagent/sessions/es la más reciente por timestamp. El nuevo subcomandovibe-trading resume <session-id>reabre exactamente esa sesión y reproduce sus turnos recientes en el bucle; un id desconocido falla rápido en lugar de iniciar silenciosamente una sesión en blanco (#218, gracias @zwrong). -
2026-06-12 🩺 Revisión general de fiabilidad de proveedores — bloqueos de DeepSeek, acceso a Kimi, viveza del streaming: un conjunto de reportes de proveedores — ejecuciones de DeepSeek atascadas en "Agent is working…" (#208, gracias @XYWOX),
reached max iterationsenmascarando respuestas vacías del modelo (#203, gracias @mojianliang), la UI que nunca se recupera tras un estancamiento (#195, gracias @mafia23), y Kimi rechazando al cliente (#204, gracias @liao497) — compartían una misma raíz: cada proveedor compatible con OpenAI pasaba por un único shim que aplicaba peculiaridades de DeepSeek/Kimi/Gemini de forma global y silenciaba fallos de transmisión. El comportamiento específico de cada proveedor ahora vive en una capa de capacidades explícita — captura/reproducción de razonamiento, firmas de pensamiento de Gemini, elUser-Agentde Kimi, el cuerpo de razonamiento de OpenRouter están cada uno acotados a su propio proveedor en lugar de contaminarse entre sí. Las transmisiones que solo contienen razonamiento muestran un indicador en vivo de "Reasoning…" en lugar de silencio absoluto; un fallo de transmisión lanza unprovider_stream_errorcontextual con un reintento automático para reinicios transitorios (los 4xx deterministas fallan rápido) en lugar de recurrir silenciosamente a una llamada no transmitida más lenta; una respuesta vacía del modelo se reporta comoempty_model_responseen lugar de "max iterations"; los heartbeats de SSE ya no rompen la reproducción de reconexión; y una herramienta de solo lectura atascada expira en lugar de esconderse detrás de los heartbeats para siempre. Un nuevovibe-trading provider doctorimprime una instantánea redactada de proveedor/modelo/paquete/proxy para triaje en un solo comando de bloqueos del lado del entorno. Los usuarios de DeepSeek pueden optar por el adaptador nativo oficial conpip install "vibe-trading-ai[deepseek]", y el requisitotemperature=1de kimi-k2.x se aplica automáticamente — la ruta de Kimi está verificada de extremo a extremo contra la API en vivo (llamadas a herramientas + reproducción estricta de razonamiento multi-turno enkimi-k2.6). -
2026-06-11 🐝 Los workers del swarm ahora obtienen datos de mercado a través de la capa del cargador: una ejecución del comité de inversión sobre NVDA expuso una cadena de brechas — los workers escribían scripts ad-hoc de yfinance, confiaban en una última barra malformada (volumen presente, OHLC vacío), filtraban
NaNen JSON no estricto, y un prompt de continuación sin contexto reenrutaba al preset equivocado (#198, gracias @BillDin por un diagnóstico excepcional además de ambas correcciones). Los workers del swarm ahora obtienen una herramienta localget_market_datarespaldada por el mismo registro de cargador normalizado que MCP — JSON estricto, los flotantes no finitos se serializan comonull— conectada a cada preset de datos de mercado (21 workers en 13 presets) con una política de prompt que orienta el trabajo de OHLCV primero hacia herramientas (#199);run_swarmtoma unpreset_nameexplícito y rechaza fragmentos de continuación ambiguos en lugar de recurrir silenciosamente aequity_research_team(#200). El anclaje también se volvió más inteligente: un ticker estadounidense simple comoNVDAen un prompt de swarm se promueve aNVDA.US(con protección contra stopwords), de modo que los workers parten de precios pre-obtenidos y autorizados. La herramienta también se une al registro del agente principal — ahora 48 herramientas. Además: tus datos de Docker ahora sobreviven a las actualizaciones — la memoria persistente, el índice de búsqueda de sesiones, las skills creadas por el usuario, las cuentas espejo y la configuración de broker viven en volúmenes con nombre, de modo quedocker compose up --buildya no los borra (#197, gracias @FlyerJ). -
2026-06-10 🐳 Docker alcanza un Ollama del lado del host listo para usar: dentro del contenedor,
localhostes el propio contenedor, así que elOLLAMA_BASE_URL=http://localhost:11434incluido por defecto fallaba en la comprobación previa del LLM para cada configuración de Ollama en Docker.docker-compose.ymlahora por defecto usahttp://host.docker.internal:11434(exportaOLLAMA_BASE_URLpara apuntar a otro lugar) y agrega el mapeohost-gatewayenextra_hostspara que el mismo archivo funcione tanto en Linux como en Docker Desktop (#196, gracias @ShahNewazKhan). -
2026-06-09 🔑 Error más claro cuando la Web UI se abre desde otra máquina: acceder al chat desde un cliente no loopback (otra máquina, un host VM, un teléfono en tu LAN) sin
API_AUTH_KEYconfigurado devolvía403en cada endpoint sensible — enviar un mensaje, listar sesiones, estado en vivo — pero el chat solo mostraba un genérico "Failed to send message, please retry.". La ruta de envío ahora muestra la razón real — "Remote API access requires an API key. Add it in Settings, or run the backend on localhost for local-only use." — y la configuración de la Web UI en el README explica la regla de localhost frente a LAN además de las tres soluciones (navegar víalocalhosten la misma máquina; configurarAPI_AUTH_KEYe ingresarlo una vez en Settings; oVIBE_TRADING_TRUST_DOCKER_LOOPBACK=1para la puerta de enlace del host de Docker Desktop) (#191, gracias @mafia23). -
2026-06-08 🔧 Corrección de llamadas a herramientas multi-turno de Gemini 3.x: esto completa la corrección del modelo de pensamiento de Gemini 3.x. El intercambio del 6/05 (#176) solo cubría el historial en memoria, pero el bucle real del agente reproduce el historial como diccionarios en formato OpenAI, donde LangChain descartaba la
thought_signaturepor llamada a herramienta antes de construir la solicitud — así que las llamadas a herramientas multi-turno seguían fallando con400pormissing thought_signature. Ahora se vuelve a adjuntar en el único punto de estrangulamiento_convert_inputpor el que pasan tantoinvokecomostream(incluidas las llamadas paralelas, donde solo la primera de N está firmada) (#184, gracias @ngoanpv). -
2026-06-07 🐝 Estado del swarm en vivo en la línea de tiempo del chat: cuando el agente lanza un swarm multiagente (comité de inversión, mesa cuantitativa, comité de riesgo, …), el chat ahora renderiza una tarjeta de estado en línea que transmite el estado de cada worker — esperando / ejecutando / hecho / fallido / bloqueado / reintentando — en tiempo real, la misma visibilidad por agente que ya tenía el panel independiente del swarm. Los eventos del runtime se puentean hacia la transmisión SSE de la sesión sin cambiar la API
/swarm/runsexistente, y una tarjeta terminada se rehidrata desde el resultado final derun_swarmal reconectar o reproducir el historial (#188, gracias @BillDin). El enrutamiento de presets también se volvió más preciso: un preset nombrado explícitamente (p. ej.,investment_committee, con o sin guiones bajos) ahora gana sobre la puntuación por palabras clave, y la palabra clave desnudaIVde derivados ya no coincide falsamente dentro de palabras comunes como "given" (#189, gracias @BillDin). -
2026-06-06 ⚖️ Alpha compare — cara a cara entre CLI, Web UI, REST y agente: un nuevo
alpha compareenfrenta una lista corta de alphas de Alpha Zoo entre sí en un universo y periodo, y luego los clasifica por IC medio/desviación, IR, ratio de IC positivo o número de muestras — cada uno con su brecha respecto al líder. A diferencia de un bench completo del zoo, evalúa solo los alphas que nombres (un nuevo filtro de subconjuntorun_bench(only=…)), así que comparar tres alphas ya no puntúa los 191 de su zoo. Un núcleo compartido impulsa cada superficie:vibe-trading alpha compare <id1> <id2> … --sort ir(CLI), una vista Compare en la Web UI de Alpha Zoo (marca alphas en el catálogo → comparación con un clic con una tabla de clasificación transmitida),POST /alpha/compare+ SSE (REST), y una herramienta de agente de solo lecturaalpha_compare(47 herramientas ahora). -
2026-06-05 🇮🇳 Conectores Dhan + Shoonya (India) — 10 brokers en total: la capa de trading orientada a conectores agrega Dhan y Shoonya para el mercado indio (acciones NSE/BSE + F&O), llevando el total a diez brokers. Ambos son solo paper + solo lectura — como Longbridge, sus APIs no exponen ningún discriminador de runtime entre paper y live, así que sus
place_order/cancel_orderrechazan de forma estricta cualquier configuración que no sea paper desde la primera línea (la regla: un broker sin protección estructural entre paper y live queda limitado a paper + solo lectura) (#181, cierra #174). Este ciclo también corrige los modelos de pensamiento de Gemini 2.5 / 3.x: suthoughtSignaturepor llamada a herramienta ahora se propaga correctamente a través de la ruta compatible con OpenAI, así que las llamadas a funciones multi-turno ya no fallan conINVALID_ARGUMENT(#176, cierra #170, gracias @mvanhorn y @jliu6789). Se agregaron docstrings en chino a los 452 factores de Alpha Zoo (#180, gracias @LeeCQiang), y una suite de pruebas frontend (197 pruebas vitest) más pruebas de seguridad backend de autenticación / recorrido de rutas / CORS se unieron a la CI (#175, gracias @sambazhu). -
2026-06-04 🗃️ Caché de datos local opcional para las 7 fuentes de datos: un nuevo interruptor
VIBE_TRADING_DATA_CACHEpermite que cada cargador de backtest — tushare, okx, ccxt, akshare, mootdx, yfinance, futu — almacene en caché las barras históricas ya asentadas bajo~/.vibe-trading/cache(directorio de usuario, nunca el repositorio), de modo que los backtests repetidos y de largo horizonte / entre mercados evitan la red y las limitaciones de tasa del proveedor. Desactivado por defecto. Los cargadores por lotes y de conexión (yfinance, futu) omiten por completo la descarga masiva / la conexión a FutuOpenD ante un acierto total de caché, una protección de obsolescencia nunca almacena en caché un rango que termina hoy (su última barra aún se está formando), y los marcos en caché se reproducen byte a byte idénticos a los recién obtenidos (#177, gracias @mvanhorn). También se publicó una nueva guía para colaboradores para PR asistidos por IA / automatización, que mapea las comprobaciones locales seguras y las superficies de alto riesgo de broker/MCP/credenciales (#173). -
2026-06-03 🧹 Triaje comunitario + correlación de trazas: las entradas de traza de llamadas a herramientas ahora llevan el
call_idoriginal, de modo que untool_resultpueda emparejarse de vuelta con sutool_callal reproducir la traza de una ejecución — las vistas previas de argumentos se mantienen truncadas para que los archivos de traza sean pequeños (#168, gracias @zwrong). Los comentarios del código fuente ya no apuntan a una ruta de documentación de uso interno que los colaboradores externos no podían encontrar (#166, gracias @jaleelpersonal). También se clarificó que la advertencia del resolutor delangchain-communityen la instalación es solo un aviso inofensivo de paquete residual, no un fallo (#167), y se catalogó la propagación dethoughtSignaturede Gemini 2.5/3.0 para llamadas a funciones como una tareahelp wantedcon un plan de corrección completo (#170, gracias @jliu6789). -
2026-06-02 🔌 Seis nuevos conectores de broker (Tiger / Longbridge / Alpaca / OKX / Binance / Futu): la capa de trading orientada a conectores gana un transporte de SDK directo junto a IBKR (local) y Robinhood (MCP). Cada conector expone cuenta / posiciones / órdenes / cotización / historial de solo lectura más colocación de órdenes en cuenta paper; prueba tus estrategias en estas cuentas paper de broker. Cinco de ellos (Tiger, Alpaca, OKX, Binance, Futu) también admiten colocación de órdenes acotada y con puerta de mandato bajo el mismo modelo de seguridad que Robinhood: un mandato comprometido por el usuario (universo de símbolos / tamaño de orden / exposición / apalancamiento / límite diario), un interruptor de emergencia a nivel de sistema de archivos, una puerta previa a la operación que falla de forma segura, y un libro de auditoría completo. Longbridge es solo paper + solo lectura (su API no expone ningún discriminador de runtime entre paper y live). Cada distinción entre paper y live es una protección estructural por broker — formato de id de cuenta, separación de host, bandera de demo o entorno de trading. Nuevas herramientas
trading_place_order/trading_cancel_order; se agregaron las clases de activos de HK y A-share al universo del mandato. Experimental / usar bajo tu propio riesgo. -
2026-06-01 🚀 Se publica v0.1.9 (
pip install -U vibe-trading-ai): recoge todo lo publicado desde 0.1.8. Perfiles de broker orientados a conectores (IBKR local de solo lectura TWS / IB Gateway + Robinhood Agentic Trading detrás de OAuth, un mandato comprometido, protección de órdenes, libro de auditoría y parada instantánea). Runtime de Objetivo de Investigación en CLI / REST / MCP / Web. Un pase sobre el swarm — reconciliación en vivo + keepalive de MCP, herramientas MCP de worker configuradas por el operador, un control aleatorio estricto para el alpha-bench, y un nuevoretry_runpara relanzar ejecuciones fallidas/obsoletas (ahora 36 herramientas MCP). La refactorización del paqueteagent/cli/con una UI de terminal renovada, el cargador de A-share sin tokenmootdx, y un pase de robustez en backtest / bucle del agente / sesiones.--versionahora siempre coincide con el paquete instalado, corrigiendo la desviación de 0.1.8 (#156). -
2026-05-31 🔌 Arquitectura de broker orientada a conectores (IBKR + Robinhood): el acceso al trading ahora parte de un perfil de conector seleccionable en lugar de puntos de entrada separados de broker/live.
vibe-trading connector list/use/check/account/positions/orders/quote/historyy las herramientas MCPtrading_*comparten el mismo perfil seleccionado, donde paper/live es un atributo del conector. IBKR puede usarse de inmediato a través de un perfil local de solo lectura TWS / IB Gateway, mientras que la ruta oficial de MCP remoto de IBKR se establece como una sonda OAuthmcp.readhasta que haya nombres de herramientas de lectura estables disponibles. Robinhood Agentic Trading sigue siendo el conector MCP en vivo acotado detrás de OAuth, un mandato comprometido, protección de órdenes, libro de auditoría y parada instantánea. -
2026-05-30 🧰 Pase de robustez — backtest, bucle del agente, sesiones: los motores de señales generados por LLM ahora pasan una validación de interfaz previa antes de instanciarse, detectando auto-importaciones circulares, un
generate()faltante, argumentos de__init__sin valor por defecto y tipos de retorno incorrectos con errores JSON útiles en lugar de tracebacks sin procesar (#149); una mejora posterior enruta los errores de validación AST a nivel de código fuente a través del mismo sobre JSON limpio. El bucle del agente ya no consume las 50 iteraciones para terminar en un estadofailedsin salida — ahora refleja el aviso de cierre del worker del swarm al 80% del presupuesto de iteraciones y descarta las definiciones de herramientas en la última iteración para forzar una respuesta de texto final (#148), protegido para activarse solo a mitad de ejecución de modo que nunca desplace el contexto del objetivo de investigación. Las escrituras de mensajes de sesión ahora hacenflush + fsyncen cada append para que las respuestas de IA costosas sobrevivan a un fallo a mitad de escritura, y la ruta de lectura omite las líneas JSONL corruptas (registrando los primeros 200 caracteres para recuperación) en lugar de devolver un 500 en todo el endpoint/messages(#147). El compositor de la Web también corrige el manejo de Enter con IME para que un Enter que confirma una composición ya no envíe a mitad de palabra (#146). -
2026-05-29 🔐 Soporte de Robinhood Agentic Trading (opcional, autonomía acotada): agrega soporte para Robinhood Agentic Trading (MCP remoto, OAuth). Desactivado y de solo lectura por defecto; el agente actúa solo dentro de un mandato comprometido por el usuario (símbolos / tamaño de orden / exposición / apalancamiento / límite diario), con un interruptor de emergencia instantáneo a nivel de sistema de archivos, cierre preventivo de posiciones, expiración automática de mandato, un libro de auditoría completo y un runner autónomo persistente. Sin custodia, sin sede de negociación propia — el broker retiene los fondos y ejecuta; nosotros solo transmitimos la intención. Experimental / usar bajo tu propio riesgo.
-
2026-05-28 🧪 Seguridad del swarm + puerta estricta de alpha + MCP de worker: el DAG del swarm bloquea tareas posteriores cuando falla una anterior (#145). El nuevo
run_bench_strict()agrega un control aleatorio sobre el mismo universo + una división OOS para detectar factores que solo siguen el beta del mercado (#143, gracias @Soli22de). Los workers del swarm pueden llamar a servidores MCP externos configurados por el operador, con el límite de confianza fijado (#142, gracias @shadowinlife). -
2026-05-27 📊 Fuente de datos A-share mootdx + refinamiento de salida: el nuevo cargador
mootdxhabla el protocolo TCP nativo 通达信 para OHLCV de A-share (sin autenticación, sin límite de tasa por IP, diario + intradía con paginación de retroceso de 25 páginas), ubicándose entre tushare y akshare en la cadena de respaldo (#107). El cargador CCXT ahora leeHTTP_PROXY/HTTPS_PROXY/ALL_PROXYpara que los datos públicos de Binance/OKX funcionen desde redes restringidas (#126, gracias @ruok808). El renderizado de la respuesta final también eliminó los feos separadores horizontales---de ancho completo en CLI y Web: el prompt del sistema ahora orienta al agente hacia tablas markdown y encabezados##, el renderizador de la CLI elimina los HR independientes como defensa adicional, y la burbuja de chat oculta cualquier<hr>que se filtre (#139, gracias @sdwxm188). -
2026-05-26 ✅ Cierre del ciclo de vida del Objetivo de Investigación: el modo Goal ahora se comporta como un ejecutor de tareas real: la creación de objetivos en la Web UI crea o vincula la sesión y envía de inmediato el turno de arranque; los objetivos activos pueden continuarse, editarse, cancelarse y completarse a través de Web/API/CLI/MCP; y el agente avanza desde la instantánea actual del objetivo (criterios, evidencia, afirmaciones, elementos abiertos) en lugar de solo el prompt original. Los objetivos cubiertos pero aún activos ahora entran en una actualización de auditoría/estado en lugar de detenerse en silencio, con cobertura de regresión en backend, CLI, MCP y eventos del frontend.
-
2026-05-25 🧼 UI de chat más limpia + flujo de trabajo del compositor: la Web UI mantiene el chat centrado en la siguiente acción: los modos de subida, swarm y objetivo de investigación ahora viven detrás del menú
+del compositor en lugar de paneles flotantes. El contexto activo aparece encima del campo de entrada como chips compactos, y los detalles del objetivo se expanden en línea solo cuando es necesario. La UI también elimina la antigua capa de i18n personalizada en favor de texto directo en inglés, restringe las tarjetas de Full Report a ejecuciones dignas de informe, y refuerza el arranque/reporte de estado del desarrollo local para pruebas de humo confiables en el navegador. -
2026-05-24 🎯 Runtime del Objetivo de Investigación: se agregó una capa de Objetivo de Investigación con alcance de sesión en backend, CLI, API/MCP, SSE y Web UI. Los objetivos persisten afirmaciones, criterios de aceptación, filas de evidencia, presupuestos y política de finalización; las herramientas del agente pueden crear objetivos y adjuntar evidencia;
/goalle da a la CLI un punto de entrada directo; REST/MCP exponen instantáneas de objetivos y escrituras de evidencia; SSE mantiene actualizados a los clientes de chat. Correcciones de auditoría posteriores blindaron la evidencia verificada, bloquearon niveles de riesgo de trading en vivo a través de herramientas del agente, conectaron los objetivos creados por CLI a turnos posteriores, limpiaron los libros de objetivos al eliminar la sesión, habilitaron reproducir-todo, y corrigieron condiciones de carrera del frontend entre sesiones. -
2026-05-23 🖥️ Renovación de la CLI interactiva: la puerta de entrada de la terminal ahora se abre con un banner más grande de Vibe-Trading, un divisor de prompt más limpio, resumen del turno anterior, tiempo posterior a la ejecución, y un riel de actividad estilo Claude Code para el trabajo en vivo del agente. Las llamadas a herramientas, obtenciones de datos/web, acciones estilo shell, respuestas en Markdown y tablas con pipes se renderizan en una transcripción más legible, mientras que las ejecuciones canalizadas (piped) o sin TTY mantienen la salida de texto simple para automatización. Las capturas de pantalla de la CLI generadas ahora se tratan como artefactos locales en lugar de archivos de documentación versionados, manteniendo el repositorio más ligero.
-
2026-05-22 🧭 Recuperación del swarm + keepalive de MCP: el estado del swarm ahora se reconcilia a partir de los archivos de tarea en vivo en cada lectura, de modo que las vistas de API/MCP/SSE/lista recuperan ejecuciones caídas o obsoletas en lugar de mostrar instantáneas permanentes de
running.run_swarmenvía heartbeats de progreso de MCP mientras hace sondeo, con un primer frame fijo deswarm_started run_id=<id>para los clientes que se reconectan tras cortes de transporte; los workers ahora emiten heartbeat durante el streaming del LLM, las obtenciones de anclaje y la ejecución de herramientas. El recolector de ejecuciones obsoletas usa umbrales por ejecución y deriva el estado terminal de los estados de las tareas,SwarmToolya no cancela un equipo aún en ejecución solo porque su presupuesto de espera venció, y los clientes MCP pueden llamar areap_stale_runs()para limpieza explícita. El pase de DX de hoy también actualizó los modelos por defecto de los proveedores y alineó las comprobaciones de sintaxis de CI con el nuevo paqueteagent/cli/. 22 nuevas pruebas de regresión cubren hidratación, recuperación de terminal, recolección de obsoletos, cadencia de keepalive, análisis de entorno y conexión de heartbeat; la suite completa de swarm/MCP está en 169 aprobadas, 4 omitidas. -
2026-05-21 🧱 Refactorización del paquete CLI:
agent/cli.py(3216 LOC) se dividió en el paqueteagent/cli/— puerta de entrada interactiva, enrutador de slash, componentes Rich, más un shim_legacy.pyque preserva cada subcomando y reexporta cada símbolo público para quecli.cmd_*/cli._INIT_ENV_PATH/cli.Confirmsigan funcionando. Un nuevo middleware de FastAPI sirve el shell de la SPA cuando un navegador abre/runs/{id}o/correlationdirectamente; el mismo estrechamiento se aplicó al proxy de desarrollo de Vite. La versión se unificó a través decli/_version.py(ya no hay desviación entre--versiony el banner),python -m clise restauró mediante__main__.py, y la puerta del chat se estrechó para quechat --help/chat extralleguen al argparse heredado en lugar de ser engullidos por el REPL. -
2026-05-20 🔬 CLI del Registro de Hipótesis: cierra el lado de CLI del Registro de Hipótesis publicado solo en backend el 2026-05-16.
vibe-trading hypothesis listimprime una tabla Rich o JSON (filtro--status,--limit);show <id>renderiza un panel de detalle incluyendo tarjetas de ejecución vinculadas;invalidate <id> --note "..."cambia el estado arejectedpreservando las notas de invalidación previas cuando se omite--note. Respeta la sobrescritura existente por variable de entornoVIBE_TRADING_HYPOTHESES_PATHy agrega un--pathpor invocación. 22 nuevas pruebas cubren la conexión, la salida JSON, el filtro de estado, el límite, los errores de id faltante y la persistencia de notas. -
2026-05-19 ✨ Retroalimentación de herramientas en vivo + cancelación elegante: las herramientas de larga duración (backtests, PDFs grandes, workers de swarm) ya no parecen congeladas. Cada llamada a herramienta ahora emite un heartbeat de 3 segundos más progreso estructurado por etapa —
run_backtestmuestra marcadores de fase (validate/simulate/finalize),read_documentmarca el avance por página en PDF o por hoja en Excel,read_urlmarcafetch/parse. El panel Rich Live de la CLI renderiza un spinner Unicode, una barra de progreso ASCII, ETA, y apila hasta 3 herramientas en paralelo identificadas por nombre; el chat del frontend incorpora un nuevoToolProgressIndicatorcon renderizados coalescidos por rAF, ARIArole="status"+ un<progress>nativo oculto para lectores de pantalla, y unProgressRingSVG determinado cuando se conoce el total. El primerCtrl+Cdurante una ejecución de la CLI ahora llama aagent.cancel()para una salida elegante (el paso actual termina, la traza se cierra limpiamente); un segundo dentro de 2s fuerza el cierre. Primitivas reutilizables extraídas en el proceso:ProgressBar.tsxylib/tools.ts(i18n de nombres de herramientas compartido). -
2026-05-18 🧹 Pase de limpieza + tres correcciones de errores latentes:
CompositeEngineya no enruta incorrectamente códigos de futuros chinos simples comoRB2410aGlobalFuturesEngine—_is_china_futuresse movió a un módulo compartido_market_hookscon una tabla de productos normalizada por mayúsculas/minúsculas y una protección para bolsas no chinas, más 9 nuevos casos de regresión. Los índices FTS5 de sesión ahora persisten timestamps para que la búsqueda entre sesiones pueda ordenar por fecha; la misma ruta también corrigió un re-upsert que actualizaba el reloj de pared delstarted_atde cada sesión. El proxy de modo desarrollo de Vite ganó la entrada faltante de/alphapara que la página AlphaZoo resuelva ennpm run dev.tests/test_e2e_harness_v2.py(suite e2e con LLM real) ahora está condicionada porVIBE_TRADING_RUN_LIVE_E2E=1para que la CI ya no cambie de forma según la presencia de claves de entorno. Se agregaronper-file-ignoresde Ruff para el zoo de factores (3783 → 0 avisos F401), el tsconfig del frontend habilitanoUnusedLocals/noUnusedParameterscomo protecciones de regresión, y se eliminaron 76 líneas de código repetitivo sin usovw = vwap(...)de los alphas degtja191. Neto -918 LOC. -
2026-05-17 🧬 Alpha Zoo v1 (0.1.8): 452 alphas cuantitativos preconstruidos en 4 zoos —
qlib158(Microsoft Qlib, atribución Apache-2),alpha101(Kakushadze 101 Formulaic Alphas, reescritura del paper de arXiv:1601.00991),gtja191(informe de factores de corto plazo de Guotai Junan de 2014), yacademic(proxies basados en precio de Fama-French 5 + Carhart). Un comando CLI de una línea para benchmarking de cualquier zoo en tu universo:vibe-trading alpha bench --zoo gtja191 --universe csi300 --period 2018-2025. Incluye una puerta de pureza AST, una prueba de protección contra lookahead, un interruptor de emergencia de redpytest-socket, un LICENSE.md por zoo, y un flujo de Developer Certificate of Origin (DCO) para PRs de la comunidad. Alpha Library autogenerada en vibetrading.wiki/alpha-library/ + artículo del laboratorio de investigación ¿Cuáles de los 191 alphas de GTJA aún funcionan en 2026?. -
2026-05-16 🧪 Actualización de la columna vertebral de investigación: se agregó un Registro de Hipótesis en el backend con
create_hypothesis,update_hypothesis,link_backtestysearch_hypotheses; los lectores de contenido externo ahora adjuntansecurity_warningssolo de advertencia; y el escaneo de la cuenta espejo ahora usa evaluación determinista de características OHLCV en lugar del antiguo stub de fase calendárica. -
2026-05-15 🪪 la página de detalle de ejecución ahora muestra la tarjeta de la Capa de Confianza junto a métricas y artefactos, completando el lado de UI del trabajo de
run_card.jsonpublicado el 2026-05-12.PersistentMemory.add()también se reforzó en cuanto a longitud, nombres vacíos o con solo espacios en blanco, y bytes de control C0/C1 a partir del triaje de #108/#109/#110 (#112, gracias @Teerapat-Vatpitak). -
2026-05-14 🌐 la wiki pública ya está en línea en vibetrading.wiki con secciones de documentación, tutoriales, Research Lab y Alpha Library desplegadas a través de Cloudflare Pages. La memoria persistente también es inspeccionable desde la CLI mediante
vibe-trading memory list/show/search/forget(#102, gracias @Teerapat-Vatpitak), y la tokenización/slugs de memoria ahora admiten texto en tailandés, árabe, hebreo y cirílico (#104). -
2026-05-13 🧭 las ejecuciones de swarm ahora fundamentan a los workers con datos de mercado obtenidos e informes persistidos más limpios (#93, #84).
-
2026-05-12 🧾 los backtests ahora emiten
run_card.jsonyrun_card.mdjunto con los artefactos para ejecuciones de investigación reproducibles. -
2026-05-11 🧭 Slugs de memoria, contabilidad de swarm y comprobación previa de la CLI: la memoria persistente ahora preserva los caracteres CJK al generar slugs de archivo, evitando colisiones silenciosas de nombre de archivo para notas en chino/japonés/coreano (#95, gracias @voidborne-d). Los totales de ejecución de swarm ahora prefieren el uso de tokens reportado por el proveedor con el respaldo de estimación existente (#94, gracias @Teerapat-Vatpitak), y la UI de ejecución de la CLI obtuvo una comprobación previa de arranque para problemas comunes de entorno (#96, gracias @ykykj).
-
2026-05-10 🧱 Protecciones de regresión + metadatos de ejecución: la recuperación de memoria ahora trata los guiones bajos como límites de token, de modo que las memorias guardadas en snake_case como
mcp_wiring_testcoincidan con consultas en lenguaje natural como "mcp wiring" (#87, gracias @hp083625). El servidor MCP tiene una prueba de humo de subproceso que cubre initialize →tools/list→tools/callpara proteger la ruta de bloqueo en la primera llamada (#86), mientras que se aplicó endurecimiento de bajo riesgo para pruebas sensibles a rutas en Windows, manejo de excepciones best-effort de la API, validación de raíz permitida derun_diren el backtest, y metadatos de proveedor/modelo de SwarmRun (#88, #90, #91, #92, gracias @Teerapat-Vatpitak). -
2026-05-09 🛡️ Endurecimiento de rutas de la API + estabilidad del servidor MCP: las rutas de ejecución/sesión de la API ahora validan los IDs de ruta antes de la búsqueda, rechazando parámetros malformados que contienen saltos de línea y fijando el comportamiento en la suite de regresión de autenticación/seguridad (#80, gracias @SJoon99). El servidor MCP ahora precalienta el registro de herramientas en el hilo principal antes de servir
tools/call, evitando un bloqueo en la primera llamada en el descubrimiento perezoso de herramientas (#85, gracias @Teerapat-Vatpitak). El proxy de desarrollo de Vite también respetaVITE_API_URLpara destinos de backend no predeterminados (#82, gracias @voidborne-d). -
2026-05-08 🧾 Campos de estados financieros de Tushare en filtros: los backtests diarios de A-share ahora pueden solicitar campos de estados financieros seguros en el tiempo (PIT) mediante
fundamental_fields, de modo que los motores de señales puedan filtrar porincome_total_revenue,income_n_income,balancesheet_total_hldr_eqy_exc_min_int,fina_indicator_roey columnas similares con prefijo de tabla después de sus fechas de anuncio/divulgación (#76, gracias @mrbob-git). Un endurecimiento posterior hace que las solicitudes explícitas de campos de estados financieros fallen rápido si el enriquecimiento de Tushare no puede ejecutarse, en lugar de recurrir silenciosamente a las barras de precio sin procesar (#77). -
2026-05-07 📈 Fundamentales de Tushare + triaje comunitario: se agregó un contrato
TushareFundamentalProviderseguro en el tiempo (point-in-time) para flujos de trabajo de investigación fundamental, con cobertura de regresión para la ruta de variable de entornoTUSHARE_TOKENdel proyecto (#74). El triaje comunitario también clarificó que Vibe-Trading mantiene la iteración rápida enfocada en un solo idioma de UI por ahora, evita agregar dependencias de búsqueda redundantes mientrasweb_searchrespaldado por DuckDuckGo ya está incluido, y trata los despliegues alojados no oficiales como lugares no confiables para claves de API o tokens de fuente de datos. -
2026-05-06 🚀 Se publica v0.1.7 (Notas de la versión,
pip install -U vibe-trading-ai): el endurecimiento del límite de seguridad ya está publicado en PyPI y ClawHub, cubriendo valores por defecto más seguros de API/lectura/subida/archivo/URL/código generado/herramienta de shell/Docker mientras se mantiene la baja friccion de los flujos de trabajo de CLI/Web UI en localhost. Este ciclo también incluye Settings de la Web UI, mapa de calor de correlación, OAuth de OpenAI Codex, filtrado de pre-ST de A-share, UX de CLI interactiva, inspección de presets de swarm, análisis de dividendos, refinamiento del flujo de desarrollo y pisos de dependencias de compilación del frontend auditados. Gracias a los colaboradores de 0.1.7 y a lemi9090 (S2W) por la validación de seguridad coordinada. -
2026-05-05 🛡️ Seguimiento del límite de seguridad: completa el endurecimiento restante del límite de seguridad en torno a orígenes CORS explícitos, indicadores de credenciales de Settings, lectura de URL web, y generación de código de la cuenta espejo, con pruebas de regresión agregadas para cada ruta. Los flujos de trabajo normales de CLI/Web UI en localhost permanecen igual; los despliegues remotos deberían seguir usando
API_AUTH_KEYy orígenes de confianza explícitos. -
2026-05-04 🖥️ UX de CLI interactiva + limpieza de CI: el modo interactivo ahora tiene una barra de estado inferior en vivo que muestra proveedor/modelo, duración de sesión, latencia de la última ejecución y estadísticas acumuladas de llamadas a herramientas, además de navegación por el historial de prompts y edición con el cursor mediante las flechas del teclado a través de
prompt_toolkit(#69). La CLI sigue recurriendo a los prompts de Rich cuandoprompt_toolkito una TTY no están disponibles. Las expectativas de rutas de la CI también se alinearon con el sandbox reforzado de importación de archivos y la resolución multiplataforma de/tmp, devolviendo main a verde (bb67dc7). -
2026-05-03 🛡️ Parche de endurecimiento de seguridad: refuerza la autenticación de API por defecto para despliegues no locales, protege las lecturas sensibles de ejecución/sesión/swarm, restringe los límites de subida y lectura de archivos locales, condiciona las herramientas con capacidad de shell por punto de entrada, valida la carga de estrategias generadas antes de la importación, y ejecuta la imagen de Docker como usuario no root con un puerto publicado solo en localhost por defecto. Los flujos de trabajo de CLI local y Web UI en localhost siguen teniendo baja fricción; los despliegues remotos de API/Web deberían configurar
API_AUTH_KEY. -
2026-05-02 🧭 Análisis de dividendos + hoja de ruta más definida: se agregó la skill
dividend-analysispara acciones de ingreso, sostenibilidad de pagos, crecimiento de dividendos, rendimiento para el accionista y comprobaciones de trampas de rendimiento, fijada mediante pruebas de regresión de skills incluidas. La hoja de ruta pública ahora se enfoca en el trabajo próximo: Research Autopilot, Data Bridge, Options Lab, Portfolio Studio, Alpha Zoo, Research Delivery, Trust Layer y compartición con la comunidad. -
2026-05-01 🔥 Mapa de calor de correlación + OAuth de OpenAI Codex + filtro de pre-ST de A-share: el nuevo panel/API de correlación calcula correlaciones de retorno rolling y renderiza un mapa de calor ECharts para análisis de portafolio y símbolos (#64). El soporte del proveedor OpenAI Codex ahora usa OAuth de ChatGPT mediante
vibe-trading provider login openai-codex, con metadatos de Settings y pruebas de regresión del adaptador (#65). Se agregó y reforzó la skillashare-pre-st-filterpara el cribado de riesgo ST/*ST de A-share, incluyendo filtrado de relevancia de sanciones de Sina para que las menciones de cuentas de valores no inflen los recuentos E2 (#63). -
2026-04-30 ⚙️ Settings de la Web UI + endurecimiento de la CLI de validación: nueva página de Settings para proveedor/modelo de LLM, URL base, esfuerzo de razonamiento y credenciales de fuente de datos, respaldada por APIs de configuración locales/protegidas por autenticación y metadatos de proveedor basados en datos (#57). También refuerza
python -m backtest.validation <run_dir>para que entradas faltantes, en blanco, malformadas, inexistentes y que no sean directorios fallen con mensajes claros orientados al operador antes de que comience la validación (#60). -
2026-04-28 🚀 Se publica v0.1.6 (
pip install -U vibe-trading-ai): corrige quevibe-trading --swarm-presetsdevolviera vacío después depip install/uv tool install(#55) — los YAML de presets ahora están incluidos dentro del paquetesrc.swarmy fijados mediante una suite de regresión de 6 pruebas. Además, el cargador de AKShare ahora enruta correctamente ETFs (510300.SH) y forex (USDCNH) a los endpoints correctos con respaldo de registro reforzado. Recoge todo lo publicado desde v0.1.5: panel de comparación de benchmark, streaming de/upload+ límites de tamaño, cargador Futu (HK + A-share), skill de exportación a vnpy, endurecimiento de seguridad, carga diferida del frontend (688KB → 262KB). -
2026-04-27 📊 Panel de benchmark + seguridad de subida: la salida del backtest ahora incluye un panel de comparación de benchmark (ticker / retorno del benchmark / retorno excedente / ratio de información) con resolución respaldada por yfinance para SPY, CSI 300, etc. (#48). Además,
/uploadtransmite el cuerpo de la solicitud en fragmentos de 1 MB y aborta al superarMAX_UPLOAD_SIZE, acotando la memoria ante clientes sobredimensionados/malformados (#53) — fijado por una suite de regresión de 4 casos. -
2026-04-22 🛡️ Endurecimiento + nuevas integraciones: se aplicó contención de rutas en
safe_path+ sandbox de la herramienta de journal/shadow,MANIFEST.inincluye.env.example/ pruebas / archivos de Docker en el sdist, la carga diferida a nivel de ruta reduce el paquete inicial del frontend de 688KB a 262KB. Además, cargador de datos Futu para acciones de HK y A-share (#47) y skill de exportación deCtaTemplatede vnpy (#46). -
2026-04-21 🛡️ Espacio de trabajo + documentación:
run_dirrelativo normalizado al directorio de ejecución activo (#43). Ejemplos de uso en el README (#45). -
2026-04-20 🔌 Razonamiento + Swarm:
reasoning_contentse preserva en todas las rutas deChatOpenAI— Kimi / DeepSeek / Qwen funcionan de extremo a extremo con pensamiento (#39). Streaming de swarm + Ctrl+C limpio (#42). -
2026-04-19 📦 v0.1.5: publicado en PyPI y ClawHub. Actualización del piso de la CVE de
python-multipart, 5 nuevas herramientas MCP conectadas (analyze_trade_journal+ 4 herramientas de cuenta espejo), corrección del registropattern_recognition→pattern, paridad de dependencias de Docker, manifiesto SKILL sincronizado (22 herramientas MCP / 71 skills). -
2026-04-18 👥 Cuenta espejo: extrae las reglas de tu estrategia desde un journal de broker → haz backtest de la cuenta espejo en distintos mercados → informe HTML/PDF de 8 secciones que muestra exactamente cuánto dejas sobre la mesa (violaciones de reglas, salidas anticipadas, señales perdidas, operaciones contrafactuales). 4 nuevas herramientas, 1 skill, 32 herramientas en total. Las muestras de Trade Journal + Shadow Account ya están en la pantalla de bienvenida de la web UI.
-
2026-04-17 📊 Analizador de journal de trading + lector universal de archivos: sube exportaciones de broker (同花顺/东财/富途/CSV genérico) → perfil de trading automático (días de tenencia, tasa de aciertos, ratio de PnL, drawdown) + 4 diagnósticos de sesgo (efecto de disposición, sobreoperación, persecución del momentum, anclaje).
read_documentahora despacha PDF, Word, Excel, PowerPoint, imágenes (OCR) y más de 40 formatos de texto detrás de una sola llamada unificada. -
2026-04-16 🧠 Arnés del agente: memoria persistente entre sesiones, búsqueda de sesiones con FTS5, skills autoevolutivas (CRUD completo), compresión de contexto en 5 capas, agrupamiento de herramientas de lectura/escritura. 27 herramientas, 107 pruebas nuevas.
-
2026-04-15 🤖 Z.ai + MiniMax: proveedor Z.ai (#35), corrección de temperatura de MiniMax + actualización de modelo (#33). 13 proveedores.
-
2026-04-14 🔧 Estabilidad de MCP: se corrigió el error
Connection closedde la herramienta de backtest en el transporte stdio (#32). -
2026-04-13 🌐 Backtest compuesto entre mercados: el nuevo
CompositeEnginehace backtest de portafolios de mercados mixtos (p. ej., A-shares + cripto) con un pool de capital compartido y reglas por mercado. También se corrigió el respaldo de variables de plantilla de swarm y un timeout del frontend. -
2026-04-12 🌍 Exportación multiplataforma:
/pineexporta estrategias a TradingView (Pine Script v6), TDX (通达信/同花顺/东方财富) y MetaTrader 5 (MQL5) en un solo comando. -
2026-04-11 🛡️ Fiabilidad y DX: arranque de
.envconvibe-trading init(#19), comprobaciones previas, respaldo de fuente de datos en runtime, motor de backtest reforzado. README multilenguaje (#21). -
2026-04-10 📦 v0.1.4: corrección de Docker (#8), herramienta MCP
web_search, 12 proveedores de LLM, dependenciasakshare/ccxt. Publicado en PyPI y ClawHub. -
2026-04-09 📊 Backtest oleada 2: motores ChinaFutures, GlobalFutures, Forex, Options v2. Monte Carlo, IC Bootstrap, validación Walk-Forward.
-
2026-04-08 🔧 Backtest multi-mercado con reglas por mercado, exportación a Pine Script v6, 5 fuentes de datos con respaldo automático.
Vibe-Trading es un espacio de trabajo de investigación de código abierto para convertir preguntas financieras en análisis ejecutables. Conecta prompts en lenguaje natural con cargadores de datos de mercado, generación de estrategias, motores de backtest, informes, exportaciones y memoria de investigación persistente.
Está diseñado para investigación, simulación y backtesting, y, cuando tú lo decidas, para trading autónomo a través de un broker que autorices tú mismo (por ejemplo, Robinhood Agentic Trading). No retiene fondos y nunca opera fuera de los límites que establezcas, y puedes detenerlo al instante.
| Tarea | Resultado |
|---|---|
| Hacer una pregunta de trading | Investigación de mercado con herramientas, datos, documentos y contexto de sesión reutilizable. |
| Backtestear una idea de estrategia | Código de estrategia, métricas, contexto de benchmark, artefactos de validación y run cards. |
| Revisar tus propias operaciones | Análisis del diario del broker, diagnóstico de comportamiento, extracción de reglas y comparaciones de Shadow Account. |
| Leer documentos y gráficos | Analiza PDF / DOCX / XLSX / PPTX / imágenes con OCR conectable (read_document), y lee capturas de gráficos de forma semántica con un modelo de visión (analyze_image). El chat web acepta hasta cinco archivos a la vez mediante el selector, arrastrar y soltar o pegar desde el portapapeles. |
| Leer informes institucionales y libros de fondos | Libros de gestores SEC 13F con diferencias de posiciones trimestre a trimestre, componentes de ETF en distintos mercados, probabilidad implícita de contratos de eventos y extracción de factores de arXiv / OpenAlex, todo de solo lectura, sobre fuentes públicas gratuitas. |
| Mejorar la investigación repetida | La memoria persistente y las skills editables convierten rutinas útiles en flujos de trabajo reutilizables. |
| Ejecutar equipos de analistas | Revisiones de investigación multiagente para flujos de trabajo de inversión, cuantitativo, cripto, macro y riesgo. |
| Llevar la investigación a canales de mensajería | Ejecuta el mismo runtime de sesión a través de WebSocket, Telegram, Slack, Discord, Matrix, WhatsApp, Signal, QQ/NapCat, WeChat/WeCom, Feishu/Lark, DingTalk, Teams, correo electrónico y Mochat, con controles de CLI, REST y Web UI. |
| Entregar artefactos utilizables | Informes, TradingView Pine Script, TDX, MetaTrader 5, herramientas MCP y sesiones de investigación posteriores. |
| Evaluar un zoológico de alfas preconstruido | Clasificación IC + viva/invertida/muerta en una línea, en 462 alfas (Qlib 158 + Kakushadze 101 + GTJA 191 + académicas + fundamentales PIT-safe) sobre tu universo. |
| Detectar regímenes de correlación | Una línea de tiempo de densidad de aristas + histéresis en la superficie /correlation que muestra cuándo los mercados se fusionan en un solo bloque: contexto de riesgo descriptivo, no una señal. |
pip install vibe-trading-ai
# Natural-language research
vibe-trading run -p "Backtest a BTC-USDT 20/50 moving-average strategy for 2024, summarize return and drawdown, then export the report"
# Bench a pre-built alpha zoo (one line)
vibe-trading alpha bench --zoo gtja191 --universe csi300 --period 2018-2025 --top 20vibe-trading --upload trades_export.csv
vibe-trading run -p "Analyze my trading behavior, extract my shadow strategy, and compare it with my actual trades"Shadow Account parte de tus propios registros de trading en lugar de una plantilla de estrategia genérica.
Sube una exportación del broker, deja que el agente resuma tu comportamiento y luego compara tu trayectoria real de trading con una estrategia espejo basada en reglas.
| Paso | Resultado del agente |
|---|---|
| 1. Lee tu diario | Analiza exportaciones de broker de 同花顺, 东方财富, 富途 y formatos CSV genéricos. |
| 2. Perfila tu comportamiento | Días de tenencia, tasa de aciertos, ratio de PnL, drawdown, efecto disposición, sobreoperación, persecución de momentum y verificaciones de anclaje. |
| 3. Extrae tus reglas | Convierte entradas/salidas recurrentes en un perfil de estrategia explícito en lugar de un resumen vago. |
| 4. Ejecuta la cuenta espejo | Backtestea las reglas extraídas y resalta incumplimientos de reglas, salidas anticipadas, señales perdidas y trayectorias de operación alternativas. |
| 5. Entrega el informe | Genera un informe HTML/PDF que puede inspeccionarse, archivarse o refinarse en una sesión posterior. |
vibe-trading --upload trades_export.csv
vibe-trading run -p "Analyze my trading behavior, extract my shadow strategy, and compare it with my actual trades"La Web UI añade una página Cartera de solo lectura que agrega las posiciones de las conexiones de broker que elijas. Las fuentes son instancias de conexión de perfiles de solo lectura que declaran account.read y positions.read — configúralas en Conectores de Broker dentro de Detailed Capabilities. El perfil MCP oficial de IBKR aún no puede usarse como fuente.
| Comportamiento | Qué obtienes |
|---|---|
| Procedencia por fuente | Cada posición indica de qué conexión proviene, valorada en USD con conversión a CNY. |
| Fuentes fallidas excluidas | Una fuente que falla se reporta como error y queda fuera de los totales — nunca se arrastra el valor anterior — y la instantánea se marca como incompleta. |
| Instantáneas inmutables | Cada actualización se guarda en ~/.vibe-trading/portfolio/portfolio.sqlite3; los ajustes sin credenciales viven en ~/.vibe-trading/portfolio.json y connections.json. |
| Exportación y análisis | Exportación CSV, más una herramienta de agente portfolio_summary saneada cuyos risk_xray_args se pasan directamente a portfolio_risk_xray. La misma instantánea se imprime en la terminal con vibe-trading portfolio show (también refresh / sources). |
Los conectores de solo lectura que instales tú permanecen fuera del checkout, en ~/.vibe-trading/connectors/<name>/: un manifiesto connector.json más un adapter.py que implemente check_status / get_account_snapshot / get_positions. Un manifiesto que declare cualquier capacidad de escritura es rechazado.
vibe-trading connector init my-broker --destination /tmp
vibe-trading connector validate /tmp/my-broker
vibe-trading connector install /tmp/my-brokerSus credenciales van al llavero del sistema operativo (macOS Keychain, Windows Credential Manager, Linux Secret Service) con pip install "vibe-trading-ai[keyring]", nunca a los archivos de configuración. Nada en esta ruta puede enviar ni cancelar una orden.
La mayoría de las ejecuciones siguen la misma ruta de evidencia: enrutar la solicitud, cargar el contexto de mercado correcto, ejecutar herramientas, validar resultados y mantener los artefactos inspeccionables.
| Capa | Qué sucede |
|---|---|
| Plan | Selecciona las skills financieras, herramientas, fuentes de datos y el preset de swarm relevantes cuando resulta útil. |
| Ground | Extrae acciones A, acciones de HK/EE. UU./Canadá, cripto, futuros, forex, documentos o contexto web a través de los cargadores disponibles. |
| Execute | Genera código de estrategia comprobable, ejecuta herramientas y utiliza el motor de backtest o el flujo de análisis correspondiente. |
| Validate | Añade métricas, comparación con benchmark, Monte Carlo, Bootstrap, Walk-Forward, run cards y advertencias cuando corresponde. |
| Deliver | Devuelve informes, artefactos, trazas de herramientas y exportaciones para TradingView, TDX, MetaTrader 5, clientes MCP o sesiones posteriores. |
Una sola llamada get_market_data, 23 fuentes de datos de mercado gratuitas (además del mercado premium opcional QVeris). Establece source: "auto": el cargador elige según el símbolo y luego recorre una cadena por mercado ordenada por riesgo de bloqueo de IP: primero las fuentes públicas que nunca se bloquean, al final las limitadas o que requieren clave. Cero configuración, sin punto único de fallo.
| Fuente | Mercados | Autenticación | Rol |
|---|---|---|---|
tencent · mootdx |
A-share + HK | ninguna | nunca bloqueada por IP (mootdx = 通达信 TCP) |
eastmoney |
A / EE. UU. / HK | ninguna | OHLCV + herramientas de fundamentales y flujo profundas (limitada) |
baostock · akshare |
A (+ EE. UU./HK/futuros/macro/fx) | ninguna | fallbacks gratuitos |
tushare |
A / HK / futuros / fondos / macro | token | la más completa para A-share |
yahoo |
EE. UU. / HK / Canadá | ninguna | gráfico/cotizaciones/opciones directos; TSX .TO / TSXV .V |
sina · stooq |
EE. UU. | ninguna | velas hasta 1984 · CSV EOD |
yfinance |
EE. UU. / HK / Canadá | ninguna | wrapper; TSX .TO / TSXV .V pasan a través |
longbridge |
EE. UU. / HK | App Key + App Secret + Access Token | fuente OHLCV histórica opcional; instala el SDK opcional |
finnhub · alphavantage · tiingo · fmp |
EE. UU. | clave | proveedores opcionales |
qveris |
multiactivo global | clave · créditos | mercado premium — 63+ proveedores mediante una sola clave (solo explícito, nunca en el fallback automático) |
okx · ccxt · binance |
cripto | ninguna | OKX + 100+ exchanges + históricos de Binance / perpetuos USD-M |
futu |
HK / A | OpenD | FutuOpenD local opcional |
mt5 |
forex / metales | terminal MT5 | barras de forex/metales de MetaTrader 5 (estilo Exness), 1m–1D |
pykrx |
Corea (KRX: KOSPI/KOSDAQ) | ninguna | barras diarias de KOSPI / KOSDAQ para .KS / .KQ (extra opcional krx) |
india_broker |
India (NSE/BSE) | login de broker | barras de solo lectura de Shoonya / Dhan para .NS / .BO (al final de la cadena de fallback) |
local |
cualquiera | ninguna | tu propio CSV / Parquet / DuckDB mediante el prefijo local: |
Cadenas de fallback (por riesgo de bloqueo de IP):
- A-share →
tencent·mootdx·eastmoney·baostock·akshare·tushare·local - EE. UU. →
yahoo·stooq·sina·eastmoney·yfinance·tiingo·fmp·finnhub·alphavantage·longbridge·akshare·local - HK →
tencent·eastmoney·yahoo·futu·akshare·yfinance·tushare·longbridge·local - India (NSE/BSE) →
yahoo·yfinance·india_broker·local - Corea (KOSPI/KOSDAQ) →
pykrx·yahoo·yfinance·local - Cripto →
okx·ccxt·binance·yfinance·local - Forex / metales →
mt5·yfinance·akshare·local· (futuros / fondos / macro →tushare/akshare→local)
Longbridge es un cargador histórico OHLCV opcional para EE. UU./HK. Instala su SDK con:
pip install "vibe-trading-ai[longbridge]"Configura las tres credenciales en .env:
LONGBRIDGE_APP_KEY=...
LONGBRIDGE_APP_SECRET=...
LONGBRIDGE_ACCESS_TOKEN=...Para un backtest, establece source en config.json:
{
"codes": ["QQQ.US"],
"start_date": "2025-01-01",
"end_date": "2025-01-10",
"interval": "1D",
"source": "longbridge"
}En una conversación con el Agent, pide explícitamente: "Use Longbridge to fetch QQQ.US historical data." La solicitud explícita de fuente es independiente de source: "auto"; auto mantiene la cadena de fallback normal por mercado.
Más allá del OHLCV, 22 herramientas de datos de solo lectura alcanzan fundamentales y flujo: flujo de fondos, dragon-tiger, northbound, margen, operaciones en bloque, número de accionistas, lockup, sector, informes de investigación, noticias, presentaciones ante la SEC, estados financieros, cadenas de opciones, perfil de la acción, screening de mercado, búsqueda de símbolos, macro, iwencai, tenencias institucionales (13F), look-through de ETF, mercados de predicción y papers de investigación, todo expuesto a través de MCP. Un símbolo local: explícito nunca recurre en silencio a una fuente de red.
Datos: enrutamiento gratuito o premium, tú decides. Lo gratuito sigue siendo el valor por defecto: 23 fuentes integradas con fallback por riesgo de bloqueo, sin clave, sin costo. Lo premium mediante QVeris añade más de 10.000 capacidades (según QVeris) en 63+ proveedores para Greeks de opciones, fundamentales premium, datos de China/HK/globales, macro, cripto, noticias y presentaciones regulatorias; las llamadas fallidas no se cobran. Actívalo en Settings -> QVeris o con vibe-trading data mode paid.
Aviso de QVeris: registrarte a través del enlace de referido de Vibe-Trading te da +1.000 créditos de bonificación y apoya el proyecto.
Los inventarios detallados se pliegan a continuación para mantener el README principal fácil de escanear. Ábrelos cuando quieras inspeccionar los bloques de construcción disponibles.
Biblioteca de Skills Financieras 90 skills en 9 categorías
- 📊 90 skills financieras especializadas organizadas en 9 categorías
- 🌐 Cobertura completa desde mercados tradicionales hasta cripto y DeFi
- 🔬 Capacidades integrales que abarcan desde el sourcing de datos hasta la investigación cuantitativa
| Categoría | Skills | Ejemplos |
|---|---|---|
| Fuente de Datos | 10 | data-routing, tushare, yfinance, okx-market, akshare, mootdx, ccxt, eastmoney, sec-edgar, qveris |
| Estrategia | 19 | strategy-generate, cross-market-strategy, technical-basic, candlestick, ichimoku, elliott-wave, smc, multi-factor, ml-strategy |
| Análisis | 23 | factor-research, correlation-regime, macro-analysis, global-macro, valuation-model, investor-lenses, credit-analysis, dividend-analysis |
| Clase de Activo | 9 | options-strategy, options-advanced, convertible-bond, etf-analysis, asset-allocation, sector-rotation |
| Cripto | 7 | perp-funding-basis, liquidation-heatmap, stablecoin-flow, defi-yield, onchain-analysis |
| Flujo | 8 | hk-connect-flow, us-etf-flow, edgar-sec-filings, financial-statement, adr-hshare |
| Herramienta | 10 | backtest-diagnose, report-generate, pine-script, doc-reader, web-reader, vnpy-export, trade-journal |
| Investigación | 2 | alpha-zoo, strategy-dev-manager |
| Análisis de Riesgo | 1 | ashare-pre-st-filter |
Fuente de Datos Personalizada registra tu propio loader histórico de OHLCV
¿Necesitas un mercado o proveedor para el que no incluimos un loader? Añade tu
propio loader de barras históricas y selecciónalo con source="<name>". Los
pasos modifican el código fuente del paquete, así que ejecútalos desde un
clon (pip install -e .).
-
Escribe el loader — crea
agent/backtest/loaders/<name>_loader.pycon una clase que satisfagaDataLoaderProtocol(duck-typed, sin necesidad de clase base) y esté etiquetada con@register:import pandas as pd from backtest.loaders.registry import register @register class DataLoader: name = "mysource" # the value you pass as source= markets = {"us_equity"} # a_share/us_equity/hk_equity/crypto/futures/fund/macro/forex requires_auth = False def is_available(self) -> bool: return True # token present? network reachable? def fetch(self, codes, start_date, end_date, *, interval="1D", fields=None): # return {symbol: DataFrame indexed by trade_date, # columns: open, high, low, close, volume} ...
-
Registra el módulo para que
@registerse active — añade"backtest.loaders.<name>_loader"a_loader_modulesenagent/backtest/loaders/registry.py. -
Habilita el nombre en la validación de configuración — añade
"mysource"a_VALID_SOURCESenagent/backtest/runner.py. -
(Opcional) insértalo en el
FALLBACK_CHAINSde un mercado enregistry.pypara quesource="auto"pueda alcanzarlo. -
Úsalo —
source="mysource"en una configuración de backtest, o vía la CLI / el agente.
Los ticks en tiempo real / la profundidad del libro de órdenes quedan fuera del alcance de los loaders — la capa de loaders es solo barras históricas point-in-time. Los datos de mercado en vivo fluyen a través de los conectores de broker en su lugar:
okx/binance/ccxtpara cripto,futu/tigerpara acciones.
Conectores de Broker 13 brokers — lectura + paper, live acotado donde esté soportado
Perfiles centrados en el conector. La mayoría hace lectura + colocación de órdenes en cuenta paper — IBKR es de solo lectura, Robinhood es solo live (sin cuenta paper), y Trading 212 rechaza la colocación de órdenes por completo, incluido el paper; la colocación de órdenes live está acotada por un mandato definido por el usuario (lista blanca de símbolos, límites de tamaño de orden / exposición, límite diario de operaciones, interruptor de apagado instantáneo) y nunca retiene fondos — el broker ejecuta. Las herramientas de colocación de órdenes se mantienen fuera de MCP (solo agente + CLI). Las rutas de investigación / backtest están estructuralmente vetadas de cualquier endpoint live.
| Broker | Mercados | Capacidades |
|---|---|---|
| IBKR | global | TWS / Gateway local, solo lectura |
| Robinhood | EE. UU. | MCP agéntico (OAuth de escritorio) — lectura + live acotado |
| Tiger | EE. UU. / HK / A | lectura + paper + live acotado |
| Alpaca | EE. UU. | lectura + paper + live acotado (+ modo TAP de aislamiento de credenciales) |
| OKX · Binance | cripto | lectura + paper + live acotado |
| Futu | HK / EE. UU. / A | lectura + paper + live acotado |
| eToro | global | lectura + paper + live acotado (API pública; las claves demo solo alcanzan rutas /demo, además de flujos de copy-trading) |
| MetaTrader 5 | forex / CFD | lectura + paper + live acotado (estilo Exness; guardia de identidad demo ⇔ paper) |
| Longbridge · Dhan · Shoonya | EE. UU. / HK · India (NSE/BSE) | solo lectura + paper — sin discriminador de runtime paper/live, por lo que la colocación de órdenes live se rechaza de forma estricta |
| Trading 212 | Reino Unido / UE | completamente de solo lectura — place_order / cancel_order se rechazan de forma estricta incluso en paper |
Paper-vs-live es una guardia de runtime estructural por broker (formato de id de cuenta, separación de host, flag demo, o entorno de trading), nunca un flag de configuración que el agente pueda cambiar. Un broker que no exponga tal discriminador queda limitado a paper + solo lectura.
Equipos de Trading Preconfigurados 30 presets de swarm
- 🏢 30 equipos de agentes listos para usar
- ⚡ Flujos de trabajo financieros preconfigurados
- 🎯 Presets de inversión, trading y gestión de riesgo
| Preset | Flujo de trabajo |
|---|---|
investment_committee |
Debate alcista/bajista → revisión de riesgo → decisión final del PM |
global_equities_desk |
Investigador de A-share + HK/US + cripto → estratega global |
crypto_trading_desk |
Funding/basis + liquidaciones + flujo → gestor de riesgo |
earnings_research_desk |
Fundamental + revisión + opciones → estratega de resultados |
macro_rates_fx_desk |
Tasas + FX + materias primas → PM macro |
quant_strategy_desk |
Screening + investigación de factores → backtest → auditoría de riesgo |
technical_analysis_panel |
TA clásico + Ichimoku + armónicos + Elliott + SMC → consenso |
risk_committee |
Drawdown + riesgo de cola + revisión de régimen → aprobación final |
global_allocation_committee |
A-shares + cripto + HK/US → asignación cross-market |
Además de más de 20 presets especializados adicionales — ejecuta vibe-trading --swarm-presets para explorarlos todos.
Trae los tuyos: coloca los YAML de preset en ~/.vibe-trading/swarm/presets/ — se listan
junto al catálogo incluido (los archivos con el mismo nombre lo sobrescriben, igual que los skills de usuario) y sobreviven a las actualizaciones.
Alpha Zoo 462 alphas cuantitativos preconstruidos en 5 familias
- 🧬 462 alphas cross-sectional, con prohibición de lookahead a nivel de la capa de operadores
- 📈 Categorización de IC + IR + vivo/invertido/muerto en un solo comando de la CLI
- 🔬 Puerta de pureza AST + test centinela de lookahead de 300 filas + interruptor de apagado de red
pytest-socket - 📦 Atribución Apache-2 para Qlib;
LICENSE.mdpor zoo que declara las fórmulas como contenido matemático - 🤝 Flujo de firma Developer Certificate of Origin (DCO) para PRs de la comunidad
| Zoo | Cantidad | Fuente | Licencia |
|---|---|---|---|
| qlib158 | 154 | Microsoft Qlib Alpha158 (Apache-2.0, fijado a un commit) |
Apache-2.0 |
| alpha101 | 101 | Kakushadze (2015), "101 Formulaic Alphas", arXiv:1601.00991 | Las fórmulas son contenido matemático |
| gtja191 | 191 | Guotai Junan (2014), "191 Short-period Trading Alpha Factors" | Las fórmulas son contenido matemático |
| academic | 12 | Fama-French 5 + momentum de Carhart + reversión de Jegadeesh + máximo de 52 semanas de George-Hwang + iliquidez de Amihud + skew de Harvey-Siddique + betting-against-beta de Frazzini-Pedersen + estabilidad por recableado de correlación (proxies basados en precio) | Literatura académica pública |
| fundamental | 4 | Datos de company facts de la SEC seguros PIT — earnings yield, ROE, rentabilidad bruta, crecimiento de activos (anclados a la fecha de presentación) | Datos financieros públicos |
Ejecuta vibe-trading alpha list para explorar, vibe-trading alpha show <id> para ver fórmulas + fuente, vibe-trading alpha bench --zoo X --universe Y --period Z para puntuar un zoo completo, y vibe-trading alpha compare --all para clasificar zoos entre sí.
Motores de Backtest 10 motores + cartera de opciones, composite cross-market
| Motor | Mercado | Notas |
|---|---|---|
| ChinaA | A-share | T+1, límites de precio, filtro pre-ST |
| GlobalEquity | EE. UU. / HK / Canadá | trading en la misma sesión; lotes, ticks y costos específicos de cada mercado |
| IndiaEquity | India (NSE/BSE) | T+1, bandas de circuito, pila de costos STT / stamp / SEBI / GST basada en configuración |
| KoreaEquity | Corea (KRX: KOSPI/KOSDAQ) | solo largo, banda de ±30% evaluada en el momento de ejecución sobre la malla de ticks unificada, impuesto de transacción del 0.20% en 2026 |
| Crypto | spot cripto / perps USD-M | liquidaciones de funding, división ejecución/mark |
| ChinaFutures · GlobalFutures | futuros | margen, multiplicadores de contrato |
| Forex | FX / metales | vía el loader mt5 |
| Composite | cross-market | un único pool de capital compartido entre mercados (source="auto") |
| options_portfolio | opciones | multi-leg, greeks, payoff/escenario |
Barras intradía: 1m / 5m / 15m / 30m / 1H / 4H / 1D. 15 métricas + comparación con benchmark, 5 optimizadores de cartera (volatilidad-igual / risk-parity / media-varianza / máxima diversificación / con conciencia de turnover), y 3 herramientas de validación (Monte Carlo / Bootstrap / Walk-Forward).
Quant Library 286 funciones probadas en 19 módulos, invocables desde cualquier transporte
src/quantlib contiene una implementación probada de cada pieza de matemática
financiera que el agente necesita. Las skills importan estas funciones en
lugar de llevar fórmulas dentro de bloques de código markdown — si encuentras
una fórmula de pricing viviendo en un SKILL.md, eso es un bug, no un patrón.
| Módulo | Qué cubre |
|---|---|
options |
Precio Black-Scholes + greeks, inversión de volatilidad implícita |
fixedincome |
Matemática de bonos, ajuste de curva Nelson-Siegel / Svensson |
credit |
Z-score de Altman, distancia al default Merton / KMV |
timeseries |
Estacionariedad, cointegración, GARCH, bootstrap |
risk · var_backtest |
VaR / CVaR / EVT y sus backtests |
attribution |
Descomposición de Brinson-Fachler |
performance · fundmath |
TWR / MWR / Dietz modificado; XIRR / MOIC / DPI / TVPI |
factormodel · eventstudy |
Regresiones de factores, estudios de eventos |
multipletesting · crossvalidation |
Significancia deflacionada, CV purgada |
impact |
Modelos de impacto de mercado |
La herramienta de solo lectura quantlib_call da acceso a todo esto mediante un
único contrato, de modo que la matemática financiera funciona en la CLI, la Web
UI, la API REST y MCP — incluidos despliegues donde bash está bloqueado. Es
estructuralmente no un shell — allowlist de módulos, despacho solo mediante
__all__, export_* rechazado. La econometría necesita el extra stats
(pip install "vibe-trading-ai[stats]"); esas funciones hacen lazy-import y te
indican cuál falta.
Valoración e Investigación Institucional DCF, comparables, three-statement, y seis comandos de investigación
Un motor de valoración que se niega a inventar sus propios inputs. La única
regla en contracts.py: un input faltante hace que un modelo sea NOT
RUNNABLE y nunca se le asigna un valor por defecto de forma silenciosa — cada
valor por defecto en un modelo de valoración es una opinión disfrazada de
constante.
| Modelo | Comportamiento que vale la pena conocer |
|---|---|
run_dcf |
Puente FCFF, construcción de WACC, descuento a mitad de año, puente de deuda neta, grilla de sensibilidad WACC×g. Valor terminal dual: cada método se contrasta contra el múltiplo implícito y la g implícita del otro |
run_comps |
Puente de EV, calendarización LTM + año calendario, matriz de múltiplos. Un peer con un denominador no positivo se excluye y se reporta, nunca se promedia como un múltiplo negativo |
threestatement |
Proyección enlazada con una aserción de balance estricta, un plug explícito de revolver, y una circularidad iterada interés↔deuda que debe converger o lanzar un error |
Los artefactos están hasheados por input y versionados, con exportación a xlsx / pptx.
Seis slash commands impulsan los flujos de trabajo — /comps /dcf /attrib
/memo /earnings /screen — cada uno con un esqueleto de pasos y un ejemplo
resuelto aritméticamente consistente (la descomposición de Brinson suma
exactamente al retorno activo; el puente de resultados suma exactamente a la
variación del EPS). La skill investor-lenses apila marcos de razonamiento de
inversores reconocidos por encima como capas de análisis: cada lente es un
procedimiento operativo — señales prioritarias, condiciones descalificantes,
mal uso típico — no una biografía, y no nombra ninguna herramienta.
Más allá de las barras, src/entities ingiere flujos de caja con fechas
irregulares (NAVs, capital calls, cupones) y cashflow_performance reporta
XIRR / MOIC / DPI / TVPI / TWR / Dietz modificado / MWR sobre ellos. Esta ruta
es deliberadamente paralela a los motores de barras para que una columna nav
nunca pueda llegar a uno de ellos y ser valorada como un cierre.
Gobernanza y Registro de Auditoría responder "¿qué metodología produjo ese número?"
Cada ejecución escribe un manifiesto que hashea el prompt, el contenido de la skill, el registro de herramientas y las versiones del paquete, de modo que un número producido el mes pasado pueda rastrearse hasta la metodología exacta que lo produjo.
El ledger de auditoría encadena cada registro al hash de su predecesor y
hace fsync, de modo que editar o eliminar un registro es detectable — e incluso
una edición que recalcula su propio hash queda igualmente atrapada un registro
más adelante vía prev_hash_mismatch. Las marcas de tiempo siempre son
proporcionadas por el llamador; ningún módulo aquí llama a datetime.now().
La redacción de trazas es consciente del sink: los argumentos de las
llamadas a herramientas y el ledger de auditoría en vivo usan un sink de fallo
cerrado donde content permanece redactado, mientras que el sink de resultado
de herramienta lo libera y depura por patrones sus hojas de string. env
nunca se libera en ninguno de los dos.
cli_sm.mp4 |
frontend_sm.mp4 |
| ☝️ Backtest en lenguaje natural y debate de swarm multiagente — Web UI + CLI | |
pip install vibe-trading-aiLuego ejecuta una primera tarea de investigación:
vibe-trading init
vibe-trading run -p "Backtest a BTC-USDT 20/50 moving-average strategy for 2024 and summarize return and drawdown"¿Actualizando desde una versión anterior? La 0.1.10 pasó a LangChain 1.x. Si las importaciones fallan después de ejecutar
pip install -U vibe-trading-aisobre una instalación anterior a la 0.1.10 (por ejemplo, si langgraph no se puede importar), recrea el venv o ejecutapip install --force-reinstall vibe-trading-ai. Una instalación nueva no se ve afectada.
Nombre del paquete frente a los comandos: El paquete de PyPI es
vibe-trading-ai. Una vez instalado, obtienes tres comandos:
Comando Propósito vibe-tradingCLI / TUI interactivo vibe-trading serveInicia el servidor web FastAPI vibe-trading-mcpInicia el servidor MCP (para Claude Desktop, OpenClaw, Cursor, etc.)
vibe-trading init # configuración interactiva de .env
vibe-trading # inicia la CLI
vibe-trading serve --port 8899 # inicia la interfaz web
vibe-trading-mcp # inicia el servidor MCP (stdio)| Ruta | Ideal para | Tiempo |
|---|---|---|
| A. Docker | Pruébalo ya, sin configuración local | 2 min |
| B. Local install | Desarrollo, acceso completo a la CLI | 5 min |
| C. MCP plugin | Conéctalo a tu agente existente | 3 min |
| D. ClawHub | Un solo comando, sin clonar | 1 min |
- Una clave de API de LLM de cualquier proveedor compatible, o ejecútalo localmente con Ollama (no necesita clave)
- Python 3.11+ para el Path B
- Docker para el Path A
- OpenAI Codex también se puede usar con ChatGPT OAuth: configura
LANGCHAIN_PROVIDER=openai-codexy luego ejecutavibe-trading provider login openai-codex. Esto no usaOPENAI_API_KEY.
Proveedores de LLM compatibles: OpenRouter, Requesty, OpenAI, Anthropic (API de Messages nativa), DeepSeek, Gemini, Groq, DashScope/Qwen, Zhipu, Moonshot/Kimi, MiniMax, SiliconFlow (CN + Global), Xiaomi MIMO, Novita AI, iFlytek Spark, Z.ai, NVIDIA NIM, ModelScope, GitHub Copilot, Ollama (local). Cuando no se configura ningún
*_BASE_URL, cada proveedor recurre a su endpoint canónico, así que basta con una clave. Consulta.env.examplepara la configuración.
Consejo: Todos los mercados funcionan sin ninguna clave de API gracias al fallback automático. yfinance/Yahoo (HK/US/Canadá), OKX (cripto), mootdx (acciones A, conexión TCP directa, sin limitación de IP) y AKShare (acciones A, EE. UU., HK, futuros, forex) son gratuitos. El token de Tushare es opcional — mootdx es el fallback preferido sin token para acciones A, con AKShare como respaldo más amplio.
git clone https://github.com/HKUDS/Vibe-Trading.git
cd Vibe-Trading
cp agent/.env.example agent/.env
# Edit agent/.env — uncomment your LLM provider and set API key
docker compose up --buildAbre http://localhost:8899. Backend + frontend en un mismo contenedor.
Note
OAuth de OpenAI Codex con Docker: el inicio de sesión en el navegador necesita una terminal para que puedas pegar la URL de callback. Ejecútalo a través de Compose, que asigna automáticamente una terminal interactiva:
docker compose exec vibe-trading vibe-trading provider login openai-codexSi usas docker exec directamente, pasa -it antes del nombre del contenedor.
Docker publica el backend en 127.0.0.1:8899 de forma predeterminada y ejecuta la aplicación como un usuario de contenedor no root. Si expones la API intencionalmente más allá de tu propia máquina, configura un API_AUTH_KEY fuerte y envía Authorization: Bearer <key> desde los clientes.
Note
Uso de Ollama con Docker: el contenedor accede a un Ollama alojado en el host mediante host.docker.internal, no localhost (dentro del contenedor, localhost es el propio contenedor). docker-compose.yml establece OLLAMA_BASE_URL en http://host.docker.internal:11434 por defecto; exporta OLLAMA_BASE_URL (o configúralo en un .env de nivel superior) para apuntar a otro lugar. Esto depende del mapeo host-gateway en extra_hosts, que requiere Docker Engine ≥ 20.10 / Compose v2 (disponible automáticamente en Docker Desktop).
Tus datos sobreviven a las actualizaciones: la memoria persistente, el índice de búsqueda entre sesiones, las skills creadas por el usuario, las cuentas shadow, la configuración de conectores de broker, las sesiones web, las ejecuciones de backtest, el historial de swarm y los archivos subidos residen todos en volúmenes de Docker con nombre, así que git pull && docker compose up --build los conserva. Las respuestas web en curso también se guardan como checkpoints, de modo que un reinicio restaura la respuesta parcial y marca el intento como interrumpido en lugar de descartarla en silencio. Los datos solo se eliminan con docker compose down -v.
git clone https://github.com/HKUDS/Vibe-Trading.git
cd Vibe-Trading
python -m venv .venv
# Activate
source .venv/bin/activate # Linux / macOS
# .venv\Scripts\activate.bat # Windows CMD
# .venv\Scripts\Activate.ps1 # Windows PowerShell
pip install -e .
cp agent/.env.example agent/.env # Edit — set your LLM provider API key
vibe-trading # Launch interactive TUINote
En Windows: cp es un alias de PowerShell para Copy-Item, así que los fragmentos anteriores funcionan tal cual en PowerShell. CMD no tiene cp — usa en su lugar copy agent\.env.example agent\.env (esto también aplica al fragmento de Docker anterior). Si PowerShell se niega a ejecutar Activate.ps1, ejecuta primero Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned; esto se aplica solo a esa sesión de shell.
Iniciar la interfaz web (opcional)
# Terminal 1: API server
vibe-trading serve --port 8899
# Terminal 2: Frontend dev server
cd frontend && npm install && npm run dev # requiere Node >= 22.22Abre http://localhost:5899. El frontend envía las llamadas a la API mediante proxy a localhost:8899.
Modo de producción (un solo servidor):
cd frontend && npm run build && cd ..
vibe-trading serve --port 8899 # FastAPI serves dist/ as static files[!NOTE]
vibe-trading servese vincula a0.0.0.0pero, de forma predeterminada, solo confía en loopback: abrir la interfaz en la misma máquina (http://localhost:8899) funciona sin ninguna configuración. Si navegas desde otra máquina, un host de VM o un teléfono en tu LAN, los endpoints sensibles devuelven403y el chat muestra "Remote API access requires an API key" — configura unAPI_AUTH_KEYfuerte enagent/.env, reinicia, e introduce la misma clave una vez en Settings. (Puerta de enlace de host de Docker Desktop: configuraVIBE_TRADING_TRUST_DOCKER_LOOPBACK=1manteniendo el enlace de puerto predeterminado127.0.0.1.)
Consulta la sección MCP Plugin más abajo.
npx clawhub@latest install vibe-trading --forceEl skill + configuración MCP se descarga en el directorio de skills de tu agente. Consulta ClawHub install para más detalles.
Copia agent/.env.example a agent/.env y descomenta el bloque del proveedor que quieras usar. Cada proveedor necesita entre 3 y 4 variables:
| Variable | Obligatoria | Descripción |
|---|---|---|
LANGCHAIN_PROVIDER |
Sí | Nombre del proveedor (openrouter, deepseek, groq, ollama, etc.) |
<PROVIDER>_API_KEY |
Sí* | Clave de API (OPENROUTER_API_KEY, DEEPSEEK_API_KEY, etc.) |
<PROVIDER>_BASE_URL |
Sí | URL del endpoint de la API |
LANGCHAIN_MODEL_NAME |
Sí | Nombre del modelo (p. ej., deepseek-v4-pro) |
TUSHARE_TOKEN |
No | Token de Tushare Pro para datos de acciones A (recurre a AKShare como fallback) |
TIMEOUT_SECONDS |
No | Tiempo de espera para llamadas al LLM, 120 s por defecto |
API_AUTH_KEY |
Recomendado para despliegues en red | Token Bearer requerido cuando la API es accesible desde clientes no locales |
VIBE_TRADING_ENABLE_SHELL_TOOLS |
No | Activación explícita de herramientas con capacidad de shell en despliegues tipo API remota/MCP-SSE |
VIBE_TRADING_ALLOWED_FILE_ROOTS |
No | Rutas raíz adicionales, separadas por comas, para la importación de documentos y diarios de broker |
VIBE_TRADING_ALLOWED_RUN_ROOTS |
No | Rutas raíz adicionales, separadas por comas, para directorios de ejecución de código generado |
VIBE_TW_STOCK_DB |
No | Ruta a una instantánea SQLite del mercado taiwanés; la herramienta de solo lectura taiwan_stock_data solo se registra cuando el esquema es válido |
VIBE_TRADING_EXTRA_CORS_ORIGINS |
No | Orígenes separados por comas que se añaden a los valores predeterminados de CORS de loopback (CORS_ORIGINS los reemplaza en cambio) |
CONTENT_FILTER_WARNING_THRESHOLD |
No | Umbral de proporción de aviso del filtro de contenido (por defecto 0.05 = 5%). Cuando la proporción de respuestas del LLM bloqueadas por moderación de contenido supera este valor, la run card te avisa para que cambies de proveedor. |
* Ollama no requiere clave de API. OpenAI Codex usa ChatGPT OAuth y almacena los tokens mediante oauth-cli-kit, no en agent/.env.
Datos gratuitos (sin necesidad de clave): acciones A mediante AKShare, acciones de HK/EE. UU./Canadá mediante Yahoo/yfinance, cripto mediante OKX, más de 100 exchanges de cripto mediante CCXT. El sistema selecciona automáticamente la mejor fuente disponible para cada mercado.
Vibe-Trading es un agente que depende intensamente de herramientas: skills, backtests, memoria y swarms fluyen todos a través de llamadas a herramientas. La elección del modelo determina directamente si el agente usa sus herramientas o fabrica respuestas a partir de datos de entrenamiento.
| Nivel | Ejemplos | Cuándo usarlo |
|---|---|---|
| Best | anthropic/claude-opus-4.7, anthropic/claude-sonnet-4.6, openai/gpt-5.5-pro, google/gemini-3.5-flash |
Swarms complejos (3+ agentes), sesiones de investigación largas, análisis de calidad de paper |
| Sweet spot (predeterminado) | deepseek-v4-pro, deepseek/deepseek-v4-pro, x-ai/grok-4.20, z-ai/glm-5.1, moonshotai/kimi-k2.6, qwen/qwen3-max-thinking |
Opción diaria — llamadas a herramientas confiables a ~1/10 del costo |
| Evitar para uso en agentes | *-nano, *-flash-lite, *-coder-next, variantes pequeñas / destiladas |
Las llamadas a herramientas son poco confiables — el agente parecerá "responder de memoria" en lugar de cargar skills o ejecutar backtests |
El agent/.env.example predeterminado viene configurado con la API oficial de DeepSeek + deepseek-v4-pro; los usuarios de OpenRouter pueden usar deepseek/deepseek-v4-pro.
La TUI interactiva (vibe-trading) ahora usa una transcripción nativa de terminal: un banner de inicio, una regla de prompt, un resumen del turno anterior, una barra de actividad en vivo, el renderizado de Markdown/tablas y el tiempo de ejecución, todo permanece en la CLI. Las invocaciones no interactivas como vibe-trading run, los pipes y --json siguen siendo adecuadas para scripts.
vibe-trading # interactive TUI
vibe-trading run -p "..." # single run
vibe-trading serve # API server
vibe-trading alpha list # explora 462 alphas preconstruidos; subcomandos show / bench / compare / export-manifest disponibles
vibe-trading playbook list # cinco plantillas de investigación programada; subcomandos show / create disponibles
vibe-trading channels status --local # inspecciona la configuración de canales IM y sugerencias de instalación
vibe-trading provider doctor # imprime diagnósticos redactados de provider/proxy/paquetesComandos slash dentro de la TUI
| Comando | Descripción |
|---|---|
/help |
Muestra los atajos de teclado y la lista de comandos |
/model |
Cambia el proveedor de LLM y el modelo |
/memory |
Muestra / administra la memoria persistente |
/history |
Explora y reanuda sesiones anteriores |
/goal |
Inicia / inspecciona un objetivo de investigación financiera |
/search |
Búsqueda de texto completo en todas las sesiones |
/swarm |
Preajustes multiagente (comité / cuantitativo / riesgo) |
/skill |
Lista / carga / descarga skills |
/show |
Muestra una ejecución anterior por id |
/clear |
Borra la conversación actual |
/pine |
Exporta la estrategia actual como Pine Script |
/journal |
Analiza el CSV del diario de operaciones |
/shadow |
Entrena / visualiza la cuenta shadow |
/export |
Exporta la sesión actual (md / json) |
/debug |
Activa o desactiva el panel de depuración (uso de tokens / latencia) |
/comps |
Análisis de empresas comparables (múltiplos de pares → rango implícito) |
/dcf |
Valoración por flujo de caja descontado con cuadrícula de sensibilidad |
/attrib |
Atribución Brinson-Fachler (asignación vs. selección) |
/memo |
Memo de inversión — tesis, visión alternativa, escenarios, criterios de invalidación |
/earnings |
Revisión de resultados — puente de sorpresas de ingresos a EPS |
/screen |
Filtro sistemático de ideas — hipótesis, funnel, cola de supervivientes |
/playbook |
Plantillas de investigación programada (listar / ejecutar / programar) |
/connector |
Perfiles de conectores de trading (estado / iniciar / detener) |
/halt |
Interruptor de emergencia — detiene TODO el trading en vivo de inmediato |
/resume |
Desactiva el interruptor de emergencia (reactiva el trading en vivo) |
/data |
Modo de enrutamiento de datos |
/quit |
Salir (también: q, exit, :q) |
Single run y flags
vibe-trading run -p "Backtest BTC-USDT MACD strategy, last 30 days"
vibe-trading run -p "Analyze AAPL momentum" --json
vibe-trading run -f strategy.txt
echo "Backtest 000001.SZ RSI" | vibe-trading runvibe-trading -p "your prompt"
vibe-trading --skills
vibe-trading --swarm-presets
vibe-trading --swarm-run investment_committee '{"topic":"BTC outlook"}'
vibe-trading --list
vibe-trading --show <run_id>
vibe-trading --code <run_id>
vibe-trading --pine <run_id> # Export indicators (TradingView + TDX + MT5)
vibe-trading --trace <run_id>
vibe-trading --continue <run_id> "refine the strategy"
vibe-trading --upload report.pdfvibe-trading alpha list --zoo gtja191 --limit 10
vibe-trading alpha show gtja191_171
vibe-trading alpha bench --zoo gtja191 --universe csi300 --period 2018-2025 --top 20Canales IM
Los adaptadores de canales IM conectan aplicaciones de chat externas al mismo runtime de sesión que usan la Web UI y la CLI. Configura los adaptadores habilitados en channels dentro de ~/.vibe-trading/agent.json; los adaptadores basados en SDK son extras opcionales, y si falta un SDK se muestran sugerencias de recuperación en lugar de bloquear el runtime.
Para tareas de canal de larga duración, ajusta el presupuesto central de espera de respuesta del asistente con replyTimeoutS (segundos, por defecto 600):
{
"channels": {
"replyTimeoutS": 1800,
"feishu": {
"enabled": true
}
}
}Esto controla cuánto tiempo espera el runtime de canal compartido a que la sesión del agente produzca un mensaje del asistente; los timeouts HTTP/socket de cada adaptador siguen siendo específicos de cada uno.
vibe-trading channels status --local # inspecciona la configuración y sugerencias de SDK faltante sin usar la API
vibe-trading channels status # consulta el runtime de la API en ejecución
vibe-trading channels start # inicia los adaptadores habilitados a través de la API
vibe-trading channels stop # detiene los adaptadores habilitados a través de la API
vibe-trading channels login weixin # ejecuta el hook de inicio de sesión del adaptador cuando sea necesario
vibe-trading channels pairing --channel telegram listvibe-trading channels login feishu guarda las credenciales de la aplicación autorizadas por QR en ~/.vibe-trading/agent.json con permisos de archivo solo para el propietario antes de informar que el inicio de sesión fue exitoso.
Los adaptadores integrados cubren websocket, telegram, slack, discord, matrix, whatsapp, signal, qq, napcat, weixin, wecom, feishu, dingtalk, msteams, email y mochat. Usa extras específicos como pip install "vibe-trading-ai[telegram]", o instala el conjunto completo de canales con pip install "vibe-trading-ai[channels]".
Comandos slash dentro del chat (independientes del canal, funcionan en los 16 adaptadores):
| Comando | Descripción |
|---|---|
/new |
Reinicia la sesión actual — el siguiente mensaje inicia una conversación nueva |
/reset |
Alias de /new |
/newsession |
Alias de /new |
/pairing list |
Muestra las solicitudes de emparejamiento de remitentes pendientes (solo operadores) |
Los comandos no distinguen mayúsculas/minúsculas y deben enviarse como el mensaje completo (por ejemplo, hello /new se trata como un mensaje normal, no como un reinicio).
/pairingestá restringido a operadores. Los comandos de control de emparejamiento dentro del chat se rechazan a menos que el remitente figure como operador — configurachannels.operators(autoridad entre canales) o la propia listaoperatorsde la sección de un canal en tu configuración de canales. Sin operadores configurados,/pairingdentro del chat se rechaza (fail-closed) y el emparejamiento solo se gestiona a través de la CLI autenticada (vibe-trading channels pairing …) y el endpoint REST protegido por autenticación. Esto evita que cualquier miembro de un grupo en la lista de permitidos pueda tomar control del emparejamiento entre canales.
# Moving average crossover on US equities
vibe-trading run -p "Backtest a 20/50-day moving average crossover on AAPL for the past year, show Sharpe ratio and max drawdown"
# RSI mean-reversion on crypto
vibe-trading run -p "Test RSI(14) mean-reversion on BTC-USDT: buy below 30, sell above 70, last 6 months"
# Multi-factor strategy on A-shares
vibe-trading run -p "Backtest a momentum + value + quality multi-factor strategy on CSI 300 constituents over 2 years"
# After backtesting, export to TradingView / TDX / MetaTrader 5
vibe-trading --pine <run_id>Compara un alpha zoo predefinido (una línea):
vibe-trading alpha bench --zoo gtja191 --universe csi300 --period 2018-2025 --top 20Explora el catálogo e inspecciona un alpha individual:
vibe-trading alpha list --zoo gtja191 --theme reversal --limit 10
vibe-trading alpha show gtja191_171Compón una señal multifactor a partir del zoo (Python):
from src.skills.multi_factor.zoo_signal_engine import ZooSignalEngine
engine = ZooSignalEngine.from_zoo(["gtja191_171", "gtja191_111", "gtja191_163"])
panel = ... # your wide OHLCV panel
signal = engine.compute_signal(panel)# Equity deep-dive
vibe-trading run -p "Research NVDA: earnings trend, analyst consensus, option flow, and key risks for next quarter"
# Macro analysis
vibe-trading run -p "Analyze the current Fed rate path, USD strength, and impact on EM equities and gold"
# Crypto on-chain
vibe-trading run -p "Deep dive BTC on-chain: whale flows, exchange balances, miner activity, and funding rates"# Bull/bear debate on a stock
vibe-trading --swarm-run investment_committee '{"topic": "Is TSLA a buy at current levels?"}'
# Quant strategy from screening to backtest
vibe-trading --swarm-run quant_strategy_desk '{"universe": "S&P 500", "horizon": "3 months"}'
# Crypto desk: funding + liquidation + flow → risk manager
vibe-trading --swarm-run crypto_trading_desk '{"asset": "ETH-USDT", "timeframe": "1w"}'
# Global macro portfolio allocation
vibe-trading --swarm-run macro_rates_fx_desk '{"focus": "Fed pivot impact on EM bonds"}'# Save your preferences once
vibe-trading run -p "Remember: I prefer RSI-based strategies, max 10% drawdown, hold period 5–20 days"
# The agent recalls them in future sessions automatically
vibe-trading run -p "Build a crypto strategy that fits my risk profile"# Analyze a broker export or earnings report
vibe-trading --upload trades_export.csv
vibe-trading run -p "Profile my trading behavior and identify any biases"
vibe-trading --upload NVDA_Q1_earnings.pdf
vibe-trading run -p "Summarize the key risks and beats/misses from this earnings report"vibe-trading serve --port 8899| Method | Endpoint | Description |
|---|---|---|
GET |
/runs |
Listar runs |
GET |
/runs/{run_id} |
Detalles del run |
GET |
/runs/{run_id}/pine |
Exportación de indicador multiplataforma |
POST |
/sessions |
Crear sesión |
POST |
/sessions/{id}/messages |
Enviar mensaje |
GET |
/sessions/{id}/events |
Flujo de eventos SSE |
POST |
/upload |
Subir un documento, archivo de datos o imagen |
GET |
/swarm/presets |
Listar presets de swarm |
POST |
/swarm/runs |
Iniciar un run de swarm |
GET |
/swarm/runs/{id}/events |
Flujo SSE del swarm |
GET |
/alpha/list |
Listar alphas (filtrar por zoo/theme/universe) |
GET |
/alpha/{alpha_id} |
Metadatos del alpha + código fuente |
POST |
/alpha/bench |
Iniciar un job de bench (devuelve job_id) |
GET |
/alpha/bench/{job_id}/stream |
Flujo SSE de progreso |
GET |
/settings/llm |
Leer los ajustes de LLM de la Web UI |
PUT |
/settings/llm |
Actualizar los ajustes de LLM locales |
GET |
/settings/data-sources |
Leer los ajustes locales de fuentes de datos |
PUT |
/settings/data-sources |
Actualizar los ajustes locales de fuentes de datos |
GET |
/channels/status |
Leer el estado del runtime y los adaptadores de canales de IM |
POST |
/channels/start |
Iniciar los adaptadores de canales de IM configurados |
POST |
/channels/stop |
Detener los adaptadores de canales de IM configurados |
POST |
/channels/pairing/command |
Ejecutar un comando de emparejamiento de remitente contra el almacén compartido |
POST |
/scheduled-runs |
Crear un job de investigación programada (interval-ms o cron) |
GET |
/scheduled-runs |
Listar jobs programados |
GET |
/scheduled-runs/status |
Estado del ejecutor y destinos de entrega configurados |
GET |
/scheduled-runs/{job_id} |
Leer un job programado |
DELETE |
/scheduled-runs/{job_id} |
Cancelar un job programado |
POST |
/scheduled-runs/proposals/{proposal_id}/commit |
Confirmar una creación/cancelación propuesta por el agente |
POST |
/scheduled-runs/proposals/{proposal_id}/discard |
Descartar una propuesta del agente |
GET |
/scheduled-runs/playbooks |
Listar las plantillas de investigación |
GET |
/scheduled-runs/playbooks/{slug} |
Mostrar una plantilla, con sus variables |
POST |
/scheduled-runs/playbooks/{slug} |
Programar un job a partir de una plantilla |
POST |
/sessions/{id}/cancel |
Detener el run en curso de la sesión (se registra como cancelado, no como fallido) |
POST |
/sessions/{id}/title/auto |
Resumir el primer intercambio en un título de sesión (nunca sobrescribe un renombrado manual) |
GET |
/correlation/regime |
Línea de tiempo del régimen de densidad de correlación |
GET |
/agents.json · POST /v1/query |
Puente con OpenBB Workspace — registrado solo con el extra opcional openbb; /v1/query requiere autenticación |
La documentación interactiva está disponible en http://localhost:8899/docs en
modo de desarrollo loopback sin clave. Cuando se configura API_AUTH_KEY, /docs y
/redoc quedan deshabilitados; las herramientas autenticadas pueden obtener /openapi.json con un
encabezado Authorization: Bearer <key>.
Para desarrollo en localhost, vibe-trading serve mantiene simple el flujo del navegador. Para cualquier cliente no local, los endpoints sensibles de la API requieren API_AUTH_KEY; usa Authorization: Bearer <key> para las solicitudes JSON/upload. Los flujos EventSource del navegador son gestionados por la Web UI después de que ingreses la misma clave una vez en Settings.
Las herramientas de proceso con capacidad de shell (bash / background_run / cancel_background) están habilitadas solo para la CLI local interactiva. Cualquier otra superficie — la API HTTP/SSE y el servidor MCP en todos los transportes (incluido stdio) — las mantiene desactivadas a menos que optes explícitamente por activarlas con VIBE_TRADING_ENABLE_SHELL_TOOLS=1 (o pases --enable-shell-tools a vibe-trading-mcp). El tipo de transporte nunca otorga acceso a shell de forma implícita. cancel_background solo detiene el task ID rastreado devuelto por background_run; la terminación amplia de procesos de Python por nombre se rechaza porque podría terminar Vibe-Trading mismo. Los lectores de documentos y journals están limitados por defecto a las raíces de upload/import; coloca los archivos bajo ~/.vibe-trading/uploads, ~/.vibe-trading/runs, ./uploads, ./data (o las heredadas agent/uploads / agent/runs), o agrega un directorio dedicado mediante VIBE_TRADING_ALLOWED_FILE_ROOTS. Las sesiones, runs, swarm runs, uploads y el índice sessions.db viven bajo ~/.vibe-trading (reubicable mediante la variable de entorno de shell VIBE_TRADING_HOME); el historial preexistente se traslada allí automáticamente en el primer arranque.
El código de backtest generado se ejecuta como un subproceso local de Python y puede hacer solicitudes de red a través de los cargadores de datos de mercado configurados. Su entorno es intencionalmente limitado: el runner conserva lo básico de OS/Python, la configuración de proxy/certificados, VIBE_TRADING_ALLOWED_RUN_ROOTS, y claves de solo lectura para datos de mercado como TUSHARE_TOKEN, FMP_API_KEY, FRED_API_KEY y VIBE_TRADING_IWENCAI_KEY. Por defecto no pasa claves de proveedores de LLM, tokens de autenticación de la API, interruptores de herramientas de shell, secretos de trading de brokers ni toggles de live/advisory al código de estrategia generado.
La página de Settings de la Web UI permite a los usuarios locales actualizar el proveedor/modelo de LLM, la URL base, los parámetros de generación, el reasoning effort y credenciales opcionales de datos de mercado como el token de Tushare. Los ajustes se persisten en agent/.env; los valores por defecto del proveedor se cargan desde agent/src/providers/llm_providers.json.
Las lecturas de Settings no tienen efectos secundarios: GET /settings/llm y GET /settings/data-sources nunca crean agent/.env, y solo devuelven rutas relativas al proyecto. Las lecturas y escrituras de Settings pueden exponer el estado de credenciales o actualizar credenciales/entorno de runtime, por lo que requieren API_AUTH_KEY cuando está configurada. Si API_AUTH_KEY no está definida en modo dev, el acceso a settings solo se acepta desde clientes loopback.
La misma página de Settings incluye un panel de Canales de IM para operadores locales. Consulta periódicamente /channels/status, muestra los estados configured/enabled/available/loaded/running, expone sugerencias de recuperación del adaptador, y puede iniciar o detener el runtime del canal configurado sin volver a la terminal.
Ejecuta un prompt de investigación o un backtest con una programación repetida — desde la página Scheduled en la web UI o mediante REST. El ejecutor en segundo plano está desactivado por defecto — inicia el servidor con VIBE_TRADING_ENABLE_SCHEDULER=1 para habilitarlo:
VIBE_TRADING_ENABLE_SCHEDULER=1 vibe-trading serve --port 8899Luego crea jobs mediante REST. schedule es o bien un entero simple (intervalo en milisegundos) o una expresión cron de 5 campos (min hour dom mon dow; cada campo acepta *, */n, números, listas separadas por comas, o rangos como 1-5). Cron se ejecuta según el reloj de pared de la timezone opcional del job (una clave IANA), de modo que la cadencia se mantiene a través de las transiciones de horario de verano — un hueco de "spring-forward" se omite, y un momento ambiguo de "fall-back" se ejecuta una sola vez, en su primera ocurrencia. Los jobs sin timezone mantienen la semántica UTC habitual:
# every 6 hours (cron)
curl -X POST http://localhost:8899/scheduled-runs \
-H "Content-Type: application/json" \
-d '{"prompt":"Scan CSI300 for momentum breakouts and backtest the top 5","schedule":"0 */6 * * *"}'
# weekdays at 23:30 Auckland wall time — DST-proof
curl -X POST http://localhost:8899/scheduled-runs \
-H "Content-Type: application/json" \
-d '{"prompt":"Pre-open scan of NZX names","schedule":"30 23 * * 1-5","timezone":"Pacific/Auckland"}'
# list / cancel
curl http://localhost:8899/scheduled-runs
curl -X DELETE http://localhost:8899/scheduled-runs/<job_id>Cada disparo ejecuta el prompt a través de una sesión de agente nueva (los parámetros opcionales de backtest van en config), y los jobs se persisten bajo ~/.vibe-trading/ para sobrevivir a los reinicios. Sin el flag, los endpoints /scheduled-runs siguen registrando jobs, pero ninguno se dispara. Agrega -H "Authorization: Bearer <key>" a cada llamada cuando API_AUTH_KEY está configurada.
El agente ve exactamente una herramienta de programación, scheduled_research: las acciones de lectura inspeccionan estado/jobs/plantillas, y propose_create y propose_cancel solo persisten una propuesta de confirmación de corta duración; nunca mutan el almacén de jobs. La web muestra una tarjeta de confirmación determinista, la CLI pregunta y/N, y las conversaciones de IM requieren responder exactamente confirm (确认) o cancel (取消) — solo esa acción de superficie llama al endpoint de commit. Cuando pasa end_at, el job queda expired y no vuelve a ejecutarse. La entrega es agnóstica del canal: configura referencias opacas reutilizables bajo channels.deliveryTargets; el agente y las superficies de confirmación ven ref/label/channel pero nunca el chat/user id crudo del proveedor. El estado de entrega es accepted cuando un adaptador tuvo éxito sin recibo del proveedor, y sent solo cuando devolvió un id de mensaje del proveedor (actualmente implementado de extremo a extremo para Feishu).
Cinco plantillas listas para programar vienen incluidas con el scheduler — premarket-brief, earnings-season-tracker, portfolio-checkup, a-share-money-flow, institutional-holdings-diff. Cada una expresa en lenguaje natural los datos que necesita un run en lugar de nombrar herramientas, de modo que una plantilla sigue funcionando a medida que crece la superficie de herramientas, y cada una está obligada a señalar un input faltante en lugar de completarlo de memoria. Accede a ellas desde la CLI, mediante REST, o con /playbook en la TUI:
vibe-trading playbook list # the five templates
vibe-trading playbook show premarket-brief # body, declared variables, suggested cadence
vibe-trading playbook create premarket-brief \
--var home_market="US equities" --var watchlist="AAPL, MSFT, NVDA" \
--timezone America/New_York
curl http://localhost:8899/scheduled-runs/playbooks
curl http://localhost:8899/scheduled-runs/playbooks/premarket-brief
curl -X POST http://localhost:8899/scheduled-runs/playbooks/premarket-brief \
-H "Content-Type: application/json" \
-d '{"variables":{"home_market":"US equities","watchlist":"AAPL, MSFT, NVDA"}}'Enviar {} programa una plantilla con su propia cadencia sugerida y sus valores por defecto declarados. El cuerpo renderizado se convierte textualmente en el prompt del job, y una variable no declarada se rechaza en lugar de ignorarse silenciosamente.
Vibe-Trading expone 74 MCP tools para cualquier cliente compatible con MCP. Se ejecuta como un subproceso stdio — no requiere configuración de servidor. Las herramientas de investigación principales funcionan sin ninguna API key para HK/US/crypto; las herramientas del conector de trading usan el perfil de conector seleccionado, y run_swarm necesita una LLM key.
Variables de entorno: el cliente lanza el servidor él mismo, así que un export de shell nunca le llega — configúralas en el bloque env del cliente. El código de backtest generado está confinado a los run roots permitidos, así que para escribir resultados en un workspace propio necesitas VIBE_TRADING_ALLOWED_RUN_ROOTS:
{
"mcpServers": {
"vibe-trading": {
"command": "vibe-trading-mcp",
"env": { "VIBE_TRADING_ALLOWED_RUN_ROOTS": "C:\\Users\\me\\research" }
}
}
}Claude Desktop
Añade a claude_desktop_config.json:
{
"mcpServers": {
"vibe-trading": {
"command": "vibe-trading-mcp"
}
}
}OpenClaw
Añade a ~/.openclaw/config.yaml:
skills:
- name: vibe-trading
command: vibe-trading-mcpPara una primera prueba de humo solo de investigación, confirma el descubrimiento
de herramientas y ejecuta una solicitud de datos de mercado o de backtest antes
de seleccionar un perfil de conector de trading. Las herramientas de
investigación principales pueden ejecutarse sin credenciales de broker; las
herramientas trading_* respaldadas por conector solo deben usarse después de
seleccionar y verificar intencionadamente un perfil de conector. run_swarm
requiere una LLM key.
Cursor / Windsurf / other MCP clients
vibe-trading-mcp # stdio (default)
vibe-trading-mcp --transport http # Streamable HTTP (current MCP spec default) at http://127.0.0.1:8900/mcp
vibe-trading-mcp --transport sse # legacy SSE (deprecated) for older clientsPara clientes HTTP (QwenPaw, y cualquier cliente que negocie enviando por POST
una InitializeRequest), usa --transport http y apunta el cliente al único
endpoint /mcp — por ejemplo, http://127.0.0.1:8900/mcp. No apuntes un
cliente HTTP a /sse; esa ruta pertenece al transporte SSE de dos endpoints
ya obsoleto y devolverá 405 Method Not Allowed en POST. Sobrescribe la
dirección de bind con --host / --port.
MCP tools expuestas (74): list_skills, load_skill, start_research_goal, get_research_goal, add_goal_evidence, update_research_goal_status, backtest, factor_analysis, alpha_zoo, alpha_bench, analyze_options, analyze_options_payoff, pattern_recognition, read_url, read_document, web_search, write_file, read_file, list_strategies, query_strategies, get_strategy_evidence, refresh_strategy_evidence, trading_connections, trading_select_connection, trading_check, trading_account, trading_positions, trading_orders, trading_quote, trading_history, list_swarm_presets, run_swarm, get_market_data, get_fund_flow, get_dragon_tiger, get_northbound_flow, get_margin_trading, get_block_trades, get_shareholder_count, get_lockup_expiry, get_sector_info, get_research_reports, get_stock_news, get_sec_filings, get_financial_statements, get_options_chain, get_stock_profile, screen_market, search_symbol, get_macro_series, iwencai_search, qveris_search, qveris_inspect, qveris_execute, get_institutional_holdings, etf_holdings, prediction_market, research_papers, get_swarm_status, get_run_result, list_runs, reap_stale_runs, retry_run, analyze_trade_journal, extract_shadow_strategy, run_shadow_backtest, render_shadow_report, scan_shadow_signals, quantlib_call, cashflow_performance, orderbook_depth, sentiment, technical_indicators, get_fundamentals.
Los workers de run_swarm pueden llamar a herramientas aprobadas por el operador provenientes de servidores MCP externos. Configura la allowlist del lado del servidor en VIBE_TRADING_SWARM_AGENT_CONFIG, ~/.vibe-trading/swarm-agent.json, o el respaldo ~/.vibe-trading/agent.json; luego lista las herramientas remotas en un swarm preset usando el nombre del wrapper MCP local, como mcp_internal_kb_search. Las variables proporcionadas por el llamador permanecen como simples datos de plantilla y no pueden inyectar URLs de MCP, comandos, variables de entorno ni overrides de la allowlist.
Install from ClawHub (one command)
npx clawhub@latest install vibe-trading --force
--forcees necesario porque el skill hace referencia a APIs externas, lo cual dispara el escaneo automático de VirusTotal. El código es completamente open-source y seguro de inspeccionar.
Esto descarga el skill + la configuración MCP al directorio de skills de tu agente. No se necesita clonar nada.
Explora en ClawHub: clawhub.ai/skills/vibe-trading
OpenSpace — self-evolving skills
Los 90 skills de finanzas están publicados en open-space.cloud y evolucionan de forma autónoma mediante el motor de auto-evolución de OpenSpace.
Para usarlo con OpenSpace, añade ambos servidores MCP a la configuración de tu agente:
{
"mcpServers": {
"openspace": {
"command": "openspace-mcp",
"toolTimeout": 600,
"env": {
"OPENSPACE_HOST_SKILL_DIRS": "/path/to/vibe-trading/agent/src/skills",
"OPENSPACE_WORKSPACE": "/path/to/OpenSpace"
}
},
"vibe-trading": {
"command": "vibe-trading-mcp"
}
}
}OpenSpace descubrirá automáticamente los 90 skills, habilitando auto-fix, auto-improve y compartición comunitaria. Busca skills de Vibe-Trading mediante search_skills("finance backtest") en cualquier agente conectado a OpenSpace.
Se conecta a una terminal MT5 en ejecución local a través del paquete oficial MetaTrader5 (solo Windows):
pip install "vibe-trading-ai[mt5]"Configura ~/.vibe-trading/mt5.json (créalo tú mismo; chmod 600 donde esté soportado):
{
"login": 12345678,
"password": "...",
"server": "Exness-MT5Trial8",
"symbol_suffix": "m",
"max_order_volume": 1.0,
"max_order_notional_usd": 10000
}Luego:
vibe-trading connector use mt5-paper-sdk
vibe-trading connector check
vibe-trading connector account
vibe-trading connector quote EURUSD
vibe-trading connector history EURUSD| Profile | Account | Orders |
|---|---|---|
mt5-paper-sdk |
demo | solo lectura |
mt5-live-sdk-readonly |
real | solo lectura |
mt5-paper-trade |
demo | colocación directa (aplican los límites de tamaño por orden del connector) |
mt5-live-trade |
real | controlado por mandato + kill-switch |
Límite de seguridad: "paper" significa la propia cuenta demo del broker, reverificada en cada llamada — la terminal reporta account_info().trade_mode y el número de cuenta con sesión iniciada, por lo que apuntar un perfil paper a una cuenta de dinero real (o al revés) se rechaza de plano. MT5 dimensiona las órdenes en lotes (1 lote EURUSD = 100.000 EUR); el gate de mandato live cotiza los lotes a través del hook USD del connector, y los propios límites max_order_volume / max_order_notional_usd del connector aplican tanto en demo como en live, fallando de forma cerrada cuando un nocional no puede cotizarse. En cuentas de hedging (el valor predeterminado de Exness), ten en cuenta que una orden opuesta abre una posición de hedge — cierra por ticket en su lugar (pasa el ticket de la posición a trading_cancel_order) para que la ejecución quede anclada a esa posición y solo pueda reducir la exposición. Ruta de rollback / detención: el kill switch bloquea nuevas órdenes live, mientras que la cancelación sigue disponible y se registra en el audit log. Los límites de mandato están denominados en USD; una moneda de cuenta distinta de USD es margenada por el broker en su propia moneda.
El loader de datos de mercado mt5 — la cabeza de la cadena de fallback de forex — comparte este mismo mt5.json. Si no existe dicho archivo, se conecta en modo solo lectura a la terminal usada más recientemente que ya tenga la sesión iniciada.
Se conecta a la API Pública de eToro para cuentas demo y reales mediante un par de claves de API (x-api-key + x-user-key). Los entornos demo y real están separados estructuralmente: las claves demo solo pueden acceder a las rutas de API /demo.
Configura ~/.vibe-trading/etoro.json (créalo tú mismo; usa chmod 600 donde esté disponible):
{
"api_key": "YOUR_PUBLIC_API_KEY",
"user_key": "YOUR_USER_KEY",
"profile": "paper"
}También puedes definir ETORO_API_KEY y ETORO_USER_KEY en ~/.vibe-trading/.env.
Luego:
vibe-trading connector use etoro-paper-sdk
vibe-trading connector check
vibe-trading connector account
vibe-trading connector positions
vibe-trading connector quote BTC| Perfil | Cuenta | Órdenes |
|---|---|---|
etoro-paper-sdk |
demo | solo lectura |
etoro-live-sdk-readonly |
real | solo lectura |
etoro-paper-trade |
demo | colocación directa en rutas demo |
etoro-live-trade |
real | condicionado por mandato + kill-switch |
La búsqueda de símbolos usa el buscador internalSymbolFull de eToro (por ejemplo, BTC → id de instrumento 100000). Usa la herramienta de agente etoro_search_instruments para resolver los tickers antes de operar.
Límite de seguridad: demo y real están separados por ruta y vinculados a la clave (paper_guard: path_separated_key_bound). Las acciones en real que aumentan el riesgo (abrir posiciones y copy-start/increase) requieren un mandato autorizado, un estado de halt despejado y una cuenta USD verificada para la aplicación del nocional de copia. Los cierres totales y parciales de posición validados, la cancelación de órdenes abiertas y el cierre de copia siguen disponibles en estado de halt y quedan registrados en auditoría. Cancelar un cierre pendiente o editar los stops de una posición es exclusivo de paper: la ruta real falla en cerrado (fail closed) porque esas operaciones pueden aumentar la exposición o transferir margen adicional sin suficientes datos de la API para cuantificar el riesgo incremental en USD. Los importes de copia se denominan en la divisa de la cuenta de eToro, y cada inicio/ajuste de copia requiere un id de referencia URL-safe de 1 a 35 caracteres proporcionado por el llamador para hacer polling. Las herramientas de escritura específicas de eToro (etoro_close_position, etoro_copy_*, etc.) son solo herramientas de agente, no se exponen vía MCP ni CLI. Rollback: revertir el/los commit(s) del conector o desactivar los perfiles; el halt bloquea nuevas acciones en real que aumenten el riesgo.
Esta es la dirección opuesta al Plugin MCP descrito arriba. El Plugin MCP permite que otros agentes llamen a las herramientas de Vibe-Trading. Esta sección permite que el agente integrado de Vibe-Trading llame a herramientas de tus servidores MCP externos.
Crea ~/.vibe-trading/agent.json:
{
"mcpServers": {
"my-server": {
"command": "uvx",
"args": ["my-mcp-server"]
}
}
}Ejecuta cualquier comando de la CLI: las herramientas de servidores externos ordinarios se inyectan automáticamente en el registro del agente después de las herramientas locales:
vibe-trading run "use my-server to do X"Vibe-Trading puede conectarse directamente al endpoint MCP remoto oficial de
Interactive Brokers en modo de solo lectura. Añade esto a ~/.vibe-trading/agent.json:
{
"mcpServers": {
"ibkr": {
"type": "streamableHttp",
"url": "https://api.ibkr.com/v1/api/mcp-public",
"auth": {
"type": "oauth",
"scopes": ["mcp.read"],
"clientName": "Vibe-Trading",
"cacheDir": "~/.vibe-trading/live/ibkr/oauth"
},
"enabledTools": ["*"]
}
}
}Luego inicia el flujo de OAuth en el navegador:
vibe-trading connector authorize ibkr-live-official-mcp-readonlyEl comodín solo se acepta para la sonda mcp.read de IBKR. Autorizar este
perfil confirma el acceso al scope de lectura oficial de IBKR; las llamadas genéricas a
trading_account y trading_positions permanecen deshabilitadas hasta que IBKR publique
nombres de herramientas de lectura estables que Vibe-Trading pueda mapear de forma segura. Una configuración
que añada mcp.write debe fijar una lista blanca explícita de herramientas y aun así pasar por el
guard de órdenes en real.
Si IBKR emite un cliente OAuth pre-registrado, añade clientId y clientSecret
dentro de auth.
Para usuarios que no pueden esperar la aprobación del cliente OAuth de IBKR, conéctate a una
sesión local de TWS o IB Gateway. Las credenciales permanecen dentro de la app de escritorio de IBKR; Vibe-
Trading solo se conecta a 127.0.0.1 y la expone como un perfil de conector.
Instala el SDK opcional:
pip install "vibe-trading-ai[ibkr]"Abre TWS en modo paper trading o IB Gateway paper, habilita los clientes de socket de API y luego ejecuta:
vibe-trading connector list
vibe-trading connector use ibkr-paper-local
vibe-trading connector configure ibkr-paper-local --yes
vibe-trading connector check
vibe-trading connector account
vibe-trading connector positions
vibe-trading connector orders
vibe-trading connector quote AAPL
vibe-trading connector history AAPL --duration "30 D" --bar-size "1 day"Puertos locales por defecto:
| App | Paper | Real de solo lectura |
|---|---|---|
| TWS | 7497 |
7496 |
| IB Gateway | 4002 |
4001 |
El agente expone herramientas con alcance de conector llamadas trading_connections,
trading_select_connection, trading_check, trading_account,
trading_positions, trading_orders, trading_quote y trading_history.
Las herramientas MCP crudas de brokers en real no se registran directamente como mcp_<broker>_*.
No se registra ninguna herramienta de colocación de órdenes para IBKR.
Opcional, desactivado por defecto. Si las variables TAP_* de abajo no están definidas, el
conector se comporta exactamente igual que antes (SDK directo del broker); nada cambia.
TAP (Tool Authorization Protocol) es un proxy de
credenciales: el agente nunca posee el secreto crudo de la API del broker, y las escrituras
con consecuencias reales están condicionadas a la aprobación humana. Con el modo TAP activado, cada
llamada a Alpaca (colocación de órdenes, cancelación, y las lecturas: cuenta/posiciones/órdenes/cotización/barras) se envía
al endpoint /forward del proxy TAP en lugar del SDK del broker; TAP inyecta la
clave real en el servidor y luego reenvía la solicitud hacia arriba.
- El proceso del agente no posee ninguna clave de Alpaca en absoluto — y ni siquiera necesita
alpaca-py— porque todo el tráfico de salida pasa por TAP. El secreto se referencia por nombre (<CREDENTIAL:alpaca.key_id>) y TAP lo sustituye. - Las escrituras se bloquean hasta la aprobación humana. Una orden o cancelación no puede llegar al broker
sin que un humano la apruebe; incluso un "compra ahora" inyectado mediante prompt queda retenido, y
denegarlo significa que nunca llega a Alpaca. Las órdenes llevan un
client_order_iddeterminístico, de modo que un reintento por condición de carrera en la aprobación se deduplica en lugar de colocarse dos veces. - Las lecturas se aprueban automáticamente. Cuenta/posiciones/órdenes/cotización/barras son GETs que TAP reenvía sin un paso humano — esto es aislamiento de credenciales (ninguna clave en el proceso), no una compuerta, así que la fricción añadida es prácticamente cero.
allowed_hostsen la credencial de TAP fija a dónde puede enviarse la clave, de modo que un destino manipulado se rechaza (403) antes de la inyección.
Cómo habilitarlo:
- En el panel de TAP, crea una credencial multi-secreto llamada
alpacaque contenga tu par de claves de Alpaca en los camposkey_idysecret_key, asignada a tu agente, con hosts permitidospaper-api.alpaca.markets(o el host realapi.alpaca.markets) ydata.alpaca.markets(el host de datos de mercado usado por quote/bars). Usa credenciales de TAP separadas para paper y real (por ejemplo,alpaca-paper/alpaca-live, seleccionadas medianteTAP_ALPACA_CREDENTIAL), cada una conallowed_hostsfijado a su propio host de API — así TAP se niega estructuralmente a enviar la clave de paper al host real y viceversa, manteniendo la separación paper/real nítida de principio a fin. - Añade a
agent/.env:
| Variable | Requerida | Descripción |
|---|---|---|
TAP_PROXY_URL |
Sí | URL base del proxy TAP (por ejemplo, https://proxy.tap.human.tech) |
TAP_AGENT_KEY |
Sí | Tu clave de API del agente TAP (secreto) |
TAP_ALPACA_CREDENTIAL |
No | Nombre de la credencial TAP para Alpaca (por defecto alpaca) |
TAP_APPROVAL_TIMEOUT |
No | Segundos a esperar la decisión de un humano (por defecto 300) |
Cuando se coloca una escritura, apruébala o denégala en tu canal de TAP (Telegram / panel). Una orden/cancelación aprobada se reenvía a Alpaca; una denegada o que agotó el tiempo de espera nunca se envía.
Limitación conocida — condición de carrera en la aprobación. Si el humano aprueba justo en el límite de
TAP_APPROVAL_TIMEOUT, TAP puede reenviar la orden mientras el polling ya se ha rendido: la compuerta entonces reporta un error aunque la orden llegó al broker, y el contadormax_trades_per_daycuenta una de menos. Elclient_order_iddeterminístico evita que un reintento coloque esa orden por duplicado; si dependes de un límite estricto de operaciones por día, revisa las órdenes abiertas después de un error de timeout de TAP antes de reintentar.
Alcance: cubre la colocación de órdenes, cancelación y las cinco lecturas de Alpaca — el tráfico de salida completo del conector, de modo que el proceso no posee la clave en ninguna ruta. Los brokers con firma HMAC (Binance/OKX) quedan como trabajo futuro (la firma del lado del cliente no encaja con la inyección de tráfico de salida pura). Los hooks son aditivos: viven dentro del conector de Alpaca y dejan intacta la compuerta de mandato en real.
| Campo | Tipo | Por defecto | Descripción |
|---|---|---|---|
type |
string | inferido para stdio; requerido para HTTP | Omítelo para stdio, o ponlo en sse / streamableHttp para servidores basados en URL. |
command |
string | requerido para stdio | Ejecutable a lanzar para servidores stdio. Inválido para servidores sse / streamableHttp. |
args |
array | [] |
Argumentos de línea de comandos solo para servidores stdio. |
env |
object | {} |
Variables de entorno adicionales fusionadas en el entorno del subproceso solo para servidores stdio. |
url |
string | requerido para sse / streamableHttp |
URL del endpoint remoto SSE / streamable HTTP. No se usa para servidores stdio. |
headers |
object | {} |
Cabeceras HTTP adicionales solo para servidores sse / streamableHttp. |
toolTimeout |
number | 30 |
Timeout por llamada a herramienta, en segundos |
initTimeout |
number | sin definir (max(toolTimeout, 30)) |
Timeout de initialize / autorización OAuth de MCP, en segundos. Úsalo para autorización lenta por navegador sin ampliar las llamadas ordinarias a herramientas. |
enabledTools |
array | ["*"] |
Lista blanca de herramientas. Usa ["*"] para exponer todas las herramientas del servidor |
Ubicación del archivo de configuración: ~/.vibe-trading/agent.json (JSON o YAML).
Para transportes basados en URL, type es obligatorio. El agente ya no adivina entre SSE y streamable HTTP a partir del sufijo de la URL.
Al crear una sesión mediante la API puedes pasar mcpServers dentro de session.config para extender o anular la configuración global solo para esa sesión:
{
"config": {
"mcpServers": {
"research-server": {
"command": "uvx",
"args": ["research-mcp"],
"enabledTools": ["search", "fetch"]
}
}
}
}Las herramientas remotas ordinarias se exponen con nombres estables: mcp_<server>_<tool>.
Los servidores MCP de brokers en real permanecen detrás de la superficie de conector trading_*.
Si dos nombres de servidor producen el mismo prefijo local seguro para ASCII (por ejemplo, foo-bar y foo_bar ambos se convierten en foo_bar), se añade un sufijo hash determinístico a nivel del segmento de servidor para que los nombres sigan siendo únicos. El operador recibe una advertencia:
WARNING: Configured MCP server 'foo-bar' collides with another server after local name
normalization. Using local tool prefix 'mcp_foo_bar_<hash>_<tool>' to keep generated
tool names unique. Rename the server in agent config if you want a different prefix.
| Límite | Detalle |
|---|---|
| Transporte | stdio, SSE y streamable HTTP |
| Ejecución | solo serial — las herramientas MCP nunca entran en la ruta paralela de solo lectura |
| Superficies | solo herramientas (resources y prompts excluidos en v1) |
| Recarga en caliente | no soportada — reinicia el proceso para aplicar cambios de configuración |
| Ruta Swarm | las herramientas MCP no están disponibles dentro de los registros de workers de Swarm en v1 |
Haz clic para expandir
Vibe-Trading/
├── agent/ # Backend (Python)
│ ├── cli/ # Paquete CLI — TUI interactiva + subcomandos
│ ├── api_server.py # Servidor FastAPI — runs, sesiones, carga, swarm, SSE
│ ├── mcp_server.py # Servidor MCP — 74 herramientas para OpenClaw / Claude Desktop
│ │
│ ├── src/
│ │ ├── agent/ # Núcleo del agente ReAct
│ │ │ ├── loop.py # compresión de 5 capas + agrupación de herramientas de lectura/escritura
│ │ │ ├── context.py # system prompt + auto-recuperación desde memoria persistente
│ │ │ ├── skills.py # cargador de skills (90 incluidas + creadas por el usuario vía CRUD)
│ │ │ ├── tools.py # clase base de herramientas + registro
│ │ │ ├── memory.py # estado ligero del workspace por ejecución
│ │ │ ├── frontmatter.py # parser de frontmatter YAML compartido
│ │ │ └── trace.py # escritor de traza de ejecución
│ │ │
│ │ ├── memory/ # Memoria persistente entre sesiones
│ │ │ └── persistent.py # memoria basada en archivos (~/.vibe-trading/memory/)
│ │ │
│ │ ├── tools/ # 107 herramientas de agente autodescubiertas
│ │ │ ├── backtest_tool.py # ejecuta backtests
│ │ │ ├── remember_tool.py # memoria entre sesiones (save/recall/forget)
│ │ │ ├── skill_writer_tool.py # CRUD de skills (save/patch/delete/file)
│ │ │ ├── session_search_tool.py # búsqueda FTS5 entre sesiones
│ │ │ ├── swarm_tool.py # lanza equipos swarm
│ │ │ ├── web_search_tool.py # búsqueda web con DuckDuckGo
│ │ │ └── ... # bash, E/S de archivos, análisis de factores, opciones, navegador de alpha + bench, etc.
│ │ │
│ │ ├── factors/ # Alpha Zoo — 462 alphas en 5 familias
│ │ │ ├── base.py # 19 operadores (rank/scale/ts_*/delta/decay_linear/safe_div/vwap)
│ │ │ ├── registry.py # carga de metadatos solo por AST + cómputo diferido + puertas de sanidad
│ │ │ ├── bench_runner.py # IC + categorización alive/reversed/dead
│ │ │ └── zoo/ # qlib158 (154) + alpha101 (101) + gtja191 (191) + academic (12) + fundamental (4)
│ │ │
│ │ ├── api/ # Módulos de rutas FastAPI
│ │ │ └── alpha_routes.py # /alpha/list, /alpha/{id}, /alpha/bench, flujo SSE
│ │ │
│ │ ├── skills/ # 90 skills financieras en 9 categorías (un SKILL.md cada una)
│ │ ├── swarm/ # Motor de ejecución de DAG swarm
│ │ │ └── presets/ # 30 definiciones YAML de presets swarm
│ │ ├── session/ # Chat multi-turno + búsqueda de sesiones FTS5
│ │ └── providers/ # Abstracción de proveedores LLM
│ │
│ └── backtest/ # Motores de backtest
│ ├── engines/ # 8 motores + motor compuesto multi-mercado + options_portfolio
│ ├── loaders/ # 24 fuentes: tushare, okx, binance, yfinance, akshare, baostock, tencent, mootdx, ccxt, futu, pykrx, local, eastmoney, sina, stooq, yahoo, finnhub, alphavantage, tiingo, fmp, longbridge, mt5, qveris, india_broker
│ │ ├── base.py # Protocolo DataLoader
│ │ └── registry.py # Registro + cadenas de fallback automáticas
│ └── optimizers/ # MVO, equal vol, max div, risk parity
│
├── frontend/ # Interfaz web (React 19 + Vite + TypeScript)
│ └── src/
│ ├── pages/ # Home, Agent, AlphaZoo, RunDetail, Compare, Correlation, Settings
│ ├── components/ # chat, gráficos, layout
│ └── stores/ # gestión de estado con Zustand
│
├── Dockerfile # Build multi-etapa
├── docker-compose.yml # Despliegue con un solo comando
├── pyproject.toml # Configuración del paquete + entrypoint de CLI
├── tools/ # Utilidades de CI a nivel de repositorio
│ └── ci_grep_gates.sh # rechaza yaml.load / marca registrada / filtraciones de datos por acción
└── LICENSE # MIT
Vibe-Trading forma parte del ecosistema de agentes de HKUDS:
|
NanoBot Ultra-Lightweight Personal AI Assistant |
AI-Trader Agent-Native Signal & Copy Trading Platform |
CLI-Anything Making All Software Agent-Native |
OpenSpace Self-Evolving AI Agent Skills |
ClawTeam Agent Swarm Intelligence |
Entregamos por fases. Los elementos se trasladan a Issues cuando comienza el trabajo.
| Fase | Función | Estado |
|---|---|---|
| Trust Layer | Se emiten run cards reproducibles y se muestran en Run Detail; v1 añade tool traces y citations | v0 publicado |
| Hypothesis Registry | Hipótesis de investigación duraderas con lifecycle status, data sources, skills, enlaces a run-card y notas de invalidación | MVP de backend publicado |
| Research Autopilot | Bucle de investigación manual-primero: hipótesis → backtest determinista → evidence report | Fases 1–3 publicadas |
| Data Bridge | Trae tus propios datos: conectores locales CSV/Parquet/SQL con mapeo de esquema | Cargador local publicado |
| Options Lab | Superficie de volatilidad, panel de Greeks, explorador de payoff/escenarios | Herramienta analítica de payoff/escenarios publicada; superficie/panel planificados |
| Portfolio Studio | Risk x-ray, restricciones, optimizador con reducción de turnover, notas de rebalanceo | Optimizador con reducción de turnover publicado en 0.1.11; el resto planificado |
| Alpha Zoo | 462 alphas preconstruidas (Qlib 158 + Kakushadze 101 + GTJA 191 + academic + fundamental) con benchmark en una línea, integración con el agente y Web UI | Publicado en 0.1.8, ampliado hasta 0.1.12 |
| Strategy Development Manager | Registra papers / research de brokers como factores y estrategias con un almacén persistente + lifecycle automatizado de decaimiento de IC/Sharpe | Publicado en 0.1.11 |
| Correlation Regime | Línea temporal de régimen por edge-density + histéresis, superpuesta en /correlation — detecta cuándo los mercados se fusionan en un solo bloque |
Publicado en 0.1.12 |
| Research Delivery | Briefs programados y sesiones de investigación en vivo a través de canales IM tipo Slack / Telegram / correo | Scheduler + runtime de IM publicados |
| Community | Skills, presets y strategy cards compartibles | En exploración |
¡Damos la bienvenida a las contribuciones! Consulta CONTRIBUTING.md para conocer las pautas.
Los Good first issues están etiquetados con good first issue — elige uno y comienza.
¿Quieres contribuir con algo más grande? Revisa el Roadmap anterior y abre un issue para discutirlo antes de empezar.
¡Gracias a todos los que han contribuido a Vibe-Trading!
Contribuidores y créditos recientes del ciclo v0.1.14:
- @Shizoqua — a 13-PR correctness sweep across nearly every subsystem: grounding auto-recovers identity and price evidence within a bounded budget (#1092), swarm isolates worker artifacts between retries (#1053), rejects raw
ok/successtool-result envelopes (#1052) and truncates oversized results with the shared notice (#1110), MCP gains offset paging for SEC filings and statements (#1138), routesload_skillthrough the registry so oversized skills page (#1137) and carries market-data provenance onget_market_data(#1131), plusexcess_returnconsistency (#1058), Wilder-EWM RSI (#1056), the FTS5 tokenizer floor (#1071), non-finite prediction-market fields (#1136), in-flight delivery protection (#1140) and preserved backtest validation evidence (#1139) - @shadowinlife — the run-analysis surface, four pages in one cycle: Options Lab (#1096), the Factor Research panel with its new IC correlation matrix (#1099), positions structure visualization (#1097) and the tearsheet tab (#1091); plus evidence-gated Strategy Discovery Phase 1 (#978) and Phase 2 decay monitoring (#1007), per-market volume units in market-data provenance (#1065) and baostock volume normalized to board lots (#1067)
- @pengpengyi92 — five quantlib numerics fixes:
xirrand money-weighted return survive long-horizon discount underflow (#1119), zero-volatility options discount their forward value (#1066), the fixed-income curve keeps decay inside the requested bounds (#1076), event studies anchor to the prior session (#1078) and cross-validation aligns label ends to the prior observation (#1079) - @cgycorey — reasoning effort honoured in chat completions (#1025), the per-task swarm
ChatLLMclosed to stop a pooled-connection leak (#1145) and the same for one-shot clients (#1153),gross_profitderived from revenue minus COGS when the SEC tag is absent (#1111), andvibe-trading show <run_id>dispatching its run id instead of the flag (#1147) - @lorenzozanee — the test suite stopped escaping into the real config root and its live audit ledger (#1118, closes #1116), recovery steering delivered as user messages with inline system tags (#1112), and unsupported ticker-plus-name symbol queries marked skipped rather than failed (#1114)
- @AndyLongest — the interactive backtest research dashboard (#1084), the engine reporting actual post-fill positions (#1082), and grounding ignoring identity constants in rate formulas (#1083)
- @ofeksh-tr — eToro runtime UI parity for SDK connector status (#1051) and its crypto browse and flat market-data quotes (#1070), plus an empty
Responsefor thescheduled-runsDELETE 204 (#1068) - @wiliao — the agent-run reliability pass: grounding false-rejections, the final-answer gate and LLM timeouts (#1105), with prompt wording and support/resistance masking (#1060)
- @jay79-boop — a selectable IBKR market-data tier with starved quotes reported as
no_data(#1075), and strict alpha t-stats surfaced in the bench JSON and HTML report (#1085) - @Robin1987China — DCF refusing non-finite inputs instead of a silent negative share price (#1121), and grounding masking ISO dates that run into CJK text (#1132)
- @zzz607 — grounding masking line-leading ordered-list markers before number extraction (#1063), and the East Money research-report endpoint given the time parameters it now requires (#1077)
- @Echoandelementwebsites — worker prompts ordered for prompt-cache-friendly prefixes (#1057), and tool-less agents no longer instructed to call
write_file(#1144) - @549236606-oss — seven extended read-only Futu connector endpoints, each fail-closed through the existing gateway envelope (#1135)
- @QCYTSN — the desktop update safety boundary: PID-scoped shutdown, dormant candidate verification, interrupted-attempt recovery, and a tested tampered/unsigned/wrong-publisher/downgrade rejection matrix (#1101)
- @honginp — offline USD-M account reconciliation with immutable snapshot contracts and deterministic drift reporting (#1106)
- @he-yufeng — each monitor's latest verdict parsed server-side and persisted on the job for the Market Watch list (#1152)
- @sykuang — GitHub Copilot as a provider through the official SDK, with no borrowed client ID and no editor-impersonation headers (#990)
- @miguelangelo78 — the hosted TickerAll MetaTrader 5 data source, so forex and metals backtests need no local MT5 terminal (#968)
- @ngoanpv — Vietnam equity (HOSE) support:
.VNno longer executes under China A-share rules (#1033) - @jax-novita — Novita AI registered as a built-in OpenAI-compatible provider (#1059)
- @daviddaco1 — the Spanish locale and
README_es.md, the sixth README (#1087) - @1psconstructor — German (Deutsch) UI support (#1117)
- @x-lambda — the tencent loader building its SSL context from the certifi CA bundle, unblocking HK quotes (#1113)
- @er-s-an —
build_registry()reporting partial construction instead of silently returning a short tool list (#1129) - @straun-repo — reasoning effort passed through to the Anthropic adapter (#1115)
- @nstavros —
connector ordersrendering broker_sdk rows, with SDK enum reprs stripped and class-B tickers left intact (#1150) - @lukiod —
.env.partialcreated with owner-only permissions (#1086) - @fixXxerTech — inferred strategy labels marked as inferred in the run dashboard (#1134)
- @birdxs — Docker images carrying the Feishu and Telegram channel dependencies, with a GHCR/Docker Hub build workflow (#1088)
- @zhiwuyazhe-fjr — a Docker Codex OAuth EOF that explains itself (#1054)
Contribuidores del ciclo v0.1.12
- @santhreal — una limpieza de corrección de 30 PR: endurecimiento de strict-JSON / números finitos en metrics, factors, pattern y options (#764/#765/#766/#767/#739/#740/#744), corrección de loaders (#761 yahoo 1m bars), y robustez de session / journal (#762/#763/#768/#769/#770)
- @xkam7ar — mejoras de fiabilidad amplias en packaging, web, scheduler, swarm y CLI (#584), cancelación antes de la primera iteración de AgentLoop (#641, cierra #638), presupuesto de sesión de QVeris + contabilidad atómica de créditos (#685/#686), puertas de CI / OOS (#630/#632), y correcciones del filtro por mes / parseo de side en journal (#626/#628)
- @shadowinlife — la skill Strategy Development Manager (#457, cierra #455), extracción enchufable con OCR + LLM-vision (#548), credenciales de proveedor centralizadas (#563), la vectorización 80× de alineación de señales (#698), y el cacheo de MCP-discovery en swarm (#704)
- @ebujinovch — el endpoint + UI de la línea temporal de correlation regime (#756, cierra #719) y su skill
correlation-regime(#557), además del factoracademic_corr_rewire(#705) - @honginp — enrutamiento USD-M de Binance con separación execution/mark (#470/#716) y el desacoplamiento del maintenance-bracket que mantiene los backtests
-PERPsin necesidad de credenciales (#757) - @StaniellG — el connector de broker MetaTrader 5 (Exness) + la fuente de datos
mt5(#481) - @tyj147454413-cmd — el loader de fallback de Binance (#643), historial acotado de OKX con manejo de rate-limit (#644), y clasificación de fallos de stream de codex (#663)
- @Marnie0415 — fallback de sub-motor composite para símbolos desconocidos (#734) y la corrección de la race condition de DOM en
insertBeforedurante el streaming en el frontend (#717) - @YZY0108 — la corrección de look-ahead-bias en los cinco optimizadores de portfolio (#487)
- @UNHNQ — los proveedores SiliconFlow CN + Global (#565)
- @FenjuFu — el proveedor iFlytek Spark (#537)
- @jelech — el adaptador nativo de la API de Messages de Anthropic (#695)
- @octo-patch — endpoints regionales de la API de MiniMax (#731)
- @Thibaultjaigu — el proveedor de gateway Requesty compatible con OpenAI (#474)
- @Robin1987China — métricas de turnover realizado del portfolio para cada optimizador (#478)
- @YogeshModi24 — el factor académico betting-against-beta de Frazzini-Pedersen (#480)
- @0xZKnw — modo TAP opcional para Alpaca (#377)
- @sambazhu — la whitelist
_VALID_ZOOSdel zoo fundamental (#707) - @nareshkps — conexión de
account_numberen el connector de Robinhood (#726) - @darkknight4563 — descubrimiento del directorio de swarm-presets del usuario (#570)
- @MikeCer — pool de conexiones thread-local de IBKR + cotizaciones snapshot (#636)
- @Shizoqua — resampling de intervalos en el loader
local(#467) - @roberttidball — compatibilidad de importación del transporte de FastMCP (#469)
- @yxhuang — resolución de tickers sin prefijo en la matriz de correlación (#472, cierra #471)
- @Bortlesboat — corrección de
OPENAI_BASE_URLdesactualizado al cambiar de proveedor (#484, cierra #482) - @ananaymital — corrección de caché desactualizada de
EnvConfigen preflight (#479, cierra #477) - @GabbaTauchi — reportó el bug de streaming / base-URL nativo de zai (#758)
- @warren618 / Haozhe Wu — la integración de backend de correlation regime, la corrección de streaming + resolución de base-URL del proveedor zai (#758), integración de releases, y triage de PRs/issues abiertos
Contribuidores del ciclo v0.1.11
- @shadowinlife — la culminación de la modularización de
api_server(1103 → 371 líneas, #424 cerrando #331), configuración de entorno centralizada con la puerta de CI basada en AST (#440), conformidad del protocolofetch()de los loaders (#437), y el RFC de Strategy Development Manager en revisión (#455/#457) — 12 PR fusionados en este ciclo - @Robin1987China — cierre del bucle de la Fase 3 de Research Autopilot (#267), 4 alphas académicas canónicas (#277), condiciones de entrada PIT-safe de Shadow Account (#302/#314/#316), el optimizador de portfolio con reducción de turnover (#466), tests de la ruta de scheduled-research (#452), y lotes de cobertura de tests para las capas de trade-journal / pattern / loader (#268/#269/#276)
- @muku314115 — soporte de primera clase para renta variable india (NSE/BSE):
IndiaEquityEngine, el stack de costes, el enrutamiento.NS/.BO, y el puenteindia_broker(#305) - @mvanhorn — el ejecutor de extremo a extremo de scheduled-research (#278), el connector de solo lectura de Trading 212 (#321), la resolución del modelo por defecto de OpenAI (#319), y la validación de configuración de Robinhood (#320)
- @fei-moss — la herramienta de visión
analyze_image(#464), el emparejamiento DM de NapCat (#463), y el informe de allowed-roots de medios en IM (#465) - @sambazhu — el toolkit de value-investing: herramientas de financial-rigor + report-audit, 4 skills, y el preset
value_investing_committee(#407/#408) - @Elfsa-Miranda — la exploración del pipeline de investigación de alpha vinculado a evidencia (#405/#416, posteriormente reencauzado en #442)
- @Hinotoi-agent — rechazo de CSRF en loopback (#293) y solicitudes remotas autenticadas de la UI del mismo origen (#304)
- @dpersek — timeout configurable de respuesta en IM (#413) y la corrección de redirect en el preflight del proveedor (#404)
- @digger-yu — comandos
setup/devmultiplataforma (#292) y comprobaciones previas de dependencias de desarrollo (#349) - @skloxo — expansión de tilde + fallback de seguridad de file-roots (#299) y localización reactiva zh-CN (#301)
- @kadaliao — el tutorial para principiantes (#393) y las tarjetas sociales de Alpha Library (#396)
- @morluto — preservación del primer mensaje en el resume de CLI (#448) y el modelo por defecto de Codex OAuth (#446)
- @yxhuang — el proveedor Kimi for Coding (#435) y el diagnóstico preciso de #433 detrás de la reversión del governance-stack
- @isaveall — la corrección del directorio de artifacts de
validation.json(#429) y errores más claros en--swarm-run(#428) - @mustafakamal88 — timestamps UTC con conciencia de zona horaria (#397)
- @irfanallana-oss — la protección contra órdenes de tamaño cero en
trading_place_order(#417) - @Shizoqua — la protección central de invariante OHLC en el loader (#274)
- @hobostay — endurecimiento de la protección SSRF para rangos CGNAT/mesh + la corrección del redirect de medios de QQ (#389)
- @aeonframework — elevación de las versiones mínimas de Pillow / langchain por CVE (#390)
- @hannibal-lee — la corrección de la restricción de versión de pandas (#329)
- @MarkfuGod — conteos dinámicos de fuentes de datos + microcompaction controlada por tokens (#296)
- @gyx09212214-prog — salidas con validación estricta de JSON (#306)
- @LemonCANDY42 — la librería de informes de backtest (#224)
- @fanfpy — serialización Decimal→float de Longbridge (#459)
- @asahikiko — sincronización del conteo de capacidades en el SKILL.md empaquetado + el test de protección del manifest (#461)
- @wison1717-maker — el diálogo de segunda confirmación del mandato + toasts de error unificados (#453)
- @imsankz — mapeos de proveedor de opencode (#444)
- @flash1234pku — la corrección del code-fence de referencia de tushare (#449)
- @Penn-Live — el reporte del crash de iteración de rutas al iniciar Docker (#450)
- @warren618 / Haozhe Wu — la capa de factores fundamentales (paneles SEC PIT-safe), el track premium de QVeris, el runtime del canal IM, la revisión de la integración de renta variable india, los fallbacks de búsqueda en CN, e integración de releases
Contribuidores del ciclo v0.1.10
- @Hinotoi-agent — una ola de endurecimiento de seguridad: autenticación para el shutdown local (#241), rechazo de rebinding del host loopback (#242), opt-in de la herramienta de shell del agente (#243), autenticación en la escritura de settings (#245), contención del proposal-id del mandato (#256), validación de tipos en la memoria persistente (#257), y contención del run-id de swarm en MCP (#258)
- @mvanhorn — la caché local de datos opcional (#177), el round-trip del thoughtSignature de Gemini sobre tool calls compatibles con OpenAI (#176), la guía de loaders de datos personalizados (#194), y el alias de proveedor glm/zhipu + inferencia del nombre de modelo (#247)
- @gyx09212214-prog — robustez del loader ante variables de entorno de timeout malformadas de crypto/RSSHub (#227, #240), inclusión de la fecha final solicitada en yfinance (#226), JSON estricto de run-card para métricas no finitas (#238), y cobertura de retry-fallback en ddgs (#239)
- @BillDin — estado de los agentes swarm en la UI de chat (#188), manejo explícito del nombre del preset (#189), la herramienta de datos de mercado respaldada por loader para los workers de swarm (#199), y continuaciones de contexto de preset (#200)
- @Robin1987China — el puente goal-hypothesis de Research Autopilot (#260), el loader de datos local CSV/Parquet/DuckDB (#252), y una corrección de assistant-prefill + User-Agent configurable de Kimi (#248)
- @LemonCANDY42 — el panel de estado del runtime de solo lectura (#210), artefactos persistidos de uso de AgentLoop (#223), y payloads de gráficos de Run Detail opcionales (#225)
- @zwrong — la revisión de trace.jsonl con truncamiento cero + offload (#206) y el session-id al salir +
resume <session-id>(#218) - @forge-builder — la guía de contribución para IA (#173) y la documentación de smoke-tests solo de investigación de OpenClaw MCP (#165)
- @skloxo — localización del frontend al chino (zh-CN) (adoptada de #217)
- @LeeCQiang — docstrings en chino para los 452 factores de Alpha Zoo (#180)
- @KaiLuettmann — publicación de imágenes preconstruidas en GHCR con cada release (#187)
- @ngoanpv — preservación del thought_signature de Gemini a través de la ruta dict de AgentLoop (#184)
- @ShahNewazKhan — alcanzabilidad de Ollama en el host desde Docker vía host.docker.internal (#196)
- @sambazhu — sincronización en el frontend de los intentos de chat completados (#236)
- @bhlt — soporte del formato de código nativo de baostock (#230)
- @octo-patch — actualización del modelo por defecto a MiniMax M3 (#162)
- @warren618 / Haozhe Wu — la capa de datos global (8 fuentes + 18 herramientas de datos de solo lectura), los 10 connectors de SDK de broker, el stack completo de alpha-compare, la revisión de fiabilidad de proveedores, el fallback de web_search multi-motor, el Stop responsivo + reconexión SSE, e integración de releases
Vibe-Trading es software de investigación y trading. No constituye asesoría de inversión, no custodia fondos y no opera ningún centro de ejecución. El trading a través de un canal de broker que tú autorizas explícitamente (por ejemplo, Robinhood Agentic Trading) ocurre únicamente dentro de los límites que tú estableces y que puedes detener en cualquier momento. Esta capacidad de trading a través de broker es experimental y no ha sido verificada por nosotros frente a una cuenta de broker real — utilízala bajo tu propio riesgo. El rendimiento pasado no garantiza resultados futuros.
MIT License — see LICENSE
⭐ Si Vibe-Trading ayuda a tu investigación, una estrella ayuda a que más personas la encuentren.
Gracias por visitar Vibe-Trading ✨



