@anthony_m

Bollinger Bands are actually quite easy to calculate.

The middle band is just the simple moving average, the default period is 20.

For the other bands you need the standard deviation for the same period.

The upper band is middle + multiplier * std

The lower band is middle - multiplier * std

Where the default for the multiplier is 2.

There's an article on the formula for Bollinger Bands on Investopedia - they use the 'typical price' (high + low + close) / 3 but I think most people just use the close price.

For the code it depends if you only need the latest values or the history.

Using pandas the code for the first alternative could be:

```
def strategy(data):
close = data.sel(field='close').copy().to_pandas().ffill().bfill().fillna(0)
# let's just use the default 20 period:
period = 20
sma = close.iloc[-period:].mean()
std = close.iloc[-period:].std()
# and the default multiplier of 2:
multiplier = 2
upper = sma + multiplier * std
lower = sma - multiplier * std
```

If you need more than the last values you can use pandas.rolling:

```
def strategy(data):
close = data.sel(field='close').copy().to_pandas().ffill().bfill().fillna(0)
# let's just use the default 20 period:
period = 20
sma = close.rolling(period).mean()
std = close.rolling(period).std()
# and the default multiplier of 2:
multiplier = 2
upper = sma + multiplier * std
lower = sma - multiplier * std
```