27 abril 2024

This commit is contained in:
Roger Oriol Pérez
2024-04-27 11:14:15 +02:00
parent b448b15884
commit 2029673b56
6 changed files with 195 additions and 61 deletions

View File

@@ -1,4 +0,0 @@
#!/usr/bin/env bash
now="$(date +'%Y%m%d')"
mkdir -p reports/income/$now
bean-report ledger/main.beancount income > reports/income/$now/income.html

0
commands/objectives Normal file → Executable file
View File

73
commands/portfolio Executable file
View File

@@ -0,0 +1,73 @@
#!/usr/bin/env python3
from beancount import loader
from beancount.query import query
from beancount.parser import printer
import argparse
from tabulate import tabulate
from decimal import Decimal
from beancount.core.amount import Amount, sub, mul, add
from math import floor
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKCYAN = '\033[96m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
def draw_line():
print('─' * 30)
def print_report(date, positions):
print(f"{bcolors.BOLD}Portfolio (date={date}){bcolors.ENDC}")
draw_line()
print(f"{bcolors.BOLD}Positions{bcolors.ENDC}")
print(tabulate(map(lambda p: [
p.account,
p.volume.average().get_only_position().units.number.__round__(2),
f"{p.volume.average().get_only_position().cost.number.__round__(2)} {p.volume.average().get_only_position().cost.currency}",
f"{p.position.get_only_position().units.number.__round__(2)} {p.position.get_only_position().units.currency}"], positions)
, headers=["Actiu", "Quantitat", "Últim preu", "Valor"]))
total = Amount(Decimal(0), 'EUR')
for p in positions:
total = add(total, p.position.get_only_position().units)
print(tabulate([
["Total", "", "", f"{total.number.__round__(2)} {total.currency}"]
]))
print(f"{bcolors.BOLD}Plusvalias / Minusvalias{bcolors.ENDC}")
print(f"{bcolors.BOLD}Distribució geografica / sectors{bcolors.ENDC}")
print(f"{bcolors.BOLD}Indicadors{bcolors.ENDC}")
print(tabulate([
["Alfa", 1],
["Beta", 1]
]))
def get_positions(entries, options, date):
balance_query = f"SELECT account, sum(position) as volume, convert(sum(position), \"EUR\") as position FROM date <= {date} WHERE account ~ '^Assets:Invest' GROUP BY account"
rtypes, rrows = query.run_query(
entries, options, balance_query)
return rrows
def main():
parser = argparse.ArgumentParser(description='Generate portfolio report')
parser.add_argument('date', metavar='date', type=str, nargs=1,
help='Report date in ISO format (e.g. 1970-01-01)')
args = parser.parse_args()
date = args.date[0]
filename = "ledger/main.beancount"
entries, errors, options = loader.load_file(filename)
if errors:
printer.print_errors(errors)
positions = get_positions(entries, options, date)
print_report(date, positions)
main()

View File

@@ -36,6 +36,7 @@
1970-01-01 open Income:Savings:TradeRepublic:RentabilitatEstalvis EUR
1970-01-01 open Income:Invest:R4:Dividends EUR
1970-01-01 open Income:Invest:R4:CapitalGains EUR
1970-01-01 open Income:Invest:DZP:CapitalGains EUR
1970-01-01 open Income:Other:Devolucions EUR
1970-01-01 open Expenses:R4:Comissions EUR

View File

