---
title: tripleExponentialDerivative() function
description: tripleExponentialDerivative() returns the triple exponential derivative (TRIX) values using n points.
url: https://docs.influxdata.com/flux/v0/stdlib/universe/tripleexponentialderivative/
estimated_tokens: 647
product: Flux
version: v0
publisher: InfluxData
canonical: https://docs.influxdata.com/flux/v0/stdlib/universe/tripleexponentialderivative/
date: '2024-04-08T16:01:02-06:00'
lastmod: '2024-04-08T16:01:02-06:00'
---

* Flux 0.40.0+

InfluxDB support

`tripleExponentialDerivative()` returns the triple exponential derivative (TRIX)
values using `n` points.

Triple exponential derivative, commonly referred to as “[TRIX](https://en.wikipedia.org/wiki/Trix_(technical_analysis)),”
is a momentum indicator and oscillator. A triple exponential derivative uses
the natural logarithm (log) of input data to calculate a triple exponential
moving average over the period of time. The calculation prevents cycles
shorter than the defined period from being considered by the indicator.`tripleExponentialDerivative()` uses the time between `n` points to define
the period.

Triple exponential derivative oscillates around a zero line.
A positive momentum **oscillator** value indicates an overbought market;
a negative value indicates an oversold market.
A positive momentum **indicator** value indicates increasing momentum;
a negative value indicates decreasing momentum.

#### Triple exponential moving average rules

* A triple exponential derivative is defined as:
  * `TRIX[i] = ((EMA3[i] / EMA3[i - 1]) - 1) * 100`
  * `EMA3 = EMA(EMA(EMA(data)))`

* If there are not enough values to calculate a triple exponential derivative,
  the output `_value` is `NaN`; all other columns are the same as the last
  record of the input table.
* The function behaves the same way as the `exponentialMovingAverage()` function:
  * The function ignores `null` values.
  * The function operates only on the `_value` column.

##### Function type signature

```js
(<-tables: stream[{A with _value: B}], n: int) => stream[{A with _value: float}] where A: Record, B: Numeric
```

For more information, see [Function type signatures](/flux/v0/function-type-signatures/).

## Parameters

### n

(Required)
Number of points to use in the calculation.

### tables

Input data. Default is piped-forward data (`<-`).

## Examples

### Calculate a two-point triple exponential derivative

```js
import "sampledata"

sampledata.float()
    |> tripleExponentialDerivative(n: 2)
```

#### Related

* [movingAverage() function](/flux/v0/stdlib/universe/movingaverage/)
* [doubleEMA() function](/flux/v0/stdlib/universe/doubleema/)
* [tripleEMA() function](/flux/v0/stdlib/universe/tripleema/)
* [timedMovingAverage() function](/flux/v0/stdlib/universe/timedmovingaverage/)
* [exponentialMovingAverage() function](/flux/v0/stdlib/universe/exponentialmovingaverage/)
* [InfluxQL TRIPLE\_EXPONENTIAL\_DERIVATIVE()](/influxdb/v1/query_language/functions/#triple-exponential-derivative)

[transformations](/flux/v0/tags/transformations/)
