# Know Sure Thing (KST)

`D07-F03-A24` · Technical Indicators → Momentum · archetype `series-transform` · difficulty 2/5 · verification **verified**

Full page: https://docs.thefintechbuilder.com/technical-indicators/momentum/know-sure-thing-kst/
Agent skill: `npx skills add IslamBaraka90/Fintech-Algorithms-Library` — https://docs.thefintechbuilder.com/guides/agent-skill/

## Install and import

```bash
npm install fintech-algorithms
```

```ts
import { knowSureThingKst } from "fintech-algorithms/technical-indicators/momentum/know-sure-thing-kst";
```

## Signature

```ts
knowSureThingKst(input)
```

Weights four smoothed rate-of-change readings taken over different lookbacks into a single momentum line, with a simple-average signal.

## Parameters

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `input` | `TopicInput` | yes | `bars` is a chronological array of OHLCV rows, each with a non-empty `timestamp` plus finite `open`, `high`, `low`, `close` and `volume`. This topic reads no keys from `parameters`: the four components are fixed at lookback/smoothing/weight of 10/10/1, 15/10/2, 20/10/3 and 30/15/4, and the signal is a fixed 9-period average. The shared momentum preamble still validates `period` (default 14), `fast_period` (default 5) and `slow_period` (default 34) before branching, so a bad value for any of them throws even though this topic reads none of them. |

## Returns

`TopicResult`

`series` and `latest` carry two keys: `kst`, the weighted sum of the four smoothed percentage rate-of-change components, and `signal`, its 9-period simple average. The slowest component sets the `kst` warm-up and `signal` trails it.

## Warm-up

The first `44 bars for `kst`, 52 bars for `signal`` positions are `null`. `kst` requires every component, and the slowest (30-bar lookback smoothed over 15) does not resolve until index 44, so `ready_at` is 44 on the canonical fixture; `signal` remains null until index 52.

## Errors

- When `period` is supplied but is not an integer >= 2, even though this topic ignores it — throws Error
- When `bars` are not strictly increasing by `timestamp` — throws Error

## Complexity

Time `O(n)`, space `O(n)`.

## Worked example

Captured by running this function on the input its own test provides. Real output of real code — but not asserted against a published figure.

### Input

`input`:

```json
{
  "bars": [
    {
      "timestamp": "2024-01-02",
      "basis": "synthetic-unadjusted",
      "open": 100,
      "high": 101.45,
      "low": 98.695,
      "close": 100,
      "volume": 750000,
      "benchmark": 200
    },
    {
      "timestamp": "2024-01-03",
      "basis": "synthetic-unadjusted",
      "open": 101.49111452,
      "high": 103.38381693,
      "low": 100.05480022,
      "close": 101.78791214,
      "volume": 795117,
      "benchmark": 200.56326135
    },
    {
      "timestamp": "2024-01-04",
      "basis": "synthetic-unadjusted",
      "open": 102.45519048,
      "high": 104.6701838,
      "low": 100.91147007,
      "close": 102.9549389,
      "volume": 840234,
      "benchmark": 201.11020913
    }
  ],
  "parameters": {}
}
```

### Call

```ts
knowSureThingKst(input)
```

### Returns

object with 9 fields: topic_id, title, state, ready, ready_at, series, latest, parameters, …

```json
{
  "topic_id": "D07-F03-A24",
  "title": "Know Sure Thing (KST)",
  "state": "calculated",
  "ready": true,
  "ready_at": 44,
  "series": {
    "kst": [null, null, null, null, null, null],
    "signal": [null, null, null, null, null, null]
  },
  "latest": {
    "kst": 2.8616450824068522,
    "signal": 4.992752189344036
  },
  "parameters": {},
  "diagnostics": {
    "causal": true,
    "input_count": 96
  }
}
```

## Verification and provenance

Tier: **verified** (via E).

The worked example below is the figure published in this algorithm's article, replayed and asserted by the test suite on every build. The arithmetic cannot drift without the build failing.

Both tiers guarantee the signature. Full explanation: https://docs.thefintechbuilder.com/guides/verification/

Generated from the docs.json payload shipped inside fintech-algorithms@0.13.0.
The signature and parameter list are checked against the compiled implementation at build time,
so a description that contradicts the code fails the build rather than reaching this file.

## Links

- Article (how it works, step by step): https://thefintechbuilder.com/technical-indicators/momentum/know-sure-thing-kst/
- Implementation source: https://github.com/IslamBaraka90/Fintech-Algorithms-Library/blob/main/src/technical-indicators/momentum/know-sure-thing-kst/impl.ts
- Package on npm: https://www.npmjs.com/package/fintech-algorithms
- Domain index for agents: https://docs.thefintechbuilder.com/technical-indicators/llms.txt
