Я разрабатываю собственный индикатор в Indie Script, который рассчитывает волатильность и доходность с поправкой на риск. После исправления исходных ошибок в формуле я столкнулся с ошибкой:
запрещено изменять предыдущие значения ряда
Цель:
Рассчитать три показателя:
Стандартное отклонение доходности.
Шарп Соотношение (доходность с поправкой на риск).
Волатильность ARCH (упрощенно).
Проблема:
Ошибка возникает при попытке заполнить исторические значения серии доходности. Вот проблемный фрагмент кода:
# Attempting to populate returns series
returns = MutSeriesF.new(0)
for i in range(1, len(self.close)):
returns = (self.close - self.close[i-1]) / self.close[i-1] # Error here
Что я понимаю:
Инди-версия ограничивает изменение прошлых значений серии.
MutSeriesF может разрешать обновление только текущего индекса (например, [0]), а не исторических значений (например, ).
Вопрос:
Как правильно вычислить серию исторических доходностей и квадратов остатков, не нарушая правило «не изменять значения прошлых серий»? Попытка Решения:
Пытался использовать MutSeriesF.new() для инициализации изменяемой серии.
Искал встроенные функции, такие как pct_change(), но в Indie их нет.
Полный код:
# indie:lang_version = 5
import math
from indie import indicator, param, plot, color, SeriesF, MutSeriesF
from indie.algorithms import StdDev, Sma
# 4. ARCH Volatility (GARCH(1,1) simplified)
squared_residuals = MutSeriesF.new(0)
for i in range(len(returns)):
squared_residuals = returns ** 2 # Using squared returns as ARCH input
Я разрабатываю собственный индикатор в Indie Script, который рассчитывает волатильность и доходность с поправкой на риск. После исправления исходных ошибок в формуле я столкнулся с ошибкой:
запрещено изменять предыдущие значения ряда
[b]Цель:[/b] Рассчитать три показателя: [list] [*][b]Стандартное отклонение[/b] доходности. [*][b]Шарп Соотношение[/b] (доходность с поправкой на риск). [*][b]Волатильность ARCH[/b] (упрощенно). [/list] [b]Проблема:[/b] Ошибка возникает при попытке заполнить исторические значения серии доходности. Вот проблемный фрагмент кода: # Attempting to populate returns series returns = MutSeriesF.new(0) for i in range(1, len(self.close)): returns[i] = (self.close[i] - self.close[i-1]) / self.close[i-1] # Error here
[b]Что я понимаю:[/b] [list] [*]Инди-версия ограничивает изменение прошлых значений серии. [*]MutSeriesF может разрешать обновление только [b]текущего индекса[/b] (например, [0]), а не исторических значений (например, [i]). [/list] [b]Вопрос:[/b] Как правильно вычислить серию исторических доходностей и квадратов остатков, не нарушая правило «не изменять значения прошлых серий»? [b]Попытка Решения:[/b] [list] [*]Пытался использовать MutSeriesF.new() для инициализации изменяемой серии. [*]Искал встроенные функции, такие как pct_change(), но в Indie их нет. [/list] [b]Полный код:[/b] # indie:lang_version = 5 import math from indie import indicator, param, plot, color, SeriesF, MutSeriesF from indie.algorithms import StdDev, Sma
# 4. ARCH Volatility (GARCH(1,1) simplified) squared_residuals = MutSeriesF.new(0) for i in range(len(returns)): squared_residuals[i] = returns[i] ** 2 # Using squared returns as ARCH input