> For the complete documentation index, see [llms.txt](https://help.edgetracker.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.edgetracker.com/advanced-scanner/creating-filters-and-columns-using-formulas.md).

# Creating Filters and Columns Using Formulas

The Formula Editor allows you to build custom filters and columns using numbers, arithmetic calculations, data points, and built-in functions — similar to how formulas work in Excel. This gives you greater control over how data is filtered and displayed in your scans.

Formulas are ideal when the standard Filter Builder isn't flexible enough for your strategy. Use formulas to:

* Create custom calculations and indicators
* Access advanced built-in functions
* Perform more complex calculations
* Combine multiple data points, functions, or indicators

## Syntax Rules

* Unlike Excel, EdgeTracker formulas do not need to begin with an equal sign.  `=`
* Data points and functions must be surrounded by brackets.  `[`  `]`
* Use standard arithmetic operators:  `+`  `-`  `*`  `/`&#x20;
* Use parentheses to group operations.  `(`  `)`
* Use comparison operators for filters:  `>`  `>=`  `<`  `<=`  `=`  `!=`
* A space is required between each element. An element includes:
  * Arithmetic operators&#x20;
  * Comparison operators
  * Parentheses
  * Numbers
  * Functions
  * Data points

**Example:**

To scan for securities that had a **gap percentage greater than 50**:

{% code overflow="wrap" %}

```
( ( [DAILY_PRICE_OPEN_ADJ(0)] - [DAILY_PRICE_CLOSE_ADJ(-1)] ) / [DAILY_PRICE_CLOSE_ADJ(-1)]  * 100 ) > 50
```

{% endcode %}

{% hint style="warning" %}
Note that each element is separated by a space, as required.
{% endhint %}

## Functions

The Formula Editor supports a library of predefined functions that return data points, perform calculations, or use technical indicators. This simplifies writing formulas without having to remember complex syntax. If you're familiar with Excel-style functions (e.g. `=AVERAGE(A1:A10)`), you'll find EdgeTracker functions similarly intuitive.

There are over 175 available functions, organized into the following categories:

* [Daily Data Points](/advanced-scanner/creating-filters-and-columns-using-formulas/function-reference/daily-data-point-functions.md)
* [Daily Calculations](/advanced-scanner/creating-filters-and-columns-using-formulas/function-reference/daily-calculation-functions.md)
* [Daily Indicators](/advanced-scanner/creating-filters-and-columns-using-formulas/function-reference/daily-indicator-functions.md)
* [Intraday Calculations](/advanced-scanner/creating-filters-and-columns-using-formulas/function-reference/intraday-calculation-functions.md)
* [Intraday Indicators](/advanced-scanner/creating-filters-and-columns-using-formulas/function-reference/intraday-indicator-functions.md)

### Parameters

All functions, except those in the [Security Information](/advanced-scanner/creating-filters-and-columns-using-formulas/function-reference/daily-data-point-functions.md#security-information) category, require at least one parameter and can be used in both filters and columns. Some functions accept up to seven parameters, depending on their complexity.

{% code overflow="wrap" %}

```
[DAILY_PRICE_OPEN_ADJ(offset_days)]
```

{% endcode %}

This function returns the **adjusted opening price** during **regular trading hours**. It takes one parameter:

* `offset_days` - Number of trading days to offset from the scan date. (e.g. `0` for the current scan date, `-1` for the previous trading day)

{% tabs %}
{% tab title="Example 1" %}

```
[DAILY_PRICE_OPEN_ADJ(0)] <= 10
```

This filter example returns securities that opened regular trading hours with an **adjusted price** of **10 or less**.
{% endtab %}

{% tab title="Example 2" %}

```
[DAILY_PRICE_OPEN_ADJ(-1)] <= 10
```

This filter example returns securities that opened regular trading hours with an **adjusted price** of **10 or less** on the **previous trading day**.
{% endtab %}
{% endtabs %}

Let's take a look at a more complex function.

{% code overflow="wrap" %}

```
[INTRADAY_VWAP_UNADJ_AT_MAX(max_data, offset_days, start_time, end_time, bar_minutes, anchor_time)]
```

{% endcode %}

This function returns the **intraday unadjusted VWAP** for the time another data point (e.g. price, volume) reaches its **maximum** within a specified intraday time range. It takes six parameters:

* `max_data` - Data point to evaluate for the maximum value. (e.g. `price_high_unadj`, `volume_unadj`).
* `offset_days` - Number of trading days to offset from the scan date. (e.g. `0` for the current scan date, `-1` for the previous trading day).
* `start_time` - Start of the intraday time range to evaluate (e.g. `09:30` or `9:30 AM`).
* `end_time` - End of the intraday time range to evaluate (e.g. `15:59` or `3:59 PM`).
* `bar_minutes` - Bar size to aggregate intraday date: `1`  `5`  `15`  `30`  `60` .
* `anchor_time` - Start time for the VWAP calculation (e.g. `04:00` or `4:00 PM`).

{% tabs %}
{% tab title="Example" %}

```
[INTRADAY_VWAP_UNADJ_AT_MAX(price_high_unadj, 0, 9:30, 15:59, 5, 4:00)]
```

This column example returns the **intraday unadjusted VWAP**:

* for the time of the **highest unadjusted price**
* between **9:30 AM** and **3:59 PM** (regular trading hours)
* using **5-minute** bar data
* calculating VWAP starting at **4:00 AM**
  {% endtab %}
  {% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.edgetracker.com/advanced-scanner/creating-filters-and-columns-using-formulas.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
