Ошибка расчета IV
Atom
12.09.2011
Артем_2


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

Версия S# 3.2.9

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

[code=csharp] decimal _volatily = _targetOption.IV(TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto)); [/code]

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

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

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

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


Теги:


Спасибо:


Артем_2

Фотография
Дата: 12.09.2011
Ответить


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

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

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

[/code]

Спасибо:

Mikhail Sukhov

Фотография
Дата: 12.09.2011
Ответить


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

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

Спасибо:

Alexander

Фотография
Дата: 12.09.2011
Ответить


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

Спасибо:

Артем_2

Фотография
Дата: 13.09.2011
Ответить


[quote=Mikhail Sukhov;10979][quote=Артем_2;10977] периодически выскакивает ошибка "Данная функция не поддерживает операции с плавающей точкой"[crying] [/quote]

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

Параметры: 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:

Спасибо:

Alexander

Фотография
Дата: 13.09.2011
Ответить


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

Спасибо:

Артем_2

Фотография
Дата: 13.09.2011
Ответить


[code=csharp] decimal _volatily = _targetOption.IV(TraderHelper.ShrinkPrice(_targetOption, _targetPrice, ShrinkRules.Auto)); [/code]

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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 13.09.2011
Ответить


[quote=Артем_2;11000][quote=Mikhail Sukhov;10979][quote=Артем_2;10977] периодически выскакивает ошибка "Данная функция не поддерживает операции с плавающей точкой"[crying] [/quote]

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

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

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

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

Спасибо:

Артем_2

Фотография
Дата: 14.09.2011
Ответить


[quote=Mikhail Sukhov;11006][quote=Артем_2;11000][quote=Mikhail Sukhov;10979][quote=Артем_2;10977] периодически выскакивает ошибка "Данная функция не поддерживает операции с плавающей точкой"[crying] [/quote]

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

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

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

_targetOption.Strike _targetOption.ExpiryDate _targetOption.LastTrade.Price _targetOption.Trader.MarketTime _targetOption.GetUnderlyingFuture().LastTrade.Price[/quote]

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

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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 15.09.2011
Ответить


[quote=Артем_2;11045]Добрый день! Вот необходимые значения:

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[/quote]

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

Спасибо: Артем_2

Артем_2

Фотография
Дата: 16.09.2011
Ответить


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

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy