- OpenBacktesting
- Indicator catalog
- Condition-anchored VWAP bands (ta.anchored_vwap_bands)
Condition-anchored VWAP bands (ta.anchored_vwap_bands)¶
The center matches condition-anchored VWAP; outer bands use the volume-weighted population standard deviation. Accumulation or output overflow raises an error.
Indicator catalog · How to use indicators
Run this example¶
This complete script uses bundled data. It observes the selected output without placing trades.
import numpy as np
from openbacktesting import Backtest, Strategy
from openbacktesting.test import GOOG
data = GOOG.copy()
data["source"] = data.Close
data["anchor"] = (np.arange(len(data)) % 20 == 0).astype(float)
class Example(Strategy):
def init(self):
self.value = self.ta.anchored_vwap_bands(inputs={'source': 'source', 'volume': 'Volume', 'anchor': 'anchor'})
self.latest_value = None
def next(self):
channel = self.value.vwap
if channel.valid[-1]:
self.latest_value = float(channel[-1])
result = Backtest(data, Example).run()
print(result["_strategy"].latest_value)
Example inputs: source uses close prices; anchor marks every twentieth bar; replace it with actual period starts.
Call and parameters¶
Register in init(). Read the returned channel in next() after checking valid[-1].
| Parameter | Meaning | Type | Default | Allowed values |
|---|---|---|---|---|
stdev_mult |
Volume-weighted population standard-deviation multiplier for VWAP bands. | float |
1.0 |
Minimum: 0.0 |
source/named source arguments accept a column name or same-run single-channel handle. Alternatively, inputs maps each input below to a column or handle. backend selects a supported implementation; required_outputs selects channels for readiness diagnostics. See shared arguments and handles.
Inputs and outputs¶
Required inputs: source, volume, anchor.
| Channel | Meaning |
|---|---|
vwap |
Vwap output |
lower |
Lower band |
upper |
Upper band |
Reading values safely¶
Insufficient history or missing inputs can make a channel invalid. Check that channel's valid mask; ready is diagnostic and never suppresses next(). Multi-output results may have different valid channels on the same bar.
Supply a complete 0/1 anchor series. The example resets every 20 bars only to demonstrate binding; replace it with your intended periods. Exchange sessions are not inferred.