Models Reference

Models define data transformation pipelines from CSV to charts/reports.

Model Structure

{
  dataSource: string,             // Split function name
  dataSourceKey: string,          // Key to split on (timestamp|category|subcategory|value|extra)
  categories: string[],           // Categories to include
  snapshotCategories?: string[],  // Categories using last-value logic (optional)
  output: string,                 // Generator function name
  beginAtZero: boolean,           // Chart Y-axis starts at zero
  chartLabelType: string,         // Label format (money|percent|generic|custom)
  suffix?: string,                // Custom label suffix
  date?: string,                  // Optional date filter
  values: string                  // Comma-separated parameters for output function
}

snapshotCategories Field

Controls how getLastValuePerTypeForCurrentMonth processes each category:

  • Snapshot categories (listed in snapshotCategories): Keep only the last value per subcategory. Use for balance/portfolio data where you track current value.
  • Transaction categories (not listed): Sum all entries. Use for income, expenses, dividends where you want totals.

Example:

portfolioReport: {
  categories: ["Portfolio", "Income", "Dividend", "Debt"],
  snapshotCategories: ["Portfolio", "Debt"],  // These use last value
  // Income and Dividend will sum all entries
}

If snapshotCategories is omitted, all categories use last-value logic (backwards compatible).

Built-in Models

Basic Expense/Income Models

expenses

Daily expense tracking across all categories.

  • Data Source: splitDailyDates
  • Categories: Income, House Expenses, Expenses
  • Output: generateDailyDataSet
  • Chart Type: Line
  • Label: Money

expensesMonthly

Monthly aggregated expenses.

  • Data Source: splitByYearMonth
  • Categories: Income, House Expenses, Expenses
  • Output: generateSumDataSet

expensesQuarterly

Quarterly expense analysis.

  • Data Source: splitByQuarter
  • Categories: House Expenses, Expenses
  • Output: generateSumDataSet

income

Daily income tracking.

  • Data Source: splitDailyDates
  • Categories: Income
  • Output: generateDailyDataSet

incomeYearly

Annual income aggregation.

  • Data Source: splitByYear
  • Categories: Income
  • Output: generateSumDataSet

incomeWeekly

Weekly income analysis.

  • Data Source: splitByWeek
  • Categories: Income
  • Output: generateSumDataSet

Portfolio Models

portfolio

Daily portfolio value tracking.

  • Data Source: splitDailyDates
  • Categories: Portfolio
  • Output: generateDailyDataSet
  • Begin at Zero: false

portfolioByValueRange

Portfolio distribution by value ranges.

  • Data Source: splitByValueRange
  • Categories: Portfolio
  • Output: generateSumDataSetPerTypes
  • Data Source Key: value

portfolioReport

Current month portfolio snapshot with mixed data types.

  • Data Source: splitByYearMonth
  • Categories: Portfolio, Income, Cotisation, Expenses, House Expenses, Dividend, Debt, Loan
  • Snapshot Categories: Portfolio, Debt, Loan (use last value per subcategory)
  • Output: getLastValuePerTypeForCurrentMonth
  • View: report or table

Portfolio, Debt, and Loan show current balances. Other categories sum all entries for the month.

Mortgage Models

mortgage

Daily mortgage balance tracking.

  • Data Source: splitDailyDates
  • Categories: Mortgage
  • Output: generateDailyDataSet
  • Begin at Zero: false

mortgageRate

Interest rate tracking over time.

  • Data Source: splitDailyDates
  • Categories: Mortgage Rate
  • Output: generateDailyDataSet
  • Chart Label: percent

Dividend Models

dividend

Monthly dividend and contribution aggregation.

  • Data Source: splitByYearMonth
  • Categories: Dividend, Cotisation
  • Output: generateSumDataSetPerTypes

dividendMonthlyBySymbol

Monthly dividends broken down by symbol (subcategory).

  • Data Source: splitByYearMonth
  • Categories: Dividend
  • Output: generateDividendMonthlyBySymbol

dividendCumulativeBySymbol

Cumulative dividends per symbol over time.

  • Data Source: splitByYearMonth
  • Categories: Dividend
  • Output: generateCumulativeDividendBySymbol

dividendQuarterlyBySymbol

Quarterly dividend breakdown by symbol.

  • Data Source: splitByQuarter
  • Categories: Dividend
  • Output: generateDividendMonthlyBySymbol

dividendAnalysisReport