@@ -81,6 +81,9 @@
2024-03-06 * "ITV" "Revisio de vehicles" #cotxe
Expenses:MantenimentCotxe 40.60 EUR
Assets:Liquid:Caixabank:Corrent
2024-03-06 * "Deutsche Zurich Pensiones" "Aportació P.P.E DZP"
Assets:Benefits:DZP:PPEZurich 80.36 EUR
Income:Work:Zurich:DZP
2024-03-08 * "EsclatOil" "Gasolina"
Expenses:Gasolina 53.79 EUR
Assets:Liquid:Caixabank:Corrent
@@ -253,7 +256,7 @@
2024-04-01 balance Assets:Invest:R4:MSFT 4 MSFT
2024-04-01 balance Assets:Benefits:Edenred:TicketsRestaurant 13.30 EUR
2024-04-01 balance Assets:Benefits:Edenred:TargetaTransport 125.05 EUR
2024-04-01 balance Assets:Benefits:DZP:PPEZurich 1807.49 EUR
2024-04-01 balance Assets:Benefits:DZP:PPEZurich 1887.85 EUR
2024-04-01 balance Assets:PersonalProperty:VivendaPrincipal 0 EUR
2024-04-01 balance Assets:PersonalProperty:Cotxe 10000 EUR
2024-04-01 balance Assets:PersonalProperty:JoiesArtCollecionables 1250 EUR

View File

