Для изменения размера нажмите или перетащите

Котирование по волатильности

Для котирования опционов реализована специальная стратегия VolatilityQuotingStrategy, которая предусматривает котирование объема по заданным границам волатильности.

Котирование по волатильности

  1. В дистрибутиве S# идет пример SampleOptionQuoting, который котирует выбранный страйк по заданной границе волатильности.

  2. Создание подключения к Quik и запуск экспорта:

    C#
    private void ConnectClick(object sender, RoutedEventArgs e)
    {
        if (!_isConnected)
        {
    
            .......................................
    
            if (Trader == null)
            {
                // создаем подключение
              Trader = new QuikTrader
              {
                  LuaFixServerAddress = Address.Text.To<EndPoint>(),
                  LuaLogin = Login.Text,
                  LuaPassword = Password.Password.To<SecureString>(),
                  LogLevel = LogLevels.Debug
              };
    
    
                .......................................            
    
                // Добавляем инструменты в компонент SecurityPicker
                Trader.NewSecurity += security => _securitiesWindow.SecurityPicker.Securities.Add(security);
    
                // Добавляем свои сделки в таблицу MyTradeGrid
                Trader.NewMyTrade += trade => _myTradesWindow.TradeGrid.Trades.Add(trade);
    
                // Добавляем сделки в таблицу TradeGrid
                Trader.NewTrade += trade => _tradesWindow.TradeGrid.Trades.Add(trade);
    
                // Добавляем заявки в таблицу OrderGrid
                Trader.NewOrder += order => _ordersWindow.OrderGrid.Orders.Add(order);
    
                // Добавляем стоп-заявки в таблицу OrderGrid
                Trader.NewStopOrder += order => _stopOrdersWindow.OrderGrid.Orders.Add(order);
    
                Trader.OrderRegisterFailed += _ordersWindow.OrderGrid.AddRegistrationFail;
                Trader.OrderCancelFailed += fail => this.GuiAsync(() => MessageBox.Show(this, fail.Error.Message, "Ошибка отмены ордера"));
                Trader.StopOrderRegisterFailed += _stopOrdersWindow.OrderGrid.AddRegistrationFail;
                Trader.StopOrderCancelFailed += fail => this.GuiAsync(() => MessageBox.Show(this, fail.Error.Message, "Ошибка отмены стоп ордера"));
    
    
                // Добавляем портфели в таблицу PortfolioGrid
                Trader.NewPortfolio += portfolio => _portfoliosWindow.PortfolioGrid.Portfolios.Add(portfolio);
    
                // Добавляем позиции в таблицу PortfolioGrid
                Trader.NewPosition += position => _portfoliosWindow.PortfolioGrid.Positions.Add(position);
    
                // устанавливаем поставщик маркет-данных для компонента SecurityPicker
                _securitiesWindow.SecurityPicker.MarketDataProvider = Trader;
    
                ShowSecurities.IsEnabled = ShowTrades.IsEnabled =
                    ShowMyTrades.IsEnabled = ShowOrders.IsEnabled =
                        ShowPortfolios.IsEnabled = ShowStopOrders.IsEnabled = true;
            }
    
            Trader.Connect();
    
            _isConnected = true;
            ConnectBtn.Content = LocalizedStrings.Disconnect;
        }
        else
        {
            Trader.Disconnect();
    
            _isConnected = false;
            ConnectBtn.Content = LocalizedStrings.Connect;
        }
    }
  3. Настройка стратегии VolatilityQuotingStrategy (заполнение границ волатильности, а также создание заявки, через которую указываются требуемый объем и направление котирования):

    // создаем котирование на покупку 20-ти контрактов
    var quoting = new VolatilityQuotingStrategy(Sides.Buy, 20,
            new Range<decimal>(ImpliedVolatilityMin.Value ?? 0, ImpliedVolatilityMax.Value ?? 100))
    {
        // указываем, что котирование работает с объемом в 1 контракт
        Volume = 1,
        Security = option,
        Portfolio = Portfolio.SelectedPortfolio,
        Connector = Connector,
    };
  4. Запуск котирования:

    C#
    quoting.Start();
  5. Для визуального представления волатильности пример показывает, как можно перевести стандартный стакан с котировками в стакан волатильности за счет использования метода DerivativesHelperImpliedVolatility(MarketDepth, ISecurityProvider, IMarketDataProvider, DateTimeOffset, Decimal, Decimal):

    C#
    private void OnQuotesChanged()
    {
        DepthCtrl.UpdateDepth(_depth.ImpliedVolatility(Connector, Connector, Connector.CurrentTime));
    }
    Стакан волатильности.
  6. Окончание котирования и остановка стратегии:

    quoting.Stop();
См. также

Другие ресурсы