diff --git a/commands/balance-sheet b/commands/balance-sheet index c2d588c..07b1890 100755 --- a/commands/balance-sheet +++ b/commands/balance-sheet @@ -28,7 +28,7 @@ def get_last_month_timestamps(date): year = int(date.split("-")[0]) d = datetime(year, month, 1) end_date = d - timedelta(days=1) - start_date = f"{end_date.year}-{end_date.month}-01" + start_date = f"{end_date.year}-{end_date.month:02d}-01" return start_date, end_date.strftime("%Y-%m-%d") def get_sum_balances(balances, account_prefix): @@ -94,6 +94,12 @@ def get_solvency_ratio(balances, min): result = round((get_net_worth(balances).number / total_assets.number) * 100, 2) return f"{bcolors.FAIL if result < min else bcolors.OKGREEN}{result} %{bcolors.ENDC}" +def get_interest_coverage_ratio(gross_monthly_income, debt_payments, mortgage_payments, min): + interest = debt_payments.number + mortgage_payments.number + interest = interest if interest > 0 else 1 + result = round(gross_monthly_income / interest, 2) + return f"{bcolors.FAIL if result < min else bcolors.OKGREEN}{result}{bcolors.ENDC}" + def get_max_leveraged_investment(balances): total_assets = Amount.from_string(get_sum_balances(balances, "Assets:")) return Amount(round(total_assets.number * Decimal(0.9), 2), total_assets.currency).to_string() @@ -177,7 +183,7 @@ def print_report(date, balances, expenses, income, debt_payments, mortgage_payme ["Savings Ratio", get_savings_ratio(balances, income, savings, 20), "20 %"], ["Debt-Service Ratio", get_debt_service_ratio(balances, income, debt_payments, 35), "35 %"], ["Non-Mortgage Debt-Service Ratio", get_non_mortgage_debt_service_ratio(balances, income, mortgage_payments, 15), "15 %"], - ["Solvency Ratio", get_solvency_ratio(balances, 50), "50 %"] + ["Interest Coverage Ratio", get_interest_coverage_ratio(income, debt_payments, mortgage_payments, 1.5), "1.5"] ])) def get_balances(entries, options, date): @@ -206,7 +212,7 @@ def get_income(entries, options, date): def get_debt_payments(entries, options, date): # FIX: Agafar nomes els pagaments de deute, enlloc de també les addicions de deute start_date, end_date = get_last_month_timestamps(date) - debt_payments_query = f"SELECT convert(sum(position), \"EUR\") as position FROM date <= {end_date} WHERE account ~ 'Liabilities:' AND date >= {start_date}" + debt_payments_query = f"SELECT convert(sum(position), \"EUR\") as position FROM date <= {end_date} WHERE account ~ 'Expenses:R4:Interessos' AND date >= {start_date}" mortgage_payments_query = f"SELECT convert(sum(position), \"EUR\") as position FROM date <= {end_date} WHERE account ~ 'Liabilities:Hipoteca:' AND date >= {start_date}" rtypes, rrows_debt = query.run_query( entries, options, debt_payments_query) diff --git a/ledger/accounts.beancount b/ledger/accounts.beancount index 1ada67d..78c1771 100644 --- a/ledger/accounts.beancount +++ b/ledger/accounts.beancount @@ -47,6 +47,7 @@ 1970-01-01 open Income:Other:Devolucions EUR 1970-01-01 open Expenses:R4:Comissions EUR +1970-01-01 open Expenses:R4:Interessos EUR 1970-01-01 open Expenses:Caixabank:Comissions EUR 1970-01-01 open Expenses:Taxes:IRPF EUR 1970-01-01 open Expenses:Taxes:BeneficisDividends EUR diff --git a/ledger/transactions/2025/01.beancount b/ledger/transactions/2025/01.beancount index fdb494a..736b58f 100644 --- a/ledger/transactions/2025/01.beancount +++ b/ledger/transactions/2025/01.beancount @@ -185,16 +185,52 @@ 2025-01-24 * "Renta 4" "Enviament de diners Renta 4" Assets:Liquid:R4:EUR 1200 EUR Assets:Liquid:Caixabank:Corrent +2025-01-25 * "Yummy Sushi" "Dinar sushi" + Expenses:MenjarFora 37.80 EUR + Assets:Liquid:Caixabank:Corrent +2025-01-26 * "Emede" "Sudadera UPC" + Expenses:Roba 36.60 EUR + Liabilities:Credit:Caixabank:TargetaCredit +2025-01-27 * "Renta 4" "COMPRA DE 235 IWVL" + Assets:Invest:ETF:IWVL 235 IWVL {42.19 EUR} + Expenses:R4:Comissions 15 EUR + Assets:Liquid:R4:EUR -1114.11 EUR + Liabilities:Credit:Renta4:PolissaCredit +2025-01-28 * "Don Zangano" "Esmorzar" + Expenses:MenjarFora 5.10 EUR + Assets:Liquid:Caixabank:Corrent +2025-01-28 * "Plusfresc" "Fruita i aigua" + Expenses:Supermercat 2.62 EUR + Assets:Liquid:Caixabank:Corrent +2025-01-28 * "Passatore" "Dinar" + Expenses:MenjarFora 12.50 EUR + Assets:Liquid:Caixabank:Corrent +2025-01-28 * "Blät" "Cafè" + Expenses:MenjarFora 1.55 EUR + Assets:Benefits:Edenred:TicketsRestaurant +2025-01-28 * "Plusfresc" "Compra de la setmana" + Expenses:Supermercat 23.93 EUR + Assets:Liquid:Caixabank:Corrent +2025-01-28 * "Renta 4" "PAGO ANA LOPEZ-MONIS NOTARIO FRA 22500049-C 01/25" + Expenses:R4:Comissions 42.18 EUR + Liabilities:Credit:Renta4:PolissaCredit +2025-01-29 * "Zurich" "Nòmina Gener 2025" + Income:Work:Zurich:Salari -3389.62 EUR + Assets:Liquid:Caixabank:Corrent +2025-01-30 * "Renta 4" "COMPRA DE 157 XDEQ" + Assets:Invest:ETF:XDEQ 157 XDEQ {69.88 EUR} + Expenses:R4:Comissions 15 EUR + Liabilities:Credit:Renta4:PolissaCredit -2025-02-01 balance Assets:Liquid:Caixabank:Corrent 9635.25 EUR -2025-02-01 balance Assets:Liquid:R4:EUR 1114.11 EUR +2025-02-01 balance Assets:Liquid:Caixabank:Corrent 12942.92 EUR +2025-02-01 balance Assets:Liquid:R4:EUR 0 EUR 2025-02-01 balance Assets:Invest:Fund:Vanguard:EMMK 14.99 VANEMMK 2025-02-01 balance Assets:Invest:Fund:Vanguard:GL 707.25 VANGL 2025-02-01 balance Assets:Invest:Fund:Vanguard:SMCAP 48.28 VANSMCAP -2025-02-01 balance Assets:Invest:ETF:IWVL 141 IWVL +2025-02-01 balance Assets:Invest:ETF:IWVL 376 IWVL 2025-02-01 balance Assets:Invest:Fixed:R4RF 1518.57004 R4RF -2025-02-01 balance Assets:Invest:ETF:XDEQ 70 XDEQ -2025-02-01 balance Assets:Benefits:Edenred:TicketsRestaurant 4.60 EUR +2025-02-01 balance Assets:Invest:ETF:XDEQ 227 XDEQ +2025-02-01 balance Assets:Benefits:Edenred:TicketsRestaurant 3.05 EUR 2025-02-01 balance Assets:Benefits:Edenred:TargetaTransport 81.90 EUR 2025-02-01 balance Assets:Benefits:DZP:PPEZurich 3003.57 EUR 2025-02-01 balance Assets:PersonalProperty:VivendaPrincipal 0 EUR @@ -202,4 +238,5 @@ 2025-02-01 balance Assets:PersonalProperty:JoiesArtCollecionables 1250 EUR 2025-02-01 balance Assets:PersonalProperty:MetallsPreciosos 0 EUR 2025-02-01 balance Assets:PersonalProperty:AltresPropietats 0 EUR -2025-02-01 balance Liabilities:Credit:Caixabank:TargetaCredit -27.87 EUR \ No newline at end of file +2025-02-01 balance Liabilities:Credit:Caixabank:TargetaCredit -64.47 EUR +2025-02-01 balance Liabilities:Credit:Renta4:PolissaCredit -19843.88 EUR \ No newline at end of file diff --git a/ledger/transactions/2025/02.beancount b/ledger/transactions/2025/02.beancount new file mode 100644 index 0000000..dbcff5e --- /dev/null +++ b/ledger/transactions/2025/02.beancount @@ -0,0 +1,47 @@ +2025-02-01 balance Assets:Liquid:Caixabank:Corrent 12942.92 EUR +2025-02-01 balance Assets:Liquid:R4:EUR 0 EUR +2025-02-01 balance Assets:Invest:Fund:Vanguard:EMMK 14.99 VANEMMK +2025-02-01 balance Assets:Invest:Fund:Vanguard:GL 707.25 VANGL +2025-02-01 balance Assets:Invest:Fund:Vanguard:SMCAP 48.28 VANSMCAP +2025-02-01 balance Assets:Invest:ETF:IWVL 376 IWVL +2025-02-01 balance Assets:Invest:Fixed:R4RF 1518.57004 R4RF +2025-02-01 balance Assets:Invest:ETF:XDEQ 227 XDEQ +2025-02-01 balance Assets:Benefits:Edenred:TicketsRestaurant 3.05 EUR +2025-02-01 balance Assets:Benefits:Edenred:TargetaTransport 81.90 EUR +2025-02-01 balance Assets:Benefits:DZP:PPEZurich 3003.57 EUR +2025-02-01 balance Assets:PersonalProperty:VivendaPrincipal 0 EUR +2025-02-01 balance Assets:PersonalProperty:Cotxe 10000 EUR +2025-02-01 balance Assets:PersonalProperty:JoiesArtCollecionables 1250 EUR +2025-02-01 balance Assets:PersonalProperty:MetallsPreciosos 0 EUR +2025-02-01 balance Assets:PersonalProperty:AltresPropietats 0 EUR +2025-02-01 balance Liabilities:Credit:Caixabank:TargetaCredit -64.47 EUR +2025-02-01 balance Liabilities:Credit:Renta4:PolissaCredit -19843.88 EUR + +2025-02-01 * "Caixabank" "Pagament targeta de crèdit" + Liabilities:Credit:Caixabank:TargetaCredit 27.87 EUR + Assets:Liquid:Caixabank:Corrent +2025-02-01 * "Edenred" "Recàrrega tickets restaurant" + Assets:Benefits:Edenred:TicketsRestaurant 209.00 EUR + Income:Work:Zurich:TicketsRestaurant +2025-02-01 * "Edenred" "Recàrrega targeta transport" + Assets:Benefits:Edenred:TargetaTransport 35.00 EUR + Income:Work:Zurich:TargetaTransport + +2025-03-01 balance Assets:Liquid:Caixabank:Corrent 12915.05 EUR +2025-03-01 balance Assets:Liquid:R4:EUR 0 EUR +2025-03-01 balance Assets:Invest:Fund:Vanguard:EMMK 14.99 VANEMMK +2025-03-01 balance Assets:Invest:Fund:Vanguard:GL 707.25 VANGL +2025-03-01 balance Assets:Invest:Fund:Vanguard:SMCAP 48.28 VANSMCAP +2025-03-01 balance Assets:Invest:ETF:IWVL 376 IWVL +2025-03-01 balance Assets:Invest:Fixed:R4RF 1518.57004 R4RF +2025-03-01 balance Assets:Invest:ETF:XDEQ 227 XDEQ +2025-03-01 balance Assets:Benefits:Edenred:TicketsRestaurant 212.05 EUR +2025-03-01 balance Assets:Benefits:Edenred:TargetaTransport 116.90 EUR +2025-03-01 balance Assets:Benefits:DZP:PPEZurich 3003.57 EUR +2025-03-01 balance Assets:PersonalProperty:VivendaPrincipal 0 EUR +2025-03-01 balance Assets:PersonalProperty:Cotxe 10000 EUR +2025-03-01 balance Assets:PersonalProperty:JoiesArtCollecionables 1250 EUR +2025-03-01 balance Assets:PersonalProperty:MetallsPreciosos 0 EUR +2025-03-01 balance Assets:PersonalProperty:AltresPropietats 0 EUR +2025-03-01 balance Liabilities:Credit:Caixabank:TargetaCredit -36.60 EUR +2025-03-01 balance Liabilities:Credit:Renta4:PolissaCredit -19843.88 EUR \ No newline at end of file