Comprehensive dividend analysis (report view).

  • Data Source: splitByYearMonth
  • Categories: Dividend
  • Output: reportDividendAnalysis
  • View: report or table
  • Metrics: Total dividends, average monthly, payment count per symbol

Cumulative Models

cumulativeSum

Cumulative sum across categories.

  • Data Source: splitByYearMonth
  • Categories: Portfolio, Income, Cotisation, Expenses, House Expenses, Dividend
  • Output: generateCumulativeSumDataSet

cumulativeSumPerTypes

Cumulative sum split by category.

  • Data Source: splitByYearMonth
  • Categories: Portfolio, Income, Cotisation, Expenses, House Expenses, Dividend
  • Output: generateCumulativeSumDataSetPerTypes

cumulativeSumForCotisationSplitByExtra

Cumulative contributions by extra field.

  • Data Source: splitBy
  • Categories: Cotisation
  • Output: generateCumulativeSumDataSetPerTypes
  • Data Source Key: extra

Comparison Models

incomeMinusExpensesByYearMonth

Monthly net income (Income - Expenses).

  • Data Source: splitByYearMonth
  • Categories: Income, Expenses
  • Output: generateDifference
  • Values: “Income, Expenses”

incomeMinusExpensesByDaily

Daily cumulative net income.

  • Data Source: splitDailyDates
  • Categories: Income, Expenses
  • Output: generateCumulativeDifference
  • Values: “Income, Expenses”

expensesPlusHouseExpensesByYearMonth

Total monthly expenses (Expenses + House Expenses).

  • Data Source: splitByYearMonth
  • Categories: Expenses, House Expenses
  • Output: generateSum
  • Values: “Expenses, House Expenses”

Breakdown Models

expensesMonthlyBreakdown

Monthly expenses separated by category.

  • Data Source: splitByYearMonth
  • Categories: House Expenses, Expenses
  • Output: generateSumDataSetPerTypes

allCategoriesBreakdown

All categories broken down by type.

  • Data Source: splitByCategory
  • Categories: Portfolio, Income, House Expenses, Expenses, Dividend
  • Output: generateSumDataSetPerTypes
  • Data Source Key: category

Report Models

incomeMinusExpensesByYearMonthReport

Net income report (table/text view).

  • Output: reportDifference
  • View: report or table

expensesPlusHouseExpensesByYearMonthReport

Total expenses report (table/text view).

  • Output: reportSum
  • View: report or table

quarterlyIncomeExpenseReport

Quarterly financial summary.

  • Data Source: splitByQuarter
  • Output: reportSum
  • View: report or table

weeklyExpenseAnalysis

Weekly expense breakdown.

  • Data Source: splitByWeek
  • Output: reportSum
  • View: report or table

portfolioReportTable

Portfolio snapshot for current month (table view).

  • Snapshot Categories: Portfolio, Debt, Loan
  • Output: getLastValuePerTypeForCurrentMonth
  • View: table

Aggregate Models

all

All financial categories in single view.

  • Categories: Portfolio, Income, Mortgage, Mortgage Rate, Cotisation, Dividend, House Expenses, Expenses
  • Output: generateDailyDataSet

incomesExpensesYearly

Annual income and expense summary.

  • Data Source: splitByYear
  • Categories: Income, House Expenses, Expenses
  • Output: generateSumDataSet

expensesOnlyMonthly, expensesOnlyDaily, expensesOnlyYearly

Expense-only views at different time granularities.

Custom Model Creation

Via Settings UI

  1. Navigate to Settings → FinDoc → Models
  2. Click “Add New Model”
  3. Configure model parameters
  4. Save settings

Model Validation

Invalid models show inline errors:

  • Missing split function
  • Invalid output function
  • Incompatible view type (e.g., report output with chart view)

Example: Custom Model

customExpenseAnalysis:
    dataSource: splitByYearMonth
    categories: ["Expenses"]
    output: generateSumDataSetPerTypes
    beginAtZero: true
    chartLabelType: money
    dataSourceKey: timestamp
    values: ""

Usage:

```findoc
filename: expenses.csv
model: customExpenseAnalysis
view: pie
```

Model Compatibility Matrix

Output Function Chart View Report View Table View
generateDailyDataSet
generateSumDataSet
generateSumDataSetPerTypes
generateDifference
generateSum
generateCumulativeSumDataSet
getLastValuePerTypeForCurrentMonth
reportDifference
reportSum
reportDividendAnalysis
generateDividendMonthlyBySymbol

Migration

Plugin automatically migrates settings on version updates, adding new models while preserving custom models.