Московская биржа начинает торги бессрочным фьючерсом на валюту - страница 4

 
prostotrader #:

В фандинге и есть подвох, ребята из МОЕХ будут "доить" и продавца и покупателя, аж до 0,35% * 365 = 127,75% годовых!!! 

Ну так будут доить или продавца или покупателя (в зависимости от стороны отклонения). Он же может быть и положительным. Или вообще = 0 (к этому и стремятся на бирже я думаю, K1 будут править так - чтобы народ оттуда не убежал).

В данный момент опытным путем на реале проверяю верность теоретических расчетов фандинга. Результаты и код опубликую, если руки дойдут причесать.

Просто это ещё одна переменная, которую следует учитывать при торговле


 
Andrey Miguzov #:

Ну так будут доить или продавца или покупателя (в зависимости от стороны отклонения). Он же может быть и положительным. Или вообще = 0 (к этому и стремятся на бирже я думаю, K1 будут править так - чтобы народ оттуда не убежал).

В данный момент опытным путем на реале проверяю верность теоретических расчетов фандинга. Результаты и код опубликую, если руки дойдут причесать.

Просто это ещё одна переменная, которую следует учитывать при торговле


Нет, как раз "доить" будут обоих, я то же сначала думал, что одного, но оказывается обоих :(

 
prostotrader #:

Нет, как раз "доить" будут обоих, я то же сначала думал, что одного, но оказывается обоих :(

Может Вы и правы - я сам не понимаю до конца.

Не буду утверждать прям на 100%, пока по своему счету плюсовой фандинг не увижу :)

Но на сайте биржи в карточке инструмента его (теперь) можно посмотреть - просто 2 скрина за разные даты по баксу

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

Московская Биржа - Основные параметры срочного контракта
Московская Биржа - Основные параметры срочного контракта
  • www.moex.com
Влияем на развитие, создаем будущее. Миссия Группы — способствовать экономическому росту и реструктуризации российской экономики путем расширения возможностей по привлечению капитала для компаний и создания удобной, надежной и прозрачной инвестиционной среды для российских и иностранных инвесторов.
 
Andrey Miguzov #:

Может Вы и правы - я сам не понимаю до конца.

Не буду утверждать прям на 100%, пока по своему счету плюсовой фандинг не увижу :)

Но на сайте биржи в карточке инструмента его (теперь) можно посмотреть - просто 2 скрина за разные даты по баксу

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

Я смотрю на формулу и в любом случае в вечерний клиринг происходит следующее:

Вармаржа = Переоценка позиции - Фандинг

Т.е заработал, вперся, но Файдинг все-равно минус!

Т.е его биржа всегда берет и с покупателя и с продавца, так что здесь только финансовые потери!

 
prostotrader #:

Я смотрю на формулу и в любом случае в вечерний клиринг происходит следующее:

Вармаржа = Переоценка позиции - Фандинг

Т.е заработал, вперся, но Файдинг все-равно минус!

Т.е его биржа всегда берет и с покупателя и с продавца, так что здесь только финансовые потери!

В общем итог проверки опытным путем такой:

1. Фандинг может быть как положительным так и отрицательным. Он может как списываться, так и начисляться по итогам вечернего клиринга. Зависит от того, в какую сторону у вас открыта позиция и от того, как сильно отклонялся инструмент (ВФ) в торговую сессию от базового актива (БА). Грубо - он списывается с одной стороны сделки и отдается другой. Биржа себе с фандинга ничего не берет.

2. Расчетная цена ВФ в клиринг не зависит от цены ВФ, а зависит от цены базового актива. По этой цене будет экспирация и по этой же цене рассчитывается вариационная маржа. Ещё раз - ЦЕНА ВФ (по которой он торгуется) не связана с его расчетной ценой :) Списания вар. маржи при сильных отклонениях смотрятся весело :)))

3. Для того,чтобы точно рассчитать значение фандинга самому (заранее) надо быть джедаем сотрудником MOEX. Проблема в том, что когда берутся пятисекундные срезы из ленты сделок и стакана - они потом проверяются на максимальное отклонение друг от друга (спред с учетом ставки обеспечения) и далее "сглаживаются" каким-то неведанным мне алгоритмом.

Значение фандинга (точно) можно посмотреть только в карточке фьючерса на странице биржи. Он там по датам есть - видно как раз, когда он положительный, когда отрицательный, а когда 0.


