min_factor: float = 0.5,
         max_factor: float = 1.5,
     ) -> float:
-        natr_values = get_natr_values(natr_period)
-
         start = max(0, pos - lookback_period)
         end = min(pos + 1, n)
         if start >= end:
             return (min_factor + max_factor) / 2
 
+        natr_values = get_natr_values(natr_period)
         natr_pos = natr_values[pos]
         lookback_natr = natr_values[start:end]
         median_natr = np.median(lookback_natr)
         min_value: float = 0.3,
         max_value: float = 0.7,
     ) -> float:
-        natr_values = get_natr_values(natr_period)
-
         start = max(0, pos - lookback_period)
         end = min(pos + 1, n)
         if start >= end:
             return min_value
+
+        natr_values = get_natr_values(natr_period)
         natr_pos = natr_values[pos]
         lookback_natr = natr_values[start:end]
         natr_min = np.min(lookback_natr)
 
         min_factor: float = 0.5,
         max_factor: float = 1.5,
     ) -> float:
-        natr_values = get_natr_values(natr_period)
-
         start = max(0, pos - lookback_period)
         end = min(pos + 1, n)
         if start >= end:
             return (min_factor + max_factor) / 2
 
+        natr_values = get_natr_values(natr_period)
         natr_pos = natr_values[pos]
         lookback_natr = natr_values[start:end]
         median_natr = np.median(lookback_natr)
         min_value: float = 0.3,
         max_value: float = 0.7,
     ) -> float:
-        natr_values = get_natr_values(natr_period)
-
         start = max(0, pos - lookback_period)
         end = min(pos + 1, n)
         if start >= end:
             return min_value
+
+        natr_values = get_natr_values(natr_period)
         natr_pos = natr_values[pos]
         lookback_natr = natr_values[start:end]
         natr_min = np.min(lookback_natr)