Cálculo FIFO de operaciones spot de Kraken para la declaración de IRPF en España.
App nativa de escritorio para macOS. Arrastras el CSV de Kraken y ves al instante tu ganancia o pérdida patrimonial, listado operación a operación según el método FIFO que exige Hacienda.
Hacienda exige calcular las ganancias y pérdidas de cripto en EUR usando el método FIFO (First In, First Out): cuando vendes, se considera que vendes primero las monedas que compraste antes. calfifo automatiza ese cálculo a partir del export de Spot Trades que descargas desde tu cuenta de Kraken.
- ✅ Lee directamente el CSV de Kraken sin tocarlo
- ✅ Aplica FIFO estricto por activo
- ✅ Suma fees de compra al coste y resta fees de venta del ingreso (regla de Hacienda)
- ✅ Distingue ganancias, pérdidas y resultado neto en tiempo real
- ✅ Muestra las posiciones abiertas a fin de año con su coste base, para arrastrarlas al ejercicio siguiente
- ✅ Exporta los resultados a CSV para tu gestor o para Excel
- macOS 11 (Big Sur) o superior
- Python 3.10+ con PyQt5 instalado
pip3 install PyQt5git clone https://github.com/jorgedihe/calfifo.git
cd calfifo
# (Opcional, solo si quieres regenerar el icono) requiere Pillow
pip3 install Pillow
python3 scripts/make_icon.py
# Construir el bundle .app
./scripts/build_app.sh
# Instalar en /Applications
cp -R build/calfifo.app /Applications/A partir de ahí la app aparece en Launchpad, Spotlight y Finder como cualquier otra.
Nota: el bundle no embebe Python. El launcher dentro de la app llama a tu
python3(preferencia: shim de pyenv) y ejecutapython -m calfifodesde el repo clonado. Eso significa que si actualizas el código, no hace falta reinstalar nada — basta congit pull.
python3 -m calfifo- En Kraken: History → Export → Spot trades, rango el año fiscal completo.
- Abre
calfifo. - Arrastra el CSV a la ventana (o pulsa Abrir CSV…).
- Revisa:
- Resultado neto — lo que declaras como ganancia/pérdida patrimonial.
- Detalle FIFO — cada cierre con fecha compra, fecha venta y resultado.
- Resumen por cripto — qué moneda te ha dado más y cuál menos.
- Posiciones abiertas — lo que sigue en cartera con su coste base.
- Pulsa Exportar resultados CSV para pasárselo a tu gestor o meterlo en Excel.
calfifo calcula siguiendo lo establecido por la Agencia Tributaria española para ganancias y pérdidas patrimoniales por transmisión de criptomonedas:
| Concepto | Fórmula |
|---|---|
| Coste de adquisición | precio × volumen + fee de compra |
| Valor de transmisión | precio × volumen − fee de venta |
| Resultado | valor transmisión − coste adquisición |
| Orden de cierre | FIFO: cada venta cierra primero el lote más antiguo del mismo activo |
Las posiciones que quedan en cartera al final del periodo no tributan hasta que se vendan, pero su coste base queda registrado para la siguiente declaración.
- Solo procesa el export de Spot Trades de Kraken. Si haces staking, earn, rewards o conversiones rápidas, eso vive en el export de Ledgers y debe declararse aparte (como rendimiento del capital mobiliario en el caso de staking).
- Solo pares contra EUR. Si tienes pares cripto-cripto o contra USD, la app avisa pero no convierte automáticamente a EUR (Hacienda exige cotización en EUR al momento de la operación).
- No genera el modelo 100 ni el 721. Te da los números; la presentación se hace a través de la Agencia Tributaria.
- Si vendiste criptos compradas fuera de Kraken, el FIFO de la app no las considera. Necesitarías un agregador multi-exchange para ese caso.
Esta herramienta no es asesoramiento fiscal. Es un cálculo automatizado siguiendo las reglas FIFO conocidas, pero la normativa fiscal puede cambiar y cada situación personal es distinta. Antes de presentar la declaración, valida los resultados con un asesor fiscal. El autor no se hace responsable de errores de cálculo, interpretaciones normativas ni de las consecuencias de su uso.
calfifo/
├── calfifo/ # Código fuente
│ ├── core.py # Motor FIFO puro (sin dependencias UI)
│ ├── ui/
│ │ ├── main_window.py
│ │ └── style.py # Tema dark premium
│ └── assets/
│ └── calfifo.icns
├── scripts/
│ ├── make_icon.py # Genera el icono .icns
│ ├── build_app.sh # Construye calfifo.app
│ └── screenshot.py # Genera capturas para el README
├── sample_data/
│ └── kraken_sample.csv # CSV de ejemplo (datos ficticios)
└── docs/ # Capturas e imágenes
Issues y PRs bienvenidos. Si te encuentras un export de Kraken que calfifo no procesa bien, abre un issue con (idealmente) un CSV mínimo de ejemplo anonimizando los txid y volúmenes reales.
MIT — © 2026 Jorge Díaz Hernández