Код расчета фандинга выкладывать не буду - он не дает точный результат - при "большом" спреде по БА результат может сильно отличаться от расчетного. А т.к. методика вышла 5 декабря - данных для анализа мало. Глядя на теоретический фандинг можно конкретно влететь по факту.


Если есть желание узнать, насколько там всё понятно - посмотрите видео с 10 минуты и до ~15


 
Andrey Miguzov #:3. Для того,чтобы точно рассчитать значение фандинга самому (заранее) надо быть джедаем сотрудником MOEX. Проблема в том, что когда берутся пятисекундные срезы из ленты сделок и стакана - они потом проверяются на максимальное отклонение друг от друга (спред с учетом ставки обеспечения) и далее "сглаживаются" каким-то неведанным мне алгоритмом.

Значение фандинга (точно) можно посмотреть только в карточке фьючерса на странице биржи. Он там по датам есть - видно как раз, когда он положительный, когда отрицательный, а когда 0.



Думаю, что Фандинг все же можно рассчитать заранее


 

Если кто-то использует мой Automagic.mqh, то подправил код для вечных фьючерсов

//+------------------------------------------------------------------+
//|                                                    AutoMagic.mqh |
//|                                 Copyright 2017-2023 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
//version   "1.003
ulong symb_magic;
int exp_id;
//-------------------------------------------------------------------+
// Split string function                                             |
//+------------------------------------------------------------------+
string SplitString(const string a_str,ulong &a_month,ulong &a_year)
{
  int str_size=StringLen(a_str);
  if(str_size > 0)
  {
    int str_tire=StringFind(a_str, "-");
    int str_tochka=StringFind(a_str, ".", str_tire);
    if((str_tire > 0) && (str_tochka > 0))
    {
      a_month= ulong(StringToInteger(StringSubstr(a_str,str_tire+1,str_tochka-str_tire-1)));
      a_year = ulong(StringToInteger(StringSubstr(a_str,str_tochka+1,str_size-str_tochka-1)));
      if((a_month > 0) && (a_year > 0)) return(StringSubstr(a_str, 0, str_tire));
    }
    else
    { // Day future
      uchar char_array[];
      int result=StringToCharArray(a_str, char_array, 0, WHOLE_ARRAY, CP_ACP);
      if(result > 0)
      {
        a_month= ulong(char_array[4]);
        a_year = ulong(char_array[5]);
        if((a_month > 0) && (a_year > 0)) return(StringSubstr(a_str, 0, 4));
      }  
    }
  }
  return("");
}
//-------------------------------------------------------------------+
// Get Magic function                                                |
//+------------------------------------------------------------------+
ulong GetMagic(const string a_symbol, const int sov_id)
{
  exp_id = sov_id;
  symb_magic = 0;
  if(SymbolSelect(a_symbol, true) == false)
  {
    Print(__FUNCTION__, ": Нет такого символа!");
    return(symb_magic);
  }
  ulong month = 0;
  ulong year = 0;
  string new_str = SplitString(a_symbol,month,year);
  if(StringLen(new_str)>0)
  {
    uchar char_array[];
    int result=StringToCharArray(new_str, char_array, 0, WHOLE_ARRAY, CP_ACP);
    if(result > 0)
   {
     ulong value;
     for(int i = 0; i < result - 1; i++)
     {
       value=ulong(char_array[i]);
       value<<=(56 -(i*8));
       symb_magic += value;
     }
     month<<=24;
     symb_magic += month;
     year<<=16;
     symb_magic += year;
     int s_id = exp_id;
     s_id<<=8;               
     symb_magic += s_id;  
     return(symb_magic);
   }
 }
  return(symb_magic); 
}
//-------------------------------------------------------------------+
// Is my magic function                                              |
//+------------------------------------------------------------------+
bool IsMyMagic(const ulong m_magic)
{
  if(m_magic > 0)
  {
    ulong stored_magic = symb_magic;
    stored_magic>>=8;   
    ulong in_magic = m_magic;
    in_magic>>=8;
    if(in_magic == stored_magic) return(true);
  }  
  return(false);
}
//-------------------------------------------------------------------+
// Get stored magic function                                         |
//+------------------------------------------------------------------+
ulong GetStoredMagic()
{
  if(symb_magic > 0) return(symb_magic);
  return(0);  
}
//-------------------------------------------------------------------+
// Get expert ID function                                            |
//+------------------------------------------------------------------+
int GetExpertId()
{
  return(exp_id); 
}
//+------------------------------------------------------------------+
Причина обращения: