Dashboard interactivo de inversiones para terminal, construido con Textual.
Gestiona ETFs, fondos indexados y criptomonedas con histórico de precios en CSV, métricas avanzadas y un panel de indicadores macroeconómicos en tiempo real.
Pestaña ⑧ MACRO — Indicadores macroeconómicos con contexto interpretativo para inversor a largo plazo.
- 9 pestañas interactivas: ① Resumen · ② Posiciones · ③ Transacciones · ④ TIR/XIRR · ⑤ Métricas · ⑥ Costes · ⑦ Benchmark · ⑧ Macro · ⑨ Tesis
- Grabado automático de precios desde Yahoo Finance, EODHD, Stooq y Morningstar
- Métricas financieras: Sharpe, Sortino, Beta, VaR 95%, drawdown, volatilidad, correlación
- TIR anualizada (XIRR) ponderada por flujos de caja reales — solo se muestra si la posición tiene ≥ 60 días (evita tasas anualizadas sin sentido estadístico)
- Modelo logístico de tesis (⑨ TESIS):
V(t) = Capital × (1+r)^t × Φ_L(t)/Φ_L(0)con 3 escenarios — Base, Acelerado, Óptimo - Indicador ⚡ ESCASEZ en el header: score 0–100% desde 12 señales macro alineadas a la tesis
- Correlación SOX/Cobre: detector de cambio de paradigma (ERA DE CONSTRUCCIÓN / DIVERGENCIA / CONTRACCIÓN)
- Análisis de costes TER con proyección a 5 y 10 años
- Benchmark vs cualquier fondo indexado global de tu cartera
- Panel macro ⑧ con 12 señales por pilar + contexto: Autorreplicación IA (SOX, NASDAQ, ROBO, QTUM) · Escasez Digital (BTC, BTC vs NASDAQ) · Energía/Grid (Uranio/Cameco, XLU) · Escasez Física (Cobre, Oro) · Resiliencia (Spread 10Y-13W, VIX) · Contexto: S&P 500, VIX, Spread, EUR/USD
- Modo privado (
P) para ocultar cifras en pantalla - Sin servidor — todo corre en local, tus datos no salen de tu ordenador
- Python 3.9 o superior
git clone https://github.com/TU_USUARIO/portfolio-terminal.git
cd portfolio-terminalpip install textual yfinance pyyaml requests richOpcionalmente, para exportar a Excel:
pip install openpyxlcp portfolio.example.yaml portfolio.yamlEdita portfolio.yaml con tus activos y transacciones. El fichero de ejemplo incluye comentarios detallados en cada campo.
mkdir -p historico exports./terminal.shO directamente:
python3 scripts/portfolio_dash.py -f portfolio.yaml -d historicoportfolio-terminal/
├── portfolio.example.yaml ← Plantilla de cartera (copia a portfolio.yaml)
├── portfolio.yaml ← Tu cartera personal (ignorada por .gitignore)
├── terminal.sh ← Lanzador: graba precios + macro + abre dashboard
├── historico/ ← CSVs de precios diarios (ignorados por .gitignore)
├── exports/ ← Informes Excel generados (ignorados por .gitignore)
└── scripts/
├── portfolio_dash.py ← Dashboard interactivo (Textual)
├── price_recorder.py ← Grabador de precios al cierre de mercado
├── macro_recorder.py ← Grabador de indicadores macroeconómicos
├── fx_convert_historical.py ← Conversión USD→EUR en CSVs existentes
└── export_historico.py ← Exportador a Excel + Markdown
| Tecla | Acción |
|---|---|
1–9 |
Cambiar entre pestañas |
R |
Recargar datos |
P |
Modo privado (oculta cifras) |
A |
Añadir transacción |
E |
Editar transacción (buscador con filtro en tiempo real) |
D |
Borrar transacción (buscador + confirmación) |
T |
Cambiar rango del gráfico histórico |
F |
Filtrar posiciones por taxonomía |
Q |
Salir |
Edita portfolio.yaml con tus activos. Ejemplo mínimo:
meta:
nombre: "Mi Portafolio"
divisa_base: EUR
activos:
- ticker: IE00B03HCZ61
nombre: "Vanguard Global Stock Index EUR Acc"
tipo: Fondo
taxonomia: Renta Variable
divisa: EUR
ter: 0.0012
transacciones:
- fecha: "2024-01-15"
tipo: compra
participaciones: 10.000000
precio: 42.50
comision: 0.00
nota: "Primera aportación"tipo |
Descripción |
|---|---|
ETF |
ETF cotizado en bolsa |
Fondo |
Fondo de inversión no cotizado |
Crypto |
Criptomoneda |
Renta Variable · Metal Precioso · Metal · Tecnología / AI · Energía / Nuclear · Computación Cuántica · Bitcoin
Puedes usar cualquier texto como taxonomía — el filtro de posiciones (F) las agrupa automáticamente.
# Grabar precio de cierre de hoy
python3 scripts/price_recorder.py -f portfolio.yaml -d historico --show
# Actualizar indicadores macroeconómicos
python3 scripts/macro_recorder.py -d historico --show
# Todo a la vez (lo hace terminal.sh automáticamente)
./terminal.shLos precios se almacenan siempre en EUR. El grabador descarga el tipo de cambio diario y convierte automáticamente. El precio original queda en la columna notas del CSV.
- ticker: IVV
nombre: "iShares Core S&P 500 ETF"
divisa: USD # el grabador convierte a EUR usando USDEUR diarioÚtil para varias wallets de Bitcoin o cuentas del mismo activo:
- ticker: BTC-WALLET-1
yahoo_ticker: BTC-EUR
historico_ticker: BTC-EUR # comparte CSV con BTC-WALLET-2
- ticker: BTC-WALLET-2
yahoo_ticker: BTC-EUR
historico_ticker: BTC-EURUsa el campo isin para que el grabador los busque vía Morningstar (fondos IE, LU, ES):
- ticker: LU0996182563
isin: LU0996182563
nombre: "Amundi IS MSCI World AE-C"
tipo: Fondo
divisa: EURPara ETFs europeos con cobertura limitada en Yahoo, obtén una clave gratuita en eodhd.com (20 peticiones/día gratuitas) y añádela a portfolio.yaml:
configuracion:
eodhd_api_key: "TU_API_KEY"python3 scripts/export_historico.py -f portfolio.yaml -d historico -o exportsGenera un fichero .xlsx con histórico completo, resumen de posiciones y métricas.
Tasa r que hace cero el valor presente neto de todos los flujos de caja (solo representativa con ≥ 60 días desde la primera compra):
Cᵢ negativo = compra · positivo = venta o valor actual hoy. Se resuelve con Newton-Raphson.
rᶠ = tasa libre de riesgo diaria (3% / 252). Sharpe > 1 = rentabilidad compensa el riesgo.
Ordena todos los retornos de menor a mayor y toma el 5% peor. Pérdida máxima esperada en el 5% de peores días históricos.
Rango −1 a +1. Valores cercanos a 0 indican buena diversificación entre activos.
El modelo de tesis implementado en la pestaña ⑨ está documentado en:
Vilar, J. A. (2026). Scarcity and Resilience: A Mathematical Framework for Investing in the Age of Artificial Self-Replication. SSRN Working Paper.
El modelo logístico V(t) = Capital × (1+r)^t × Φ_L(t)/Φ_L(0) — donde Φ_L(t) = 1 + K / (1 + e^(−γ·(t−t₀))) — captura la aceleración no lineal de la IA con parámetros calibrables de forma independiente: K (techo de replicación), γ (velocidad de adopción) y t₀ (año de inflexión).
Las contribuciones son bienvenidas. Por favor:
- Haz fork del repositorio
- Crea una rama para tu mejora (
git checkout -b feature/mi-mejora) - Abre un Pull Request describiendo los cambios
Ideas de mejora: soporte para nuevas fuentes de precio, nuevas métricas, internacionalización, tema de colores configurable.
MIT — úsalo, modifícalo y distribúyelo libremente.
Jose Antonio Vilar — github.com/josevilar-qbioai/
Este software es una herramienta de seguimiento personal. No constituye asesoramiento financiero. Las métricas son informativas y se basan en datos históricos. Las rentabilidades pasadas no garantizan resultados futuros.