FB <- pi_{fu.user_id, u.username, u.email,
          COALESCE(fu.spending_budget,0)->spending_budget,
          COALESCE(fu.saving_budget,0)->saving_budget,
          COALESCE(fu.investing_budget,0)->investing_budget,
          COALESCE(fu.donation_budget,0)->donation_budget,
          COALESCE(fu.credit,0)->credit}
      (finance_users fu bowtie_{fu.user_id = u.user_id} users u)

FBM <- FB x M
IY <- sigma_{YEAR(i.date)=Y}(incomes i)
MI0 <- FBM leftouterjoin_{FBM.user_id = i.user_id AND FBM.month_no = MONTH(i.date)} IY
MI <- gamma_{user_id, month_no;
             SUM(COALESCE(i.amount,0))->month_income}(MI0)

MIR <- omega_{PARTITION BY user_id ORDER BY month_income DESC, month_no ASC;
              DENSE_RANK()->best_month_rank,
              DENSE_RANK(PARTITION BY user_id ORDER BY month_income ASC, month_no ASC)->worst_month_rank}(MI)

AI <- gamma_{user_id;
             SUM(month_income)->total_income,
             AVG(month_income)->avg_monthly_income,
             STDDEV_SAMP(month_income)->income_stddev,
             MAX(month_income)->best_month_income,
             MIN(month_income)->worst_month_income,
             COUNT_IF(month_income>0)->active_income_months}(MI)

BWM <- gamma_{user_id;
              MAX_IF(month_no, best_month_rank=1)->best_month_no,
              MAX_IF(month_no, worst_month_rank=1)->worst_month_no}(MIR)

R0 <- FB bowtie_{FB.user_id=AI.user_id} AI bowtie_{FB.user_id=BWM.user_id} BWM
R1 <- alpha_{(spending_budget+saving_budget+investing_budget+donation_budget)*12->planned_annual_budget,
             total_income->actual_annual_income,
             income_stddev/NULLIF(avg_monthly_income,0)->income_volatility_cv,
             total_income-(spending_budget*12)->annual_free_cash_after_spending,
             (spending_budget*12)/NULLIF(total_income,0)->spending_pressure_ratio,
             credit/NULLIF(total_income,0)->leverage_ratio}(R0)
R  <- omega_{ORDER BY annual_free_cash_after_spending DESC,
                    spending_pressure_ratio ASC,
                    user_id ASC;
             DENSE_RANK()->finance_resilience_rank}(R1)

