Автор |
Сообщение |
Aleksandr
Зарегистрирован: 13.11.2011
Сообщения: 99
|
Алуксандр писал(а): |
Mechanic писал(а): |
f = f * f;
С вас 5 баксов за идею. )) |
Ну я просто спросил . Задал такой вопрос . |
Во второй строке Error 29
e = Ref(Avg, -1);
f = (e - Cl)^2;
g = MA(f, 12);
Plot(g, "G", colorGreen); |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
А что такое Cl? Если цена закрытия, то либо Close, либо просто C. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Aleksandr
Зарегистрирован: 13.11.2011
Сообщения: 99
|
Mechanic писал(а): |
А что такое Cl? Если цена закрытия, то либо Close, либо просто C. |
C Close формула стала рассчитываться . Спасибо |
|
|
Посмотреть профиль Отправить личное сообщение |
|
MrDrJOKER
Зарегистрирован: 22.06.2009
Сообщения: 489
|
привет.
подскажите, как правильно посчитать Historical Volatility за 10 дней?
Код: |
HV = ( Foreign( "spy", "High", 1 ) - Foreign( "spy", "Low", 1 ) ) * sqrt(250) ;
HV_MA = MA ( HV , 10 );
|
нарыл ещё такой вариант:
Код: |
HV_stdev = StDev( Close, 10 ) * sqrt(250) ;
|
как же корректно посчитать? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
А что такое sqrt(250)? Почему именно 250?
Я лично использую просто vol = factor*EMA(ATR(1), 10), где factor какой-то множитель, который выбирается в зависимости от целей подсчета волатильности. Можно принять за 1. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Да вариантов расчета исторической волатильности как говна...
Код: |
per = 10;
TimeFrameSet(inDaily);
DC = C;
Rt = ln(DC/Ref(DC, -1));
Rm = MA(Rt, per);
HV = sqrt(Sum((Rt - Rm)^2, per)/per);
TimeFrameRestore();
StDev
HV = TimeFrameExpand(HV, inDaily);
|
Код: |
HV = round(StDev(log(C/Ref(C,-1)),per)*100*sqrt(256));
|
.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
MrDrJOKER
Зарегистрирован: 22.06.2009
Сообщения: 489
|
spitfire писал(а): |
А что такое sqrt(250)? Почему именно 250?
Я лично использую просто vol = factor*EMA(ATR(1), 10), где factor какой-то множитель, который выбирается в зависимости от целей подсчета волатильности. Можно принять за 1. |
250 - кол-во торговых сессий в году, т.к. HV считается в годовом исчислении.
000 писал(а): |
Да вариантов расчета исторической волатильности как говна... .... |
в том, то и дело. и все выдают разные значения, хотя правильный(классический) вариант по идее один.
по ходу эта и есть классическая:
Код: |
HV = StDev( log( C / Ref( C, -1)), 10 ) * 100 * sqrt(252) ;
|
ещё потестю сейчас.
Олег, первая формула, видимо, неполная |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
MrDrJOKER писал(а): |
в том, то и дело. и все выдают разные значения, хотя правильный(классический) вариант по идее один.
|
А что такое правильный вариант? В математике волатильность - это СКО. Ещё есть среднегодовая (среднемесячная и т.д.) волатильность - СКО, делённое на корень квадратный из длины выборки (поскольку СКО случайной величины растёт пропорционально корню из времени). Ещё можно считать волатильность просто как средний размах баров за период. Ещё можно вычислять АТР (это почти то же самое, но с учётом гэпов). И т.д. И какой вариант правильный (классический)?
Если первый вариант (СКО), то вот так:
Код: |
n = Param("Period", 100, 10, 1000);
volat = StDev(Close, n);
|
Если второй (средневыборочная), то вот так:
Код: |
n = Param("Period", 100, 10, 1000);
volat = StDev(Close, n) / sqrt(n) ;
|
|
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
MrDrJOKER
Зарегистрирован: 22.06.2009
Сообщения: 489
|
Mechanic, меня интересует та HV, что используется в опционной торговле. какая там из всех этих формул? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
Я никогда не торговал опционами, так что не знаю, что там используется. Вопрос-то этот к вам, а не к нам, что именно вам нужно посчитать. Скажете, что посчитать - забросаем вас кодами, за этим дело не станет. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Nero Wolfe
Зарегистрирован: 17.03.2010
Сообщения: 174
|
Цитата: |
меня интересует та HV, что используется в опционной торговле |
Вот тут участник форума делал анализ разных методов оценки волы
http://option-lab.ru/forum/index.php?topic=3455.0
По его выводам получается что наилучшую корреляцию с IV показали методы расчета H-L и Wilder... |
_________________ Если вас грызет совесть, выбейте ей зубы, и пусть она вас нежно обсасывает. |
|
Посмотреть профиль Отправить личное сообщение |
|
MrDrJOKER
Зарегистрирован: 22.06.2009
Сообщения: 489
|
Mechanic писал(а): |
Я никогда не торговал опционами, так что не знаю, что там используется. Вопрос-то этот к вам, а не к нам, что именно вам нужно посчитать. Скажете, что посчитать - забросаем вас кодами, за этим дело не станет. |
да если б я сам знал, что там за формула)
глянул код HV в платформе TOS, выглядит он так:
Код: |
# @reference
#
# TD Ameritrade IP Company, Inc. (c) 2007-2013
#
declare lower;
input length = 20;
input basis = {default Annual, Monthly, Weekly, Daily};
def ap = getAggregationPeriod();
assert(ap >= AggregationPeriod.MIN, "Study can only be calculated for time-aggregated charts: " + ap);
def barsPerDay = (regularTradingEnd(getYyyyMmDd()) - regularTradingStart(getYyyyMmDd())) / ap;
def barsPerYear =
if ap > AggregationPeriod.WEEK then 12
else if ap == AggregationPeriod.WEEK then 52
else if ap >= AggregationPeriod.DAY then 252 * AggregationPeriod.DAY / ap
else 252 * barsPerDay;
def basisCoeff;
switch (basis) {
case Annual:
basisCoeff = 1;
case Monthly:
basisCoeff = 12;
case Weekly:
basisCoeff = 52;
case Daily:
basisCoeff = 252;
}
def clLog = log(close / close[1]);
plot HV = stdev(clLog, length) * Sqrt(barsPerYear / basisCoeff * length / (length - 1));
HV.SetDefaultColor(GetColor(0));
|
значения у неё тоже совсем не те, что мне нужны.
в англоинете встречал эту формулу в AFL в основном:
Код: |
HV = StDev( log( C / Ref( C, -1)), 10 ) * 100 * sqrt(252) ;
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
Aleksandr
Зарегистрирован: 13.11.2011
Сообщения: 99
|
Aleksandr писал(а): |
Спасибо |
Код.
Filter = 1;
Par1 = Param("Ref", 2, 1, 100, 1);
A1 = Ref(Close,-par1);
AddColumn( Close, "Close price", 1.4);
AddColumn( A1, "A1", 1.4);
"Close price" вписывает правильно , а вот A1 неправильно .
A1 это же Close две свечи назад . |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Хе. Так и пиши
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|