From a45cdbd013dd372f0c3041c1c726151d85295ac2 Mon Sep 17 00:00:00 2001 From: Roger Oriol Date: Sat, 27 Dec 2025 19:34:58 +0100 Subject: [PATCH] 27 desembre --- commands/balance-sheet | 34 ++++++++-- ledger/accounts.beancount | 1 + ledger/trading/2025/12.beancount | 6 ++ ledger/transactions/2025/11.beancount | 7 +- ledger/transactions/2025/12.beancount | 40 +++++++++-- reports/balance-sheet-report-2025-12-27.txt | 74 +++++++++++++++++++++ 6 files changed, 148 insertions(+), 14 deletions(-) create mode 100644 ledger/trading/2025/12.beancount create mode 100644 reports/balance-sheet-report-2025-12-27.txt diff --git a/commands/balance-sheet b/commands/balance-sheet index d7be5ed..d0cdfbb 100755 --- a/commands/balance-sheet +++ b/commands/balance-sheet @@ -92,13 +92,14 @@ def get_investment_assets_to_net_worth_ratio(balances, min): return f"{bcolors.FAIL if result < min else bcolors.OKGREEN}{result} %{bcolors.ENDC}" -def get_liquid_assets_to_net_worth_ratio(balances, min): +def get_liquid_assets_to_net_worth_ratio(balances, pignorat, min): liquid = 0 for account, balance in balances.items(): if account.startswith("Assets:Liquid") or account.startswith("Assets:Invest"): liquid = balance if liquid == 0 else liquid + balance total_liquid = Amount(Decimal(0), "EUR") if liquid.get_only_position( ) == None else liquid.get_only_position().units + total_liquid = sub(total_liquid, Amount(pignorat, 'EUR')) result = round( (total_liquid.number / get_net_worth(balances).number) * 100, 2) return f"{bcolors.FAIL if result < min else bcolors.OKGREEN}{result} %{bcolors.ENDC}" @@ -148,18 +149,18 @@ def get_position_as_str(inventory): return Amount(Decimal(round(position.units.number, 2)), position.units.currency).to_string() -def print_report(date, balances, expenses, net_monthly_income, net_yearly_income, debt_payments, mortgage_payments, savings): +def print_report(date, balances, expenses, net_monthly_income, net_yearly_income, debt_payments, mortgage_payments, savings, pignorat): print(f"{bcolors.BOLD}Balance Sheet (date={date}){bcolors.ENDC}") draw_line() print(f"{bcolors.BOLD}Assets{bcolors.ENDC}") - print(f"\t{bcolors.BOLD}Liquids{bcolors.ENDC}") + print(f"\t{bcolors.BOLD}Comptes bancaris{bcolors.ENDC}") print(tabulate([ ["Corrent", get_sum_balances( balances, "Assets:Liquid:Caixabank:Corrent")], ["Estalvi", get_sum_balances(balances, "Assets:Liquid:Estalvi")], ["Compte d'inversió", get_sum_balances( balances, "Assets:Liquid:R4:EUR")], - ["Total líquids", get_sum_balances(balances, "Assets:Liquid:")], + ["Total", get_sum_balances(balances, "Assets:Liquid:")], ])) print(f"\t{bcolors.BOLD}Inversions{bcolors.ENDC}") print(tabulate([ @@ -169,6 +170,10 @@ def print_report(date, balances, expenses, net_monthly_income, net_yearly_income ["Renta fixa", get_sum_balances(balances, "Assets:Invest:Fixed:")], ["Total inversions", get_sum_balances(balances, "Assets:Invest:")], ])) + print(tabulate([ + ["Inversions pignorades", Amount( + round(pignorat, 2), 'EUR').to_string()], + ])) print(f"\t{bcolors.BOLD}Propietat personal{bcolors.ENDC}") print(tabulate([ ["Vivenda principal", get_sum_balances( @@ -241,7 +246,7 @@ def print_report(date, balances, expenses, net_monthly_income, net_yearly_income ["Investment Assets to Net Worth Ratio", get_investment_assets_to_net_worth_ratio(balances, 50), "50 %"], ["Liquid Assets to Net Worth Ratio", - get_liquid_assets_to_net_worth_ratio(balances, 15), "15 %"], + get_liquid_assets_to_net_worth_ratio(balances, pignorat, 15), "15 %"], ["Savings Ratio", get_savings_ratio( balances, net_yearly_income, savings, 20), "20 %"], ["Debt-Service Ratio", @@ -328,6 +333,22 @@ def get_savings(entries, options, date): return result +def get_assets_pignorats(entries, options, date): + assets_pignorats = { + 'R4RF': Decimal(1518.57), + 'VANEMMK': Decimal(14.99), + 'VANGL': Decimal(260) + } + result = Decimal(0) + for _, curr in enumerate(assets_pignorats): + pignorat_query = f"SELECT DISTINCT GETPRICE('{curr}', 'EUR', { + date}) as price" + rtypes, rrows = query.run_query( + entries, options, pignorat_query) + result = result + rrows[0].price * assets_pignorats[curr] + return result + + def main(): parser = argparse.ArgumentParser( description='Generate balance sheet report') @@ -350,8 +371,9 @@ def main(): debt_payments, mortgage_payments = get_debt_payments( entries, options, date) savings = get_savings(entries, options, date) + pignorat = get_assets_pignorats(entries, options, date) print_report(date, balances, expenses, net_monthly_income, net_yearly_income, - debt_payments, mortgage_payments, savings) + debt_payments, mortgage_payments, savings, pignorat) main() diff --git a/ledger/accounts.beancount b/ledger/accounts.beancount index 294cbb2..d545f64 100644 --- a/ledger/accounts.beancount +++ b/ledger/accounts.beancount @@ -91,3 +91,4 @@ 1970-01-01 open Equity:FacturesUtilitatsMiquel EUR 1970-01-01 open Equity:VacancesLaura EUR 1970-01-01 open Equity:Depreciació EUR +1970-01-01 open Equity:AdquisicioPersonalProperty EUR diff --git a/ledger/trading/2025/12.beancount b/ledger/trading/2025/12.beancount new file mode 100644 index 0000000..ab2bbe0 --- /dev/null +++ b/ledger/trading/2025/12.beancount @@ -0,0 +1,6 @@ +2025-12-26 price IWVL 50.91 EUR +2025-12-26 price XDEQ 69.34 EUR +2025-12-26 price R4RF 15.666315 EUR +2025-12-26 price VANEMMK 243.3848 EUR +2025-12-26 price VANSMCAP 383.6598 EUR +2025-12-26 price VANGL 55.7455 EUR diff --git a/ledger/transactions/2025/11.beancount b/ledger/transactions/2025/11.beancount index c1f93f4..2227d58 100644 --- a/ledger/transactions/2025/11.beancount +++ b/ledger/transactions/2025/11.beancount @@ -194,6 +194,11 @@ 2025-11-26 * "Zurich" "Nòmina Novembre" Income:Work:Zurich:Salari -3494.66 EUR Assets:Liquid:Caixabank:Corrent +2025-11-26 * "DZP" "Aportació promotor" + Income:Work:Zurich:DZP -89.43 EUR + Assets:Benefits:DZP:PPEZurich 89.43 EUR + Income:Invest:DZP:CapitalGains 15.34 EUR + Assets:Benefits:DZP:PPEZurich -15.34 EUR 2025-11-26 * "Flors Pàdua" "Roses Laura" Expenses:Altres 7 EUR Assets:Liquid:Caixabank:Corrent @@ -259,7 +264,7 @@ 2025-12-01 balance Assets:Invest:ETF:XDEQ 264 XDEQ 2025-12-01 balance Assets:Benefits:Edenred:TicketsRestaurant 9.23 EUR 2025-12-01 balance Assets:Benefits:Edenred:TargetaTransport 89.35 EUR -2025-12-01 balance Assets:Benefits:DZP:PPEZurich 4048.45 EUR +2025-12-01 balance Assets:Benefits:DZP:PPEZurich 4122.54 EUR 2025-12-01 balance Assets:PersonalProperty:VivendaPrincipal 0 EUR 2025-12-01 balance Assets:PersonalProperty:Cotxe 8174 EUR 2025-12-01 balance Assets:PersonalProperty:JoiesArtCollecionables 50 EUR diff --git a/ledger/transactions/2025/12.beancount b/ledger/transactions/2025/12.beancount index f4f57ce..2e079b1 100644 --- a/ledger/transactions/2025/12.beancount +++ b/ledger/transactions/2025/12.beancount @@ -8,7 +8,7 @@ 2025-12-01 balance Assets:Invest:ETF:XDEQ 264 XDEQ 2025-12-01 balance Assets:Benefits:Edenred:TicketsRestaurant 9.23 EUR 2025-12-01 balance Assets:Benefits:Edenred:TargetaTransport 89.35 EUR -2025-12-01 balance Assets:Benefits:DZP:PPEZurich 4048.45 EUR +2025-12-01 balance Assets:Benefits:DZP:PPEZurich 4122.54 EUR 2025-12-01 balance Assets:PersonalProperty:VivendaPrincipal 0 EUR 2025-12-01 balance Assets:PersonalProperty:Cotxe 8174 EUR 2025-12-01 balance Assets:PersonalProperty:JoiesArtCollecionables 50 EUR @@ -115,7 +115,9 @@ Liabilities:Credit:Caixabank:TargetaCredit 2025-12-13 * "Ferran Bascompte" "Bizum rellotge" Expenses:Altres 550 EUR - Assets:Liquid:Caixabank:Corrent + Assets:Liquid:Caixabank:Corrent -550 EUR + Assets:PersonalProperty:JoiesArtCollecionables 300 EUR + Equity:AdquisicioPersonalProperty -300 EUR 2025-12-13 * "Leroy Merlin" "Cargols i cinta adhesiva de montatge" Expenses:Llar 16.58 EUR Assets:Liquid:Caixabank:Corrent @@ -156,8 +158,32 @@ 2025-12-20 * "Che Argentino" "Sopar asador argentino palma" Expenses:MenjarFora 51.70 EUR Assets:Benefits:Edenred:TicketsRestaurant +2025-12-21 * "Santa Chiara" "Dinar Pizzeria Palma" + Expenses:MenjarFora 48.50 EUR + Assets:Liquid:Caixabank:Corrent +2025-12-23 * "Aerobus" "Bitllet anada i tornada" + Expenses:Mobilitat 12.85 EUR + Assets:Benefits:Edenred:TargetaTransport +2025-12-23 * "Rosa Estrella" "Compra" + Expenses:Supermercat 14.99 EUR + Assets:Liquid:Caixabank:Corrent +2025-12-23 * "Udon" "Sopar" + Expenses:MenjarFora 43.70 EUR + Assets:Liquid:Caixabank:Corrent +2025-12-24 * "Zurich" "Nòmina desembre" + Income:Work:Zurich:Salari -3723.93 EUR + Assets:Liquid:Caixabank:Corrent +2025-12-24 * "Renta4" "Transferència diners Renta4" + Assets:Liquid:Caixabank:Corrent -1200 EUR + Liabilities:Credit:Renta4:PolissaCredit 1200 EUR +2025-12-25 * "The City Arms" "Ratafia i cocacola" + Expenses:MenjarFora 10 EUR + Assets:Liquid:Caixabank:Corrent +2025-12-27 * "Aerobus" "Bitllet anada i tornada" + Expenses:Mobilitat 12.85 EUR + Assets:Benefits:Edenred:TargetaTransport -2026-01-01 balance Assets:Liquid:Caixabank:Corrent 11866.83 EUR +2026-01-01 balance Assets:Liquid:Caixabank:Corrent 14273.57 EUR 2026-01-01 balance Assets:Liquid:R4:EUR 0 EUR 2026-01-01 balance Assets:Invest:Fund:Vanguard:EMMK 14.99 VANEMMK 2026-01-01 balance Assets:Invest:Fund:Vanguard:GL 776.93 VANGL @@ -166,12 +192,12 @@ 2026-01-01 balance Assets:Invest:Fixed:R4RF 1518.57004 R4RF 2026-01-01 balance Assets:Invest:ETF:XDEQ 264 XDEQ 2026-01-01 balance Assets:Benefits:Edenred:TicketsRestaurant 45.92 EUR -2026-01-01 balance Assets:Benefits:Edenred:TargetaTransport 63.65 EUR -2026-01-01 balance Assets:Benefits:DZP:PPEZurich 4048.45 EUR +2026-01-01 balance Assets:Benefits:Edenred:TargetaTransport 37.95 EUR +2026-01-01 balance Assets:Benefits:DZP:PPEZurich 4122.54 EUR 2026-01-01 balance Assets:PersonalProperty:VivendaPrincipal 0 EUR 2026-01-01 balance Assets:PersonalProperty:Cotxe 8174 EUR -2026-01-01 balance Assets:PersonalProperty:JoiesArtCollecionables 50 EUR +2026-01-01 balance Assets:PersonalProperty:JoiesArtCollecionables 350 EUR 2026-01-01 balance Assets:PersonalProperty:MetallsPreciosos 0 EUR 2026-01-01 balance Assets:PersonalProperty:AltresPropietats 0 EUR 2026-01-01 balance Liabilities:Credit:Caixabank:TargetaCredit -445.91 EUR -2026-01-01 balance Liabilities:Credit:Renta4:PolissaCredit -19971.26 EUR +2026-01-01 balance Liabilities:Credit:Renta4:PolissaCredit -18771.26 EUR diff --git a/reports/balance-sheet-report-2025-12-27.txt b/reports/balance-sheet-report-2025-12-27.txt new file mode 100644 index 0000000..ba254c5 --- /dev/null +++ b/reports/balance-sheet-report-2025-12-27.txt @@ -0,0 +1,74 @@ +Balance Sheet (date=2025-12-27) +────────────────────────────── +Assets + Comptes bancaris +----------------- ------------ +Corrent 14273.57 EUR +Estalvi 0 EUR +Compte d'inversió 0 EUR +Total 14273.57 EUR +----------------- ------------ + Inversions +---------------- ------------- +Fons d'inversió 70711.07 EUR +ETFs 40197.06 EUR +Accions 0 EUR +Renta fixa 23790.40 EUR +Total inversions 134698.52 EUR +---------------- ------------- +--------------------- ------------ +Inversions pignorades 41932.56 EUR +--------------------- ------------ + Propietat personal +---------------------------- ----------- +Vivenda principal 0 EUR +Cotxes 8174.00 EUR +Joies, Art, Col·leccionables 350.00 EUR +Metalls preciosos 0 EUR +Altres propietats 0 EUR +Total propietats 8524.00 EUR +---------------------------- ----------- + Deutes +----------------- ----- +Deutes per cobrar +Total deutes 0 EUR +----------------- ----- + Beneficis laborals +----------------------------- ----------- +Tickets Restaurant 45.92 EUR +Targeta Transport 37.95 EUR +Pla Pensions Empleados Zurich 4122.54 EUR +Total beneficis 4206.41 EUR +----------------------------- ----------- +------------ ------------- +Total Assets 161702.50 EUR +------------ ------------- +────────────────────────────── +Liabilites +-------------------------------- ------------ +Hipoteques en vivenda principal +Hipoteques en vivenda d'inversió 0 EUR +Targetes de crèdit 445.91 EUR +Línies de crèdit per inversió 18771.26 EUR +Factures impagades +Préstecs personals 0 EUR +Impostos no pagats +Altres passius 0 EUR +-------------------------------- ------------ +------------- ------------- +Total passius -19217.17 EUR +------------- ------------- +────────────────────────────── +Net Worth 142485.33 EUR +────────────────────────────── +Financial Ratios +------------------------------------ -------- ------- +Debt-to-Assets Ratio 11.88 % 50 % +Emergency Fund 5.02 mth 3-6 mth +Investment Assets to Net Worth Ratio 94.54 % 50 % +Liquid Assets to Net Worth Ratio 75.12 % 15 % +Savings Ratio 39.47 % 20 % +Debt-Service Ratio 0.96 % 35 % +Non-Mortgage Debt-Service Ratio 0.00 % 15 % +Interest Coverage Ratio 33.90 1.5 +------------------------------------ -------- -------