Ошибка расчета IV

Ошибка расчета IV
Atom
9/12/2011
Артем_2


Добрый день! Помогите, пожалуйста, разобраться со следующей проблемой:

Версия S# 3.2.9

При вызове данного выражения


decimal _volatily = _targetOption.IV(TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto));

периодически выскакивает ошибка "Данная функция не поддерживает операции с плавающей точкой"[crying]

значения выражения TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto) при этом адекватные

Не уверен, но возможно ошибка появляется через какое-то время после запуска VolatilityQuotingStrategy (эта стртегия у меня запускается в рамках другой стратегии)

Заранее спасибо!


Tags:


Thanks:


Артем_2

Avatar
Date: 9/12/2011
Reply


Такая же ошибка появляется в стакане по волатильности.


private void OnQuotesChanged()
        {
            var ivDepth = this._depth.IV(); // ВОТ ТУТ ОШИБКА "Aritmetic Exception" Функция не поддерживает значения с плавающей точкой."

            this.GuiAsync(() =>
            {
                this.Quotes.Clear();
                this.Quotes.AddRange(ivDepth.Select(q => new IVQuote(q)));
            });
        }

Thanks:

Mikhail Sukhov

Avatar
Date: 9/12/2011
Reply


Артем_2: периодически выскакивает ошибка "Данная функция не поддерживает операции с плавающей точкой"[crying]

Приведите полный текст ошибки и входные параметры.

Thanks:

Alexander

Avatar
Date: 9/12/2011
Reply


Перенёс тему. Это всё же не о Квике, а о стратегиях и алгоритмах. Будьте внимательнее в следующий раз.

Thanks:

Артем_2

Avatar
Date: 9/13/2011
Reply


Mikhail Sukhov:

Артем_2: периодически выскакивает ошибка "Данная функция не поддерживает операции с плавающей точкой"[crying]

Приведите полный текст ошибки и входные параметры.

Параметры: TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto) = 2530 _targetOption = RI155000BU1@RTS

Полный текст ошибки:

System.ArithmeticException was unhandled Message=Функция не поддерживает значения с плавающей точкой. Source=mscorlib StackTrace: в System.Math.Sign(Double value) в alglib.normaldistr.erf(Double x) в alglib.normaldistr.normaldistribution(Double x) в StockSharp.Algo.TraderHelper.Premium(Security option, Decimal deviation, Decimal riskFree, Decimal dividend) в StockSharp.Algo.TraderHelper.IV(Security option, Decimal premium, Decimal riskFree, Decimal dividend) в NAZAR_ROBOT.Strategies.OptionsStrategy.GetCurrent() в C:\Documents and Settings\Admin\Рабочий стол\PROJECT_NazarRobot\NAZAR_ROBOT\WpfApplication_NazarRobot\Strategies\OptoinsStrategy.cs:строка 76 в NAZAR_ROBOT.Strategies.OptionsStrategy.DoProcess(Object sender, EventArgs e) в C:\Documents and Settings\Admin\Рабочий стол\PROJECT_NazarRobot\NAZAR_ROBOT\WpfApplication_NazarRobot\Strategies\OptoinsStrategy.cs:строка 32 в System.Windows.Threading.DispatcherTimer.FireTick(Object unused) в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) в System.Windows.Threading.DispatcherOperation.InvokeImpl() в System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state) в System.Threading.ExecutionContext.runTryCode(Object userData) в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) в System.Windows.Threading.DispatcherOperation.Invoke() в System.Windows.Threading.Dispatcher.ProcessQueue() в System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) в System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) в MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) в MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) в System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) в System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) в System.Windows.Threading.Dispatcher.Run() в System.Windows.Application.RunDispatcher(Object ignore) в System.Windows.Application.RunInternal(Window window) в System.Windows.Application.Run(Window window) в System.Windows.Application.Run() в NAZAR_ROBOT.App.Main() в C:\Documents and Settings\Admin\Рабочий стол\PROJECT_NazarRobot\NAZAR_ROBOT\WpfApplication_NazarRobot\obj\x86\Debug\App.g.cs:строка 0 в System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() в System.Threading.ThreadHelper.ThreadStart_Context(Object state) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) в System.Threading.ThreadHelper.ThreadStart() InnerException:

Thanks:

Alexander

Avatar
Date: 9/13/2011
Reply


Про параметры не понял. Чем _depth равен?

Thanks:

Артем_2

Avatar
Date: 9/13/2011
Reply



decimal _volatily = _targetOption.IV(TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto));

В этой формуле нет Depth. Используется опцион. Какой параметр опциона нужен?

Thanks:

Mikhail Sukhov

Avatar
Date: 9/13/2011
Reply


Артем_2:

Mikhail Sukhov:

Артем_2: периодически выскакивает ошибка "Данная функция не поддерживает операции с плавающей точкой"[crying]

Приведите полный текст ошибки и входные параметры.

Параметры: TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto) = 2530 _targetOption = RI155000BU1@RTS

Посмотрите, чему равны в этот момент значения:

_targetOption.Strike _targetOption.ExpiryDate _targetOption.LastTrade.Price _targetOption.Trader.MarketTime _targetOption.GetUnderlyingFuture().LastTrade.Price

Thanks:

Артем_2

Avatar
Date: 9/14/2011
Reply


Mikhail Sukhov:

Артем_2:

Mikhail Sukhov:

Артем_2: периодически выскакивает ошибка "Данная функция не поддерживает операции с плавающей точкой"[crying]

Приведите полный текст ошибки и входные параметры.

Параметры: TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto) = 2530 _targetOption = RI155000BU1@RTS

Посмотрите, чему равны в этот момент значения:

_targetOption.Strike _targetOption.ExpiryDate _targetOption.LastTrade.Price _targetOption.Trader.MarketTime _targetOption.GetUnderlyingFuture().LastTrade.Price

Добрый день! Вот необходимые значения:

TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto) = 8320 _targetOption.ID = RI155000BU1@RTS _targetOption.Strike = 155000 _targetOption.ExpiryDate = 17.10.2011 _targetOption.LastTrade.Price = 8100 _targetOption.Trader.MarketTime = 14.09.2011 13:31:10 _targetOption.GetUnderlyingFuture().LastTrade.Price = 154990

Thanks:

Mikhail Sukhov

Avatar
Date: 9/15/2011
Reply


Артем_2: Добрый день! Вот необходимые значения:

TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto) = 8320 _targetOption.ID = RI155000BU1@RTS _targetOption.Strike = 155000 _targetOption.ExpiryDate = 17.10.2011 _targetOption.LastTrade.Price = 8100 _targetOption.Trader.MarketTime = 14.09.2011 13:31:10 _targetOption.GetUnderlyingFuture().LastTrade.Price = 154990

Покопал расчеты, понял что ошибка появляется только тогда, когда страйк равен цене сделки. Так что данные не совсем верные. Будем фиксить в 3.2.11

Thanks: Артем_2

Артем_2

Avatar
Date: 9/16/2011
Reply


Спасибо большое!

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy