Bot de Telegram para análisis de opciones

Las opciones son un tipo de valores que despiertan un interés constante incluso entre los traders novatos. Se han escrito muchos artículos sobre opciones, por lo que omitiremos la parte introductoria y asumiremos que el lector está familiarizado con los términos básicos del comercio de opciones. En todo caso, su interpretación es fácil de encontrar en Internet.





Después del primer conocimiento de la teoría, los operadores novatos en opciones tienen una pregunta: bajo qué condiciones este conjunto de opciones dará ganancias y de qué tipo. Incluso un operador de opciones experimentado no puede responder inmediatamente a esta pregunta si tiene más de una opción. Esto requiere un análisis de la cartera de opciones (un conjunto de opciones y, posiblemente, futuros), que se hace más claramente en forma gráfica, en el diagrama de la dependencia de la ganancia / pérdida del valor del activo subyacente. Actualmente, existen varios sitios para esto, así como programas individuales.





El autor del artículo ha implementado el análisis de opciones mediante un bot de telegrama , lo que permite obtener rápidamente información sobre la cartera de inversiones en un teléfono inteligente. 





Asumiremos que, además de las opciones, el lector está familiarizado con los bots de telegram. Por lo tanto, no habrá descripción de cómo crear un bot desde que recibe un token hasta que procesa el teclado. En cambio, enumeramos los problemas conceptuales que surgieron durante la creación del programa y cómo resolverlos.





Recordando el estado del bot entre webhooks

El bot recibe mensajes del usuario a través del mecanismo de webhook integrado en el telegrama. Cada webhook reinicia el programa, pero cada usuario necesita un conjunto de datos diferente. Los usuarios se identifican al ver el flujo de entrada:





$id_init = file_get_contents('php://input');

$id=sbs($id_init, '"from":{"id":',',"is_bot":');  //      

function sbs ($str,$m1,$m2){     //  str     - m1  m2

$p1=strpos($str,$m1)+strlen($m1);  // - 

$p2=strpos($str,$m2);

return substr($str,$p1,$p2-$p1);

}
      
      



La siguiente estructura de datos se crea para cada usuario:





  1. : – , ,  ( message_Id) , ( , ..), 





  2. (  , , , , )  









.





  , y=kx+b, 





  y –   /





        –





  png GD :





1) -  (, )





2) (   , ,   Y)





3) , X    , Y – , :





$typ – ,





$q – ( )





$cena –





$strike –





$x0 –





$sx –





function pparr($typ, $q, $cena, $strike,$x0,$sx)//    -  x=>y   

// ,  ( ),     ( ) 

    if ($q<0)  {    $q=-$q;

                    $drct='-';

            }                   

            else $drct='+';

     $a=array();

     $b=array();

     $delta=$sx;  //       $scalx

     for ($i=0;$i<740;$i++){   //   740  

        $xkk=$x0+$delta*$i; //   X

        if ($typ=='fut') {

            if ($drct=='+') $a[$xkk]=($xkk-$cena)*$q;

            else $a[$xkk]=(-$xkk+$cena)*$q;

        }

        if ($typ=='call'){

            if ($drct=='+') {  if ($xkk<=$strike) $a[$xkk]=-$cena*$q; else $a[$xkk]=$q*($xkk-$strike-$cena);}

            elseif ($xkk<=$strike) $a[$xkk]=$q*$cena; else $a[$xkk]=(-$xkk+$strike+$cena)*$q;}

            

        }

        if ($typ=='put'){

            if ($drct=='+') {  if ($xkk<=$strike) $a[$xkk]=(-$xkk+$strike-$cena)*$q; else $a[$xkk]=-$q*$cena;}

            elseif ($xkk<=$strike) $a[$xkk]=($xkk-$strike+$cena)*$q; else $a[$xkk]=$cena*$q;}

            

        }

     $b[(string)$xkk]=(string)$a[$xkk];

     }

return $b;         

};
      
      



4)      , ( )  ( ). , know-how ,   / Y. - X+,X-,Y+,Y- . , .





.  . – , .  , , ().  , , , , ( , ).  , . ( - ) ,   .  , ( , , )   () . .  , -,   , . 





- , .





, :





=+(-_)*;





_ , 





–   , , , ,





– , , , ,





  , , . , , , .





- :  , , ,  . , , . .





:





Una entrada en la cartera de compra de una opción de compra strike 75000 fecha de vencimiento 06/03/2021 a un precio de 25
"" 75000 03.06.2021 25
Gráfico de ganancias / pérdidas para la opción de compra comprada en función del valor del activo subyacente en la fecha de vencimiento
/ ""

=23.





:   ( ) [] 03.06.2021  75000 ,  23 . 75023 , .





:   23. , , 23.





– .





.





Una entrada en la cartera de venta de un ejercicio de opción de venta 72750 a un precio de 44 con fecha de vencimiento el 03/06/2021
"" 72750 44 03.06.2021
Un gráfico de la dependencia de la ganancia / pérdida de una opción de venta vendida sobre el valor del activo subyacente a la fecha de vencimiento.
/ ""

= 5436.





, 72750 44. 72706 . .





– , 72706. !   (5436), .





?  5436 44? , . , 3 .





.





?





Una entrada en la cartera de venta de la opción put strike 72750 y venta de la opción call strike 75000
"" 72750 "" 75000
Un gráfico de la dependencia de la ganancia / pérdida de la cartera en el valor del activo subyacente en la fecha de vencimiento.
/

!





– – , 72700  ( «»)  75190 ( «»). 





, .





,   72700 75190,  , .





-

:













  • «»,  ,   (   )









  • , , png,





  • , ,  : « », « », « »  





«»  InlineKeyboard.





  :





  • «-» , ,





  • «»   . ,





  •    .





.





,     « »( , ).





- .  , : (Si),  (BR), (RI). .





- , .





- / (P/L  ).





- t.me/@test09062020bot.  « ».








All Articles