> ## Documentation Index
> Fetch the complete documentation index at: https://docs.quantspace.limex.pro/llms.txt
> Use this file to discover all available pages before exploring further.

# run_feature_worker

> Compute technical indicators from OHLCV data and save to blob storage

## Overview

`run_feature_worker` computes technical indicators (TA-Lib) from OHLCV data. It is part of the **optional ML path** — not required for equal weight / HRP / DCC backtests that go data → PO → trading.

Ask for the indicators you care about (e.g. “RSI and MACD only”); skills build the full `Features params` config.

***

## Parameters

<ParamField body="input_url" type="string" required>
  Blob storage URL pointing to a `data_extractor_*.json` file.

  This is the `output_url` returned by `run_data_extraction`.
</ParamField>

<ParamField body="config" type="object" required>
  Feature engineering configuration.

  <Expandable title="config fields">
    <ParamField body="Features params" type="object" required>
      Controls which technical indicators are computed. Each indicator group is an object
      with a `status` boolean and a `windows` array of integer periods.

      <Expandable title="Indicator groups">
        <ParamField body="bb_lines" type="object">
          Bollinger Bands (upper, middle, lower).
          Fields: `status` (bool), `windows` (int array). Columns produced: `bb_upper_{w}`, `bb_middle_{w}`, `bb_lower_{w}`.
        </ParamField>

        <ParamField body="moving_averages" type="object">
          Simple Moving Average (SMA) and Exponential Moving Average (EMA).
          Fields: `status` (bool), `windows` (int array). Columns: `sma_{w}`, `ema_{w}`.
        </ParamField>

        <ParamField body="rsi_indicators" type="object">
          Relative Strength Index (RSI).
          Fields: `status` (bool), `windows` (int array). Columns: `rsi_{w}`.
        </ParamField>

        <ParamField body="macd_indicators" type="object">
          MACD line, signal, and histogram. `fastperiod = w`, `slowperiod = 2*w`, `signalperiod = 9`.
          Fields: `status` (bool), `windows` (int array). Columns: `macd_{w}`, `macd_signal_{w}`, `macd_hist_{w}`.
        </ParamField>

        <ParamField body="stochastic_indicators" type="object">
          Stochastic Oscillator (Stoch K and D).
          Fields: `status` (bool), `windows` (int array). Columns: `slowk_{w}`, `slowd_{w}` (TA-Lib STOCH).
        </ParamField>

        <ParamField body="atr_indicators" type="object">
          Average True Range (ATR).
          Fields: `status` (bool), `windows` (int array). Columns: `atr_{w}`.
        </ParamField>

        <ParamField body="adx_indicators" type="object">
          Average Directional Index (ADX).
          Fields: `status` (bool), `windows` (int array). Columns: `adx_{w}`.
        </ParamField>

        <ParamField body="cci_indicators" type="object">
          Commodity Channel Index (CCI).
          Fields: `status` (bool), `windows` (int array). Columns: `cci_{w}`.
        </ParamField>

        <ParamField body="roc_indicators" type="object">
          Rate of Change (ROC).
          Fields: `status` (bool), `windows` (int array). Columns: `roc_{w}`.
        </ParamField>

        <ParamField body="obv_indicator" type="boolean">
          On-Balance Volume (OBV). Set to `true` to enable. Produces a single `obv` column.
        </ParamField>

        <ParamField body="candlestick_patterns" type="object">
          Candlestick pattern recognition (TA-Lib CDL\* functions). Set `status: true` to enable,
          then individually toggle each pattern name (e.g. `"Doji": true`, `"Hammer": true`).
          Over 50 patterns are available.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

***

## Returns

```json theme={null}
{
  "status": "Succeeded",
  "output_url": "https://stqsnpprod.blob.core.windows.net/data/feature_engine_a1c3e5f70912.json",
  "output_name": "feature_engine_a1c3e5f70912.json",
  "execution_name": "job-feature-worker-abc123xyz"
}
```

| Field            | Description                                                              |
| ---------------- | ------------------------------------------------------------------------ |
| `status`         | Job terminal status (`Succeeded`)                                        |
| `output_url`     | Full HTTPS URL to the output blob — pass to `run_ml_job` or `run_dl_job` |
| `output_name`    | Blob filename                                                            |
| `execution_name` | Job execution ID for audit/debugging                                     |

***

## Example

```json theme={null}
{
  "input_url": "https://stqsnpprod.blob.core.windows.net/data/data_extractor_2b510101b9b7.json",
  "config": {
    "Features params": {
      "bb_lines": { "status": false, "windows": [20] },
      "moving_averages": { "status": true, "windows": [5, 15, 22] },
      "rsi_indicators": { "status": true, "windows": [5, 15] },
      "macd_indicators": { "status": true, "windows": [12] },
      "stochastic_indicators": { "status": false, "windows": [14] },
      "atr_indicators": { "status": false, "windows": [14] },
      "adx_indicators": { "status": false, "windows": [14] },
      "cci_indicators": { "status": false, "windows": [14] },
      "roc_indicators": { "status": false, "windows": [10] },
      "obv_indicator": false,
      "candlestick_patterns": { "status": false }
    }
  }
}
```

***

## Resources

| Resource           | Value                 |
| ------------------ | --------------------- |
| Container Apps Job | `job-feature-worker`  |
| Container name     | `feature-worker`      |
| Env vars injected  | `INPUT_URL`, `CONFIG` |
| Output blob prefix | `feature_engine_`     |

***

## Next Step

Pass `output_url` (with the original `data_extractor_` URL) to:

* [`run_ml_job`](/tools/ml-job) — sklearn / XGBoost / LightGBM / CatBoost regressors
* [`run_dl_job`](/tools/dl-job) — PyTorch networks
