DEPRECIATION
Category: Finance functions
Overview
The DEPRECIATION function calculates linear depreciation values per period from an investment node and a depreciation time node. The result is the depreciation amount for each time period, not the remaining book value. Depreciation from multiple investment periods stacks automatically.
Use this function when you need to calculate straight-line depreciation values per period from initial investments and their depreciation times.
Syntax
DEPRECIATION('ValueNode', 'DepreciationTime' [, "TimeLevel"])
Example usage: DEPRECIATION('Investments', 'DepreciationTime')
Parameters
| Parameter | Description | Type | Required | Default |
|---|---|---|---|---|
| ValueNode | Input node with the values to depreciate over time. Must have a time level. | Node reference | Yes | — |
| Depreciation Time | Node containing the depreciation periods for each asset. Must not have a time level. Values must be positive whole numbers. | Node reference | Yes | — |
| TimeLevel | The time level to which depreciation times correspond. | Level name | No | "Year" |
Output Shape
| Aspect | Behavior |
|---|---|
| Dimensionality | Same as ValueNode. |
| Time range | Extends beyond the input data. Depreciation continues for the specified number of periods after each investment. |
| Values | Linear depreciation amount per period:investment / depreciation_periods. Values from investments in different periods are added together where they overlap. |
| Row count | Expanded. Periods beyond the last investment are included as long as depreciation is still active. |
Watch Out
- The ValueNode must have a time level. The DepreciationTime node must not have a time level.
- Depreciation times must be positive whole numbers. Zero, negative, or non-integer values produce errors.
- When TimeLevel is omitted, depreciation times are assumed to be in years. If the ValueNode is at Quarter or Month granularity, the depreciation times are automatically converted (e.g. 4 years becomes 16 quarters or 48 months).
- The result is the depreciation amount per period, not the remaining book value. To get the remaining book value, subtract the cumulative depreciation (using RUNNINGSUM) from the original investment.
- The DepreciationTime node must not be more fine-grained than the ValueNode.
Examples
Overlapping depreciation from yearly investments
Two investments made in consecutive years are each depreciated over 4 periods. The result shows how depreciation amounts from different investments stack up.
Input node: Investments
| Year | Value |
|---|---|
| 2025 | 1000 |
| 2026 | 400 |
Input node: DepreciationTime
| Periods |
|---|
| 4 |
Formula: DEPRECIATION('Investments', 'DepreciationTime')
| Year | → DEPRECIATION Result |
|---|---|
| 2025 | 250 |
| 2026 | 250 + 100 = 350 |
| 2027 | 250 + 100 = 350 |
| 2028 | 250 + 100 = 350 |
| 2029 | 100 |
| 2030 | 0 |
Each investment is divided by 4 periods: 1000/4 = 250, 400/4 = 100. From 2026 to 2028 both depreciation streams overlap.
Per-category depreciation times
Two asset categories with different depreciation times show that each category is depreciated independently based on its own period count.
Input node: Investments
| Year | Category | Value |
|---|---|---|
| 2026 | A | 2000 |
| 2026 | B | 1000 |
Input node: DepreciationTime
| Category | Periods |
|---|---|
| A | 2 |
| B | 4 |
Formula: DEPRECIATION('Investments', 'DepreciationTime')
| Year | Category | → DEPRECIATION Result |
|---|---|---|
| 2026 | A | 1000 |
| 2026 | B | 250 |
| 2027 | A | 1000 |
| 2027 | B | 250 |
| 2028 | A | 0 |
| 2028 | B | 250 |
| 2029 | A | 0 |
| 2029 | B | 250 |
| 2030 | A | 0 |
| 2030 | B | 0 |
Category A is fully depreciated after 2 periods, while Category B continues for 4 periods.
Related Functions
| Function | When to use instead |
|---|---|
| RUNNINGSUM | Combine with DEPRECIATION to calculate remaining book value: 'Investment' - RUNNINGSUM(DEPRECIATION(...)). |