Построение и анализ эффективности инвестиционных стратегий для финансовых рынков на основе простой регрессионной модели, страница 8

Оба подхода были реализованы в виде компьютерных торговых систем средствами пакета MetaStock и было выполнено моделирование на исторических данных для оценивания эффективности получаемых таким образом систем. Результаты экспериментов показали разумность предложенного подхода и перспективность поиска в этом направлении.

Приложение. Вычисление прогнозов и программирование

торговых систем в пакете MetaStock

В Приложении приведены программы вычисления оценок коэффициентов авторегрессии и построения прогнозов временного ряда на основе модели линейной авторегрессии 2-го порядка, реализованные с помощью Indicator Builder в виде индикаторов пакета MetaStock.

Здесь же приведены тексты торговых систем, использовавшиеся при выполнении дипломной работы, реализованные в подсистеме System Tester пакета MetaStock.

Вспомогательные индикаторы для построения прогноза.

Коэффициенты автокорреляции

Cor01

Periods:= Input("periods=",12, 120, 24);

Correl(C, Ref(C, -1), Periods, 0)

Cor02

Periods:= Input("periods=",12, 120, 24);

Correl(C, Ref(C, -2), Periods, 0)

Cor12

Periods:= Input("periods=",12, 120, 24);

Correl(Ref(C, -1), Ref(C, -2), Periods, 0)

Дисперсии (CКО)

S2

Periods:= Input("periods=",12, 120, 24);

Power(Stdev(Ref(C,-2),Periods),0.5)

S1

Periods:= Input("periods=",12, 120, 24);

Power(Stdev(Ref(C,-1),Periods),0.5)

S0

Periods:= Input("periods=",12, 120, 24);

Power(Stdev(C,Periods),0.5)

Оценки коэффициентов модели авторегрессии в виде автономных индикаторов

Индикатор прогноза на основе модели линейной авторегрессии 2-го порядка

Полный текст индикатора без ссылок на формулы и переменные

AR2-fcst

Periods:= Input("periods=",12, 120, 24);

Ref( Mov(C, Periods,S) - (Correl(C, Ref(C, -1), Periods, 0) * Power(Stdev(Ref(C,-2),Periods),0.5) – Power(Stdev(C,Periods),0.5)*(Correl(C, Ref(C, -2), Periods, 0) –

Correl(C, Ref(C, -1), Periods, 0) * Correl(Ref(C, -1), Ref(C, -2), Periods, 0)) / (

Power(Stdev(Ref(C,-2),Periods),0.5) * (1- Correl(Ref(C, -1), Ref(C, -2), Periods, 0)

* Correl(Ref(C, -1), Ref(C, -2), Periods, 0)

)) * Correl(Ref(C, -1), Ref(C, -2), Periods, 0) * Power(Stdev(Ref(C,-2),Periods),0.5)

) / Power(Stdev(Ref(C,-1),Periods),0.5)

* Mov(Ref(C,-1),Periods,S) - Power(Stdev(C,Periods),0.5)*

(Correl(C, Ref(C, -2), Periods, 0) – Correl(C, Ref(C, -1), Periods, 0) *

Correl(Ref(C, -1), Ref(C, -2), Periods, 0))/ (Power(Stdev(Ref(C,-2),Periods),0.5) *

(1- Correl(Ref(C, -1), Ref(C, -2), Periods, 0) * Correl(Ref(C, -1), Ref(C, -2), Periods, 0)

)) * Mov(Ref(C,-2),Periods,S)

+ (Correl(C, Ref(C, -1), Periods, 0) * Power(Stdev(Ref(C,-2),Periods),0.5) –

Power(Stdev(C,Periods),0.5)*

(Correl(C, Ref(C, -2), Periods, 0) – Correl(C, Ref(C, -1), Periods, 0) *

Correl(Ref(C, -1), Ref(C, -2), Periods, 0))/(

Power(Stdev(Ref(C,-2),Periods),0.5) * (1- Correl(Ref(C, -1), Ref(C, -2), Periods, 0)

* Correl(Ref(C, -1), Ref(C, -2), Periods, 0)

)) * Correl(Ref(C, -1), Ref(C, -2), Periods, 0) * Power(Stdev(Ref(C,-2),Periods),0.5)

) / Power(Stdev(Ref(C,-1),Periods),0.5)

*C + Power(Stdev(C,Periods),0.5)* (Correl(C, Ref(C, -2), Periods, 0) –

Correl(C, Ref(C, -1), Periods, 0) * Correl(Ref(C, -1), Ref(C, -2), Periods, 0)) / (

Power(Stdev(Ref(C,-2),Periods),0.5) * (1- Correl(Ref(C, -1), Ref(C, -2), Periods, 0)

*Correl(Ref(C, -1), Ref(C, -2), Periods, 0) ))  * Ref(C,-1),-1)

Индикатор прогноза

(с использованием переменных для сокращения текста)

Forecast_AR2

Periods:= Input("periods=",12, 120, 24);

Cor01:=Correl(C, Ref(C, -1), Periods, 0);

Cor02:=Correl(C, Ref(C, -2), Periods, 0);

Cor12:=Correl(Ref(C, -1), Ref(C, -2), Periods, 0);

S2:=Power(Stdev(Ref(C,-2),Periods),0.5);

S1:=Power(Stdev(Ref(C,-1),Periods),0.5);

S0:=Power(Stdev(C,Periods),0.5);

Ccoef:=S0*(Cor02- Cor01* Cor12)/(S2*(1-Cor12* Cor12));

Bcoef:=(Cor01* S0-Ccoef*Cor12*S2) / S1;