Skip to content
Open RaamTrade

RC2_LEARNING_SET_OUTSIDE_RANGE

In <set>, <name>=Range(...) goes outside the strategy’s own optimizer range for it.

What it means

Every value a learning set gives a number must sit inside that Param’s opt_min..opt_max, have the Param’s kind (a whole number for a whole-number Param), and a Range must run forwards with a step above 0. A switch takes True, False or Range(False, True), and a choice one of its own values.

Why it happens

Below the Param’s opt_min of 5:

class TooWide(Strategy):
trade = Symbol()
sizing = FixedCapital()
fast = Param(10, min=2, max=100, opt_min=5, opt_max=30)
slow = Param(30, min=10, max=200, opt_min=20, opt_max=80, opt_step=5)
offset = Param(0.01, min=0.0, max=1.0)
use_filter = Param(False)
learning_set_2 = LearningSet(fast=Range(2, 15))
def execute(self):
f = SMA(self.fast, on=self.trade)
s = SMA(self.slow, on=self.trade)
if f.value > s.value and self.trade.is_flat:
self.buy(self.trade)

A fraction on a whole-number Param:

class Fraction(Strategy):
trade = Symbol()
sizing = FixedCapital()
fast = Param(10, min=2, max=100, opt_min=5, opt_max=30)
slow = Param(30, min=10, max=200, opt_min=20, opt_max=80, opt_step=5)
offset = Param(0.01, min=0.0, max=1.0)
use_filter = Param(False)
learning_set_2 = LearningSet(fast=Range(5.5, 15))
def execute(self):
f = SMA(self.fast, on=self.trade)
s = SMA(self.slow, on=self.trade)
if f.value > s.value and self.trade.is_flat:
self.buy(self.trade)

How to fix it

Keep the set inside the Param’s own optimizer range — or widen opt_min/opt_max on the Param itself.

class InsideRange(Strategy):
trade = Symbol()
sizing = FixedCapital()
fast = Param(10, min=2, max=100, opt_min=5, opt_max=30)
slow = Param(30, min=10, max=200, opt_min=20, opt_max=80, opt_step=5)
offset = Param(0.01, min=0.0, max=1.0)
use_filter = Param(False)
learning_set_2 = LearningSet(fast=Range(5, 15))
def execute(self):
f = SMA(self.fast, on=self.trade)
s = SMA(self.slow, on=self.trade)
if f.value > s.value and self.trade.is_flat:
self.buy(self.trade)
  • Learning sets
  • Param() — opt_min, opt_max, opt_step
  • RC2_LEARNING_SET_NOT_OPTIMIZABLE — the Param has no optimizer range at all.