Разработка адаптивных моделей оценки и прогнозирования стоимости опционов на российском рынке
![Диссертация: Разработка адаптивных моделей оценки и прогнозирования стоимости опционов на российском рынке](https://westud.ru/work/3398292/cover.png)
Диссертация
Классические методы, основанные на методах фундаментальноготехнического анализа и математической статистики, не всегда дают достаточно точные результаты. Перспективным методом анализа^ представляется^ инструментарий нейронных сетей, реализующий адаптивные свойства и способность выявлять, сложные: зависимостимежду данными. Использование нейронных сетей позволяет создавать моделиучитывающие как… Читать ещё >
Содержание
- ГЛАВА 1. ПРОБЛЕМЫ ЦЕНООБРАЗОВАНИЯ И ПРОГНОЗИРОВАНИЯ НА ФИНАНСОВОМ РЫНКЕ
- 1. 1. Свойства опциона как финансового инструмента
- 1. 2. Российский рынок срочных контрактов
- 1. 3. Методы оценки стоимости финансовых активов
- 1. 4. Методы прогнозирования на рынке опционов
- ГЛАВА 2. МЕТОДЫ НЕЙРОННЫХ СЕТЕЙ
- 2. 1. Нейронные сети прямого распространения
- 2. 2. Нейронная сеть с радиальными базисными элементами
- 2. 3. Гибридные нейронные сети
- 2. 4. Методика разработки нейросетевых моделей для рынка опционов
- ГЛАВА 3. РАЗРАБОТКА И ПРИМЕНЕНИЕ МОДЕЛЕЙ ПРОГНОЗИРОВАНИЯ И ОЦЕНКИ СТОИМОСТИ ОПЦИОНОВ НА
- ОСНОВЕ МЕТОДОВ НЕЙРОННЫХ СЕТЕЙ
- 3. 1. Модель оценки стоимости опционов
- 3. 2. Оценка рисков опционнойпозиции
- 3. 3. Прогнозирование изменения цены опциона
- 3. 4. Прогнозирование волатильности
- Выводы и результаты исследования
Список литературы
- Антонов 1.IO. Экономическая эффективность методов несовершенного хеджирования финансовых опционов. Диссертация* на соискание ученой степени КЭН. 2004
- Афанасьев В.Н., Юзбашев Н. Н., Анализ временных рядов и прогнозирование. Финансы и статистика. Москва 2001
- Барский А.Б. Нейронные сети: распознавание, управление, принятие решений. Финансы и статистика. Москва 2004, i
- Баффет У. Эссе об инвестициях, корпоративных финансах и управлению компаниями. Альпина Паблишер, Москва 2005
- Бестенс Д, Ван ден Берг В., Вуд Д. Нейронные сети и финансовые рынки. Научное издательство ТВП, Москва51 997
- Вайс. С. Опционы. Полный курс для профессионалов. Альпина Паблишер, Москва 2007
- Вайс С. Методы принятия инвестиционных решений на финансовых рынках. Диссертация на соискание ученой степени КЭН. 2006
- Деривативы. Курс для начинающих. Пер. с англ. — Альпина Паблишер, Москва 2002
- Ежов A.A., Шумский С. А., Нейрокомпьютинг и его применения в экономике. Физматлит, Москва 1998.
- Ю.Конолли К., Покупка и продажа волатильности. «ИК Аналитика», Москва 2005
- П.Косевич К. Ю. Торговые стратегии для российского рынка опционов на основе адаптивных моделей. // «Экономика, статистика и- информатика. Вестник УМО» (Московский государственный университет экономики, статистики и информатики). #4 2010,
- Косевич. К. Ю. Белов B.C. Использование аппарата нейронных сетей для прогнозирования на рынке опционов.//"Вопросы экономики" #12 2009,
- Косевич К.Ю. Использование* нейронных сетей для оценки стоимости' опционов. // «Экономика, статистика и информатика. Вестник УМО» (Московский государственный университет экономики, статистики и информатики). #4 2008.
- Косевич К.Ю. Применение нейросетевых моделей на рынке опционов. // XII международная^ научно-практическая конференция «Актуальные вопросы экономических наук», Сборник научных трудов. Новосибирск 2010
- Косевич К.Ю. Использование нейронных сетей для операций на срочном рынке. // Сборник трудов кафедры ПЭИС (Московский государственный университет экономики, статистики и информатики) 2008,
- Круглов В.В. Нечеткая логика и искусственные нейронные сети. Физматлит, Москва 2004
- Ларин В.Г. Волатильность российского и зарубежного фондовых рынков: сравнение и анализ. Диссертация на соискание ученой степени"КЭН. 2009
- Лиховидов В.Н. Фундаментальный анализ мировых валютных рынков: методы прогнозирования и принятия решений. Владивосток 1999.
- Лукашин Ю.П. Адаптивные методы краткосрочного прогнозирования временных рядов. Москва «Финансы и статистика» 2003
- Рутковская Д, Пилиньскии М., Рутковская Л. Нейронные сети, генетические алгоритмы и нечеткие системы. Горячая, линия телеком 2006
- Рудык Н.Б. Поведенческие финансы, или между страхом и алчностью. Академия народного хозяйства при правительстве Российской Федерации: Дело, Москва 2004.
- Сорос Д. Алхимия финансов — Инфра-М, Москва 2001
- Селянин В.Е. Разработка моделей и инструментальных средств анализа кредитного риска на основе технологий нейронных сетей. Диссертация на соискание ученой степениКЭН, Москва 2009'
- Субботин А. В- Управление инвестиционным портфелем на основе индикаторов рыночной волатильности. Диссертация на соискание ученой, степени КЭН, Москва 2008
- Тихонов Э. Е., Методы прогнозирования в условиях рынка: Невинномысск, 2006.
- Техничекский анализ. Курс для начинающих. Альпина Паблишер, Москва 2001
- Томсетт М. С. Торговля опционами. Альпина Паблишер, Москва 2001
- Трофимовская А. В. Институциональные инвесторы на фондовом рынкеРоссии, Диссертация на соискание ученой степени КЭН 2009
- Уоссермен Ф., Нейрокомпьютерная техника. Теория и практика ИК-Аналитика 1997
- Хайкин С., Нейронные сети. Полный курс. Вильяме, Москва 2006 г.
- Чекулаев М.В. Загадки и тайны опционной торговли. Механика биржевого успеха. ИК-Аналитика, Москва 2006
- Чекулаев М.В. Ловушки торговли волатильностью. ИК-Аналитика, Москва 2002
- Чекулаев М.В. Риск-менеджмент управление финансовыми рисками! на основе анализа волатильности. Альпина Паблишер, Москва 2002
- Шарп У., Александер Г., Бейли Дж. Инвестиции. М. ИНФРА. Москва 2001
- Швагер Д. Биржевые маги. — Диаграмма. Москва 2004
- П1вагер Д Технический анализ. Полный курс. — Альпина Паблишер, Москва 200 143: Штовба С. Д. Введение в теорию нечетких множеств и нечеткую логику. Горяч. Линия-Телеком, Москва 2005
- Black F., Scholes М. The Pricing and Options and Corporate Liabilities. The и Journal of Political-Economy, Vol. 3, p. 637−654, 1973
- Bollerslev T. Generalized Autoregressive Conditional Heteroskedasticity, Journal of Econometrics, 31:307−327,1986.
- Chisholm A. Derivatives Demystified,' John Wiley & Sons Ltd 2004
- Cox C., Ross S. A., Rubinstein M. Option Pricing: A Simplified- Approach. //"Journal of Financial Economics" 7: 229−263. 1979
- Engle, R.F.- Ng, V.K. Measuring and testing the impact of news on volatility //"Journal of Finance" 48 (5): 1749−1778.
- Garsia R, Ramazan G., Pricing and hedging derivatives with neural networks and homogeneity hint. // «Journal of econometrics» 94 (2000)
- Jorion P, Financial Risk manager hand book. Wiley 2003.
- Hossein N., Reza R., Brian C., An Artificial Neural Network For Hedging Crude Oil // «Journal of Business & Economics Research» January, 2005 Volume 3, Number. 1
- Hull J.C. Options, Futures and Other Derivatives 5th Edition, // Pearson Education 2008
- Hutchinson J., Lo A., Poggio Т., A nonparametric approach to pricing and hedging derivatives via learning networks, // «Journal of finance» 1991.
- Lintner, J. The valuation of risk assets and the selection of risky investments in stock portfolios and capital budgets // «Review of Economics and Statistics», 47 (1), 13−37. 1965
- McNelis Paul D3 Neural Networks in Finance: Gaining Predictive Edge in the Market // Elsevier academic press 2006
- Markowitz H M. Portfolio Selection // «Journal of Finance» 7 (1): 77−91,1952
- Nelson Daniel В., Conditional Heteroskedasticity in Asset Returns: A New Approach// «Econometrica», 59, 347−370. 2001
- Ramazan G., Degree of Mispricing with the Black-Scholes Model and Nonparametric Cures // «Annals of Economics and Finance» 4, 73−101 2003
- Sharpe W. F. Capital asset prices: A theory of market equilibrium under conditions of risk// «Journal of Finance», 19 (3), 425−442 1964.
- КОД ПРОГРАММЫ РЕАЛИЗАЦИИ МОДЕЛЕЙ
- Загрузка индекса РТС данных
- RTSIData=dataset (1 file', 'C:DataIndexRTSI.txt', 'format','%s%s%n%n%n%n%n', 'deli miter',',') —
- RTSIData2=RTSIData dataset ({date','DigitDate1}, (x1,'CloseLog'}). — clear n m d z date x у RTSIDataрасчет исторической волатильности HistVolLog=zeros (1, length (RTSIData2)) — IrHistVolDif f=zeros (1, length (RTSIData3)) — for n=l:length (RTSIData2)-60-
- Загрузка внешниз данных по нефти в хранилище
- OilData=dataset ('file', 'С:DataExternalBPBrentOil2.csv', 'delimiter',',','forma t','%*s %s %*s %n %*s %*s %*s1)-s%s%n%n%n%n%n%n%n
- OilData=set (OilData, 'VarNames',{'Date', 'Close'}) —
- Преобразование даты из символа в число x=zeros (1, length (OilData)) — OilPersChange=zeros (1, length (OilData)) — for n=l:length (OilData)-d m y.= strread (char (OilData.Date (n)), '%u %u %u", 'delimiter', '.') — x (n) =datenum (y, m, d)-if n<(length (OilData))
- OilPersChange (n) = (OilData.Close (n+1)-OilData.Close (n))/OilData.Close (n)*100- end-end-
- OilData=replacedata (OilData, х1,'Date') —
- OilData= OilData, dataset ({OilPersChange','OilPersChange'}).-
- Загрузка внешниз данных no Composite 500 в хранилище
- CompData=dataset ('file', 1С: DataExternalComposite. csv', 'format','%s%*s%*s%*s%n %*s%*s ', 'delimiter' ,',') —
- CompData=set (CompData, 1VarNames',{'Date','Close'}) —
- CompPersChange (n)=(CompData.Close (n+1)-CompData.Close (n))/CompData.Close (n)*100- end-end-
- CompData=replacedata (CompData, x','Date') —
- CompData= CompData, dataset ({CompPersChange','CompPersChange'}).-
- Объединенив внешних данных
- ExtData=join (CompData, OilData,'Key','Date','RightVars',{'Date','OilPersChange'}, 'LeftVars',{'CompPersChange'})-clear d m n x у OilData CompData CompPersChange DigitDate OilPersChange-
- Соединение данных по фьючерсам и внешних данных % заполнение пробелов пустыми данными ExtData2=sortrows (ExtData, { 'Date ' })
- М=length (ExtData2) — k=l- for i=l:M-l-if ExtData2. Date (i+1)>ExtData2.Date (i)+1-for j=l:(ExtData2.Date (i+1)-ExtData2.Date (i)-1) — %заполяем дефолтовыми значениями ExtData2. Date (M+k)=ExtData2.Date (i)+j- k=k+l- end- % k=l- end-end- clc
- SigmaFl (i)=std (FortsData.CloseLog (i-60+1:i+1)) — SigmaPl (i)=std (FortsData.CloseLog (i-60−1:i-1)) — SigmaP2(i)=std (FortsData.CloseLog (i-60−2:i-2)) —
- Coeffl. = garchfit (specl, FortsData. CloseLog (i-60:i)) — sigmaForecastl (i) ] =garchpred (Coeffl, FortsData. CloseLog (i-60:i), 1) —
- Coeff2. = garchfit (spec2,FortsData.CloseLog (i-60:i))-sigmaForecast2(i). =garchpred (Coeff2,FortsData.CloseLog (i-60:i), l) —
- Coeff3. = garchf it (spec3, FortsData. CloseLog (i-60: i)), sigmaForecast3(i). =garchpred (Coeff3,FortsData.CloseLog (i-60:i), 1)-end — clc
- X= X, dataset ({sigmaForecastl (60+3:end)'sigmaEForecast1}).-save XI clcclear SigmaFl SigmaPl SigmaP2 sigmaForecastl Coeffl Coeff2 specl spec2 i meanForecastl
- Создание массивов обучающей и тестовой выборокdata=X.SigmaP2,.
- Задание параметров обучения
- NumEpoch=50-Максимальное количество эпох
- TrErGoal=.0002- %обшибка обучение, при которой обучение заканчивается
- StepSize=0.005- %Начальный шаг обучения
- FuzTestOutH=evalfis (dataTest, fismatlO)-plot (X.SigmaFl (dataTestlnd) FuzTestOut .)1. Обычная нейронная сетьnet = newff (dataLearn1, dataLearnResult1,4) —
- Опионально. Инициализация весов, init (net) -1. Обучениеnet=train (net, dataLearn1, dataLearnResult') -1. РБФ
- RBnet = newrb (dataLearn1, dataLearnResult1,0.0,1,100,25) —
- FuzTestOutRB. = sim (RBnet, dataTest1) — FuzLearnOut]= sim (RBnet, dataLearn')-error4=FuzTestOutRB1-dataTestResult-
- X.SigmaPl (dataTestlnd)) ==sign (FuzTestOutH))/length (FuzTestOutH)*100 signError2=.sum (sign (X.SigmaFl (dataTestlnd)-X.SigmaPl (dataTestlnd))==sign (-X.SigmaPl (dataTestlnd) +FuzTestOutB1))/length (FuzTestOutH)*100
- Вычисление ожижаемой волатильностиload FortsOpt4вычисление для опционов call1. pVolCall=blkimpv (FortsDataCall.FutAvgPrice (:),. FortsDataCall. Strike (-),. 0.10,.
- FortsDataCall.OptDigitMaturity (:)-FortsDataCall.OptDigitDate (:))/365,. FortsDataCall. OptAvgPrice (:), 1,0.1,true)-1.pVolCallDs=dataset ({impVolCall (:), 1BSImpVolCall'}) —
- FortsDataCallV=FortsDataCall, ImpVolCallDs.,-clear ImpVolCall ImpVolCallDs FortsDataCallвычисление для опционов put1. pVolPut=blkimpv (FortsDataPut.FutAvgPrice (:),. FortsDataPut. Strike (:),. 0.10,.. .
- FortsDataPut.OptDigitMaturity (:)-FortsDataPut.OptDigitDate (:))/365,. FortsDataPut. OptAvgPrice (:), 1,0.1,false)-1.pVolPutDs=dataset ({ImpVolPut (:),'BSImpVolPut' }) —
- FortsDataPutV=FortsDataPut, ImpVolPutDs.-clear ImpVolPut ImpVolPutDs FortsDataPut
- FortsDataCall FortsDataPut FortsDataOptCall FortsDataOptPut %save Forts0pt5%load FortsOpt5%clear
- Обработка данных по волатильности для опциона Колл FortsDataCallv=sortrows (FortsDataCallV,{'Optlsin','OptDigitDate1}) —
- Индекс содержащий все опицоны в дельтой %RtsOptIndex (i)=1- if abs (FortsDataCallV.OptDeltal (i))>сар —
- Разчет изменения волатильности оцпиона ImVolDeltal (i)=FortsDataCallV.BSImpVolCall (i+1) — ImPersVolDelta (i) = (FortsDataCallV.BSImpVolCall (i+i)-FortsDataCallV.BSImpVolCall (i))/FortsDataCallV.BSImpVolCall (i) —
- Datel (i)=FortsDataCallV.OptDigitDate (i-1) —
- Hint (i)=FortsDataCallV.Strike{i)/FortsDataCallV.FutAvgPrice (i) —.. .FutDelta (i) = (FortsDataCallV.ClosePrice (i)-FortsDataCallV.ClosePrice (i-1))/FortsDataCallV.ClosePrice (i-1) —
- TrDelta (i)=(FortsDataCallV.OptTradeNumber (i)-FortsDataCallV.OptTradeNumber (i~l))/FortsDataCallV.OptTradeNumber (i-1) — else1. VolDeltal (i)=NaN- end-end- clear i у y2 m ш2 d d2 — FortsDataCallV=
- FortsDataCallV (1:end:), dataset ({lmVolDeltal (1:end) ', 'VolDelta'},{ImPersVolDel ta (1:end) ','PersVolDelta1},{Hint1,'Hint*}). -1. FortsDataCallV=
- FortsDataCallV, dataset ({LogSrike','LogSrike1},{RelStrike¦, 1RelStrike' }). — clear ImVolDeltal ImPersVolDelta LogSrike RelStrike TrDelta Hint cap save Forts0pt6%load Forts0pt6%clear
- Обработка данных по волатильности для опциона Колл FortsDataPutV=sortrows (FortsDataPutV,{'Optlsin1,1OptDigitDate'}) —
- Индекс содержащий все опицоны в дельтой %RtsOptIndex (i) =1- if abs (FortsDataPutV.OptDeltal (i))>сар —
- Разчет изменения волатильности оцпиона ImVolDeltal (i)=FortsDataPutV.BSImpVolPut (i+1) — ImPersVolDelta (i)=(FortsDataPutV.BSImpVolPut (i+1)-FortsDataPutV.BSImpVolPut (i))/FortsDataPutV.BSImpVolPut (i) —.. .Datel (i) =FortsDataPutV.OptDigitDate (i-1)
- Hint (i)=FortsDataPutV.Strike (i) /FortsDataPutV.FutAvgPrice (i) —. .FutDelta (i) = (FortsDataPutV.ClosePrice (i)-FortsDataPutV.ClosePrice (i-1))/FortsDataPutV.ClosePrice (i-1) —
- TrDelta (i)=(FortsDataPutV.OptTradeNumber (i)-FortsDataPutV.OptTradeNumber (i-1))/FortsDataPutV.OptTradeNumber (i-1) — else1. VolDeltal (i)=NaN- end-end- clear i у y2 m m2 d d2−1. FortsDataPutV=
- FortsDataPutV (1 :end, :), dataset ({ImVolDeltal (l:end) ', ' VolDelta' }, {imPersVolDelt a (1:end) ', 'PersVolDelta'},{Hint', 'Hint'}).-1. FortsDataPutV=
- FortsDataPutV, dataset ({LogSrike1, 'LogSrike'},{RelStrike', 'RelStrike¦}). -clear ImVolDeltal ImPersVolDelta LogSrike RelStrike TrDelta Hint cap FutDelta Datelsave Forts0pt6%load FortsOpte %clear1. Префильтер
- RtsOptPutIndex= zeros (1, length (FortsDataCallV)) — for i=l:length (FortsDataCallV)if.. .isfinite (FortsDataCallV.BSImpVolCall (i))&&.
- FortsDataCallV.OptDigitMaturity (i)-FortsDataCallV.OptDigitDate (i)) >10&&.. .
- FortsDataCallV.OptDigitMaturity (i)-FortsDataCallV.OptDigitDate (i)) <90&&.. .
- FortsDataCallV.OptTradeNumber (i)>10&&.
- FortsDataCallV.OptAvgPrice (i)>50&&. FortsDataCallV. OptAvgPrice (i)<10000 RtsOptPutlndex (i)=1- end-end-
- Cind.=find (RtsOptPutIndex==l) — clear RtsOptPutlndex i-1. X=FortsDataCallV (Cind:)-save FortsOpt71. Генерация массива1. X=FortsDataCallV-
- Y, PS.=mapminmax (X. OptAvgPrice') -data=X.HistVol,. X. Strike, 1. X. FutDeltaAvg,.
- Задание параметров обучения
- NumEpoch=50- TrErGoal=.15- InStepSize=0.005 StepDecrRate=0.9 StepIncrRate=l.1
- Максимальное количество эпохобшибка обучение, при которой обучение заканчивается
- Анализ результатов обучени
- FuzTestOut=evalfis (dataTest, fismatlO) — FuzResult=dataTestResult-
- FuzLearnOut=evalfis (dataLearn, fismatl)-errorl=evalfis (dataTest, fismatl)-dataTestResult- error2=evalfis (dataLearn, fismatl)-dataLearnResult-plot (evalfis (dataTest, fismatlO) dataTestResult.)plot (FuzResult, FuzTestOut) %std (errorl) %mean (errorl)
- Опионально. Инициализация весов. 4init (net) -1. Обучениеnet=train (net, dataLearn', dataLearnResult1) — %FuzTestOut=sim (net, dataTest) — Использование
- FuzTestOut. = sim (net, dataTest1) — FuzLearnOut]= sim (net, dataLearn') — %std (errorl) %mean (error1)errorl=FuzTestOut'-dataTestResult- error2=FuzLearnOut1-dataLearnResult-
- RBnet = newrb (dataLearn', dataLearnResult', 0.01,1,300,25) —
- FuzTestOut. = sim (RBnet, dataTest1) — FuzLearnOut]= sim (RBnet, dataLearn') -errorl=FuzTestOut1-dataTestResult- error2=FuzLearnOut'-dataLearnResult-
- Errortest= sqrt (sum (diag (errorl*errorl1))/length (errorl)) Errorlearn= sqrt (sum (diag (error2*error2 ')) / length (error2))