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

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


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

Версия S# 3.2.9

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

Code

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


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

Code

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


Code

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