@@ -11,7 +11,7 @@
2024-04-01 balance Assets:Invest:R4:MSFT 4 MSFT
2024-04-01 balance Assets:Benefits:Edenred:TicketsRestaurant 13.30 EUR
2024-04-01 balance Assets:Benefits:Edenred:TargetaTransport 125.05 EUR
2024-04-01 balance Assets:Benefits:DZP:PPEZurich 1807.49 EUR
2024-04-01 balance Assets:Benefits:DZP:PPEZurich 1887.85 EUR
2024-04-01 balance Assets:PersonalProperty:VivendaPrincipal 0 EUR
2024-04-01 balance Assets:PersonalProperty:Cotxe 10000 EUR
2024-04-01 balance Assets:PersonalProperty:JoiesArtCollecionables 1250 EUR
@@ -137,6 +137,11 @@
2024-04-08 * "Toni Pons" "Espardenyes"
Expenses:Roba 39.95 EUR
Liabilities:Credit:Caixabank:TargetaCredit
2024-04-08 * "Deutsche Zurich Pensiones" "Aportació P.P.E DZP"
Assets:Benefits:DZP:PPEZurich 80.36 EUR
Income:Work:Zurich:DZP -80.36 EUR
Assets:Benefits:DZP:PPEZurich 5.47 EUR
Income:Invest:DZP:CapitalGains
2024-04-09 * "Don Zangano" "Esmorzar"
Expenses:MenjarFora 5.90 EUR
Assets:Benefits:Edenred:TicketsRestaurant
@@ -193,21 +198,77 @@
2024-04-16 * "Plusfresc" "Compra de la setmana"
Expenses:Supermercat 34.24 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-18 * "AWS" "Factura
2024-04-16 * "Yi Duo" "Dinar sushi"
Expenses:MenjarFora 16.45 EUR
Assets:Benefits:Edenred:TicketsRestaurant
2024-04-16 * "Blät" "Cafè"
Expenses:MenjarFora 1.45 EUR
Assets:Benefits:Edenred:TicketsRestaurant AWS Abril"
2024-04-18 * "AWS" "Factura AWS Abril"
Expenses:MarcaPersonal 16.61 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-20 * "EsclatOil" "Gasolina"
Expenses:Gasolina 60 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-20 * "Tagliatela" "Sopar"
Expenses:MenjarFora 48.90 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-21 * "Viena" "Berenar"
Expenses:MenjarFora 16.35 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-21 * "Fira Lactium" "Formatges i altres"
Expenses:Supermercat 7.90 EUR
Expenses:Supermercat 10.50 EUR
Expenses:Supermercat 6 EUR
Expenses:Supermercat 12 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-21 * "Buenas Migas" "Berenar"
Expenses:MenjarFora 25.20 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-21 * "Fazal Chak" "Aigua"
Expenses:Supermercat 3.90 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-22 * "Plusfresc" "Compra de la setmana"
Expenses:Supermercat 28.99 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-22 * "Putxet Gourmet" "Pollastre i empanades"
Expenses:Supermercat 11.26 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-22 * "Bizum" "Maria Mona de Pasqua"
Expenses:Altres 25 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-23 * "Don Zangano" "Esmorzar"
Expenses:MenjarFora 5.90 EUR
Assets:Benefits:Edenred:TicketsRestaurant
2024-04-23 * "Plusfresc" "Aigua i fruita"
Expenses:Supermercat 2.55 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-23 * "Passatore" "Dinar"
Expenses:MenjarFora 12.50 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-23 * "Blät" "Cafè"
Expenses:MenjarFora 1.45 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-23 * "Ikibana" "Sopar Sant Jordi"
Expenses:MenjarFora 148.75 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-25 * "Aerobus" "Anada i tornada aeroport"
Expenses:Mobilitat 12.50 EUR
Assets:Benefits:Edenred:TargetaTransport
2024-04-25 * "Escape Room Hechizados" "Regal aniversari Raul i Genis"
Expenses:Altres 72 EUR
Liabilities:Credit:Caixabank:TargetaCredit
2024-04-26 * "Zurich" "Nòmina Abril"
Assets:Liquid:Caixabank:Corrent 3369.52 EUR
Income:Work:Zurich:Salari
2024-04-26 * "Mariolas Bakery" "Berenar"
Expenses:MenjarFora 21.70 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-27 * "R4" "Transferencia a R4"
Assets:Liquid:R4:EUR 1000 EUR
Assets:Liquid:Caixabank:Corrent
2024-04-27 * "TradeRepublic" "Transferencia a TradeRepublic"
Assets:Liquid:TradeRepublic:EUR 400 EUR
Assets:Liquid:Caixabank:Corrent
2024-05-01 balance Assets:Liquid:Caixabank:Corrent 14464.65 EUR
2024-05-01 balance Assets:Liquid:Caixabank:Corrent 15991.22 EUR
2024-05-01 balance Assets:Liquid:Caixabank:Estalvi 0 EUR
2024-05-01 balance Assets:Liquid:TradeRepublic:EUR 18918.94 EUR
2024-05-01 balance Assets:Liquid:R4:EUR 50.42 EUR
2024-05-01 balance Assets:Liquid:TradeRepublic:EUR 19318.94 EUR
2024-05-01 balance Assets:Liquid:R4:EUR 1050.42 EUR
2024-05-01 balance Assets:Invest:R4:Amundi:MSCIWRLD 99.38937 AMNDMSCIWRLD
2024-05-01 balance Assets:Invest:R4:Vanguard:EMMK 14.99 VANEMMK
2024-05-01 balance Assets:Invest:R4:Fidelity:GLTECH 393.62 FIGLTECH
@@ -215,13 +276,13 @@
2024-05-01 balance Assets:Invest:R4:BNP:DISTECH 0.359 BNPDISTECH
2024-05-01 balance Assets:Invest:R4:PLTR 10 PLTR
2024-05-01 balance Assets:Invest:R4:MSFT 4 MSFT
2024-05-01 balance Assets:Benefits:Edenred:TicketsRestaurant 14.17 EUR
2024-05-01 balance Assets:Benefits:Edenred:TargetaTransport 112.55 EUR
2024-05-01 balance Assets:Benefits:DZP:PPEZurich 1807.49 EUR
2024-05-01 balance Assets:Benefits:Edenred:TicketsRestaurant 8.27 EUR
2024-05-01 balance Assets:Benefits:Edenred:TargetaTransport 100.05 EUR
2024-05-01 balance Assets:Benefits:DZP:PPEZurich 1973.68 EUR
2024-05-01 balance Assets:PersonalProperty:VivendaPrincipal 0 EUR
2024-05-01 balance Assets:PersonalProperty:Cotxe 10000 EUR
2024-05-01 balance Assets:PersonalProperty:JoiesArtCollecionables 1250 EUR
2024-05-01 balance Assets:PersonalProperty:MetallsPreciosos 0 EUR
2024-05-01 balance Assets:PersonalProperty:AltresPropietats 0 EUR
2024-05-01 balance Assets:Debt:DeutesPerCobrar 0 EUR
2024-05-01 balance Liabilities:Credit:Caixabank:TargetaCredit -491.79 EUR
2024-05-01 balance Liabilities:Credit:Caixabank:TargetaCredit -563.79 EUR