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.