English Русский 中文 Deutsch 日本語 Português
preview
Teoría de categorías en MQL5 (Parte 3)

Teoría de categorías en MQL5 (Parte 3)

MetaTrader 5Integración | 21 junio 2023, 15:01
261 0
Stephen Njuki
Stephen Njuki

Introducción

En el artículo anterior, analizamos la definición de categoría, centrándonos en sus axiomas, además de introducir los registros ontológicos. En este artículo, analizaremos los límites y colímites, nos centraremos en los productos y coproductos correspondientes y finalizaremos el análisis de las propiedades universales. Sin embargo, antes de sumergirnos en el desarrollo de estos conceptos en MQL5, sería útil compartir algunas ideas sobre cómo se puede aplicar y utilizar la teoría de categorías en un sistema comercial. El sistema presentado aquí es muy rudimentario y solo pretende destacar el potencial del artículo para el tráder.


Prólogo

En este artículo analizaremos los productos, que en la teoría de categorías son una forma de enumerar pares de elementos de dominio sin perder información previa sobre los componentes. Vamos a crear un asesor experto utilizando esta característica en el archivo de señales del Wizard MQL5. Entonces, nuestro trabajo se encontrará entre dos dominios, a saber, los valores del indicador DeMarker y Williams Percent Range. Entonces cada uno de estos dominios tendrá morfismos con los dominios Long Condition y Short Condition. El resultado neto de la suma de la salida de los dos dominios, que son sinónimos de las funciones de compra y venta de un archivo de señal típico, determinará si el asesor abrirá una posición larga o corta. A continuación le mostramos el listado del archivo de señal.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CSignalCT : public CExpertSignal
  {
protected:
   CiDeMarker        m_dmk;            // object-oscillator (first corner)
   CiWPR             m_wpr;            // object-indicator (second corner)
   //--- adjusted parameters
   int               m_periods;        // the "period of calculation" parameter of the oscillator & indicator
   ENUM_APPLIED_PRICE m_applied;       // the "prices series" parameter of the oscillator & indicator
   double            m_longdmk;        // long dmk weight
   double            m_shortdmk;       // short dmk weight
   double            m_longwpr;        // long wpr weight
   double            m_shortwpr;       // short wpr weight

public:
   //--- methods of setting adjustable parameters
   void              Periods(int value)                { m_periods=value;  }
   void              Applied(ENUM_APPLIED_PRICE value) { m_applied=value;  }
   
   void              LongDMK(double value) { m_longdmk=value;  }
   void              ShortDMK(double value) { m_shortdmk=value;  }
   void              LongWPR(double value) { m_longwpr=value;  }
   void              ShortWPR(double value) { m_shortwpr=value;  }
   //--- method of verification of settings
   virtual bool      ValidationSettings(void);
   //--- method of creating the indicator and timeseries
   virtual bool      InitIndicators(CIndicators *indicators);
   //--- methods of checking if the market models are formed
   virtual int       LongCondition(void);
   virtual int       ShortCondition(void);
                     CSignalCT(void);
                    ~CSignalCT(void);

protected:
                    
   virtual void      LongMorphism(void);
   virtual void      ShortMorphism(void);
   
   virtual double    Product(ENUM_POSITION_TYPE Position);
   
   NCT::
   CDomain<double>   long_product,short_product;
   //--- method of initialization of the oscillator
   bool              InitDMK(CIndicators *indicators);
   bool              InitWPR(CIndicators *indicators);
  };
//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CSignalCT::CSignalCT(void)
  {
//--- initialization of protected data
   m_used_series=USE_SERIES_HIGH+USE_SERIES_LOW+USE_SERIES_CLOSE+USE_SERIES_TIME;
   
  }
//+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CSignalCT::~CSignalCT(void)
  {
  }
//+------------------------------------------------------------------+
//| "Voting" that price will grow.                                   |
//+------------------------------------------------------------------+
int CSignalCT::LongCondition(void)
  {
      int result=0;
      
      //Using Domains Indicator biases (long or short)
      //e.g. an DMK reading of 75 => long-25, short-75 
      //or price at upper WPR => long-0, short-100
      LongMorphism();
      
      result=int(round(Product(POSITION_TYPE_BUY)));
      
      return(result);
  }
//+------------------------------------------------------------------+
//| "Voting" that price will fall.                                   |
//+------------------------------------------------------------------+
int CSignalCT::ShortCondition(void)
  {
      int result=0;
      
      ShortMorphism();
      
      result=int(round(Product(POSITION_TYPE_SELL)));
      
      return(result);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CSignalCT::LongMorphism(void)
   {
      int _index=StartIndex();
      
      m_wpr.Refresh(-1);
      m_dmk.Refresh(-1);
      m_close.Refresh(-1);
      
      double _wpr=-1.0*(m_dmk.GetData(0,_index)/100.0);
      double _dmk=(1.0-m_dmk.GetData(0,_index));
      
      NCT::CElement<double> _e;
      _e.Cardinality(2);
      _e.Set(0,_dmk);_e.Set(1,_wpr);
      
      long_product.Cardinality(1);
      long_product.Set(0,_e,true);
   }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CSignalCT::ShortMorphism(void)
   {
      int _index=StartIndex();
      
      m_wpr.Refresh(-1);
      m_dmk.Refresh(-1);
      m_close.Refresh(-1);
      
      double _wpr=-1.0+((m_dmk.GetData(0,_index))/100.0);
      double _dmk=(m_dmk.GetData(0,_index));
      
      NCT::CElement<double> _e;
      _e.Cardinality(2);
      _e.Set(0,_dmk);_e.Set(1,_wpr);
      
      short_product.Cardinality(1);
      short_product.Set(0,_e,true);
   }
//+------------------------------------------------------------------+
//| Morphisms at Product                                             |
//+------------------------------------------------------------------+
double CSignalCT::Product(ENUM_POSITION_TYPE Position)
   {
      double _product=0.0;
      
      NCT::CElement<double> _e;
   
      if(Position==POSITION_TYPE_BUY)
      {
         if(long_product.Cardinality()>=1 && long_product.Get(0,_e))
         {
            _product=100.0*((m_longdmk*_e.Get(0))+(m_longwpr*_e.Get(1)))/(m_longdmk+m_longwpr);
         }
         
         return(_product);
      }
      
      if(short_product.Cardinality()>=1 && short_product.Get(0,_e))
      {
         _product=100.0*((m_shortdmk*_e.Get(0))+(m_shortwpr*_e.Get(1)))/(m_shortdmk+m_shortwpr);
      }
         
      return(_product);
   }


El informe del simulador, basado en los ticks reales durante la mayor parte de 2022 para la pareja EURJPY, nos ofrece la siguiente curva.

ct_3_curve


Más abajo mostramos los detalles del informe.

  ct_3_report

Está claro que este no es un sistema perfecto, pero presenta algunas ideas que pueden desarrollarse en algo más cohesivo. En los anexos adjuntamos el código fuente completo.

Según Wikipedia, los límites y los colímites, al igual que los conceptos estrechamente relacionados de las propiedades universales, resultan muy abstractos. Para comprenderlos, nos será útil estudiar primero ejemplos específicos que sean generalizados por estos conceptos, como los productos y los coproductos.



Productos

El producto de dos dominios A y B se representa como A x B, y se define como un conjunto de pares ordenados (a, b) , donde a ∈ A y b ∈ B. De manera simbólica

A x B = {(a, b) | a ∈ A, b ∈ B}

El producto es una generalización del producto cartesiano de los dominios, y refleja la idea de un "par" o "tupla" de dominios en una categoría. Intuitivamente, el producto C será un comportamiento "conjunto" o "compuesto" de A y B.

Además de la propiedad universal analizada a continuación, un producto tendrá las siguientes propiedades:

  • El producto es asociativo: (A × B) × C es isomorfo a A × (B × C).
  • El producto es conmutativo: A × B es isomorfo a B × A.
  • El producto de un dominio y el dominio original será isomorfo al propio dominio: A × 1 es isomorfo a A.
  • El producto de un dominio y el dominio de destino será isomorfo al propio dominio: A × 0 es isomorfo a 0.

El concepto de productos se puede aplicar a varias estructuras matemáticas, incluidos conjuntos, grupos, anillos y espacios vectoriales, así como a estructuras más abstractas, como los espacios topológicos y las propias categorías. En cada caso, el producto reflejará la idea de un comportamiento "conjunto" o "compuesto" de dos dominios o estructuras y proporcionará una forma de razonar sobre el comportamiento del sistema como un todo. La gestión de riesgos es un ejemplo sobre cómo el uso de la teoría de categorías en finanzas ofrece una mejor alternativa a los enfoques tradicionales.

La teoría de categorías permite un enfoque más abstracto y general del modelado de riesgos financieros que se puede aplicar a una amplia gama de instrumentos y mercados. Este enfoque puede ofrecer una base más unificada y flexible para comprender el riesgo, en comparación con el enfoque tradicional del uso de modelos específicos para cada instrumento o mercado. Además, el uso de la teoría de categorías en la gestión de riesgos puede llevara a estrategias de gestión de riesgos más sólidas y escalables que se adapten mejor a la naturaleza compleja e interconectada de los mercados financieros actuales.

Por ejemplo, en la gestión de riesgos tradicional, el riesgo suele modelarse usando modelos matemáticos específicos para cada instrumento financiero o mercado. Por ejemplo, el modelo Black-Scholes se usa comúnmente para modelar el riesgo de opciones, mientras que el modelo VaR (Value at Risk) se usa a menudo para modelar el riesgo de un portafolio de activos. Estos modelos pueden resultar efectivos, pero tienen un alcance limitado y pueden ser difíciles de escalar a nuevos instrumentos o mercados financieros.

Por el contrario, la teoría de categorías proporciona un enfoque más abstracto y general para el modelado de riesgos. Por ejemplo, los instrumentos financieros en los mercados se pueden representar como dominios en una categoría, mientras que el riesgo se representa como un morfismo de estos dominios en un dominio de posición con solo dos elementos: una posición larga y una posición corta. Esto creará una base más unificada y flexible para comprender el riesgo que se puede aplicar a una amplia gama de instrumentos y mercados financieros. Nuestro archivo de señales aplicó un enfoque similar en el prólogo.

Por ejemplo, supongamos que tenemos dos instrumentos financieros, A y B, y queremos modelar el riesgo del paso de A a B. A y B se pueden representar como dominios, mientras que el riesgo del paso de A a B se puede representar como sus respectivos morfismos. Dichos morfismos reflejarán el riesgo asociado al paso de A a B, considerando factores como la volatilidad, la liquidez y las condiciones del mercado. De forma alternativa, como se muestra en el prólogo, podemos tener una herramienta y desear saber qué posición debemos tener en un momento determinado. Tomaremos indicadores financieros para este instrumento y encontraremos su producto ponderado. El valor resultante influirá en nuestra decisión. A continuación podrá ver un extracto del listado que muestra solo la combinación de los valores de estos indicadores. Primero, necesitaremos una clase para procesar y almacenar la información sobre los dominios de un producto.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CComposition
   {
      protected:
      
      int                           projectors;
      string                        projector[];
      
      bool                          Projectors(int Value)
                                    { 
                                       if(Value>=0 && Value<INT_MAX)
                                       {
                                          projectors=Value;
                                          ArrayResize(projector,projectors);
                                          return(true);
                                       }
                                       
                                       return(false); 
                                    };
      
      int                           Projectors(){ return(projectors); };
                                    
      public:
                                    
      string                        Get(int ProjectorIndex) { string _projector=""; if(ProjectorIndex>=0 && ProjectorIndex<Projectors()) { _projector=projector[ProjectorIndex]; } return(_projector); }
      bool                          Set(int ValueIndex,string Value) { if(ValueIndex>=0 && ValueIndex<Projectors()) { projector[ValueIndex]=Value; return(true); } return(false); }
      
      CDomain<string>               property;
      CDomain<string>               cone;
      
                                    CComposition(void){ projectors=0;ArrayFree(projector); };
                                    ~CComposition(void){};
   };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CProduct                      :public CComposition  
   {
      protected:
      
      CDomain<string>               surjector[];
      
      public:
      
      bool                          Surjectors(int Value)
                                    { 
                                       if(Value>=0 && Value<INT_MAX)
                                       {
                                          CComposition::Projectors(Value);
                                          ArrayResize(surjector,Value);
                                          return(true);
                                       }
                                       
                                       return(false); 
                                    };
      
      int                           Surjectors(){ return(CComposition::projectors); };
                                    
      bool                          Get(int SurjectorIndex,CDomain<string> &Surjector) { if(SurjectorIndex>=0 && SurjectorIndex<CComposition::Projectors()) { Surjector=surjector[SurjectorIndex]; return(true); } return(false); }
      bool                          Set(int ValueIndex,CDomain<string> &Value) { if(ValueIndex>=0 && ValueIndex<CComposition::Projectors()) { surjector[ValueIndex]=Value; return(true); } return(false); }
      
                                    CProduct(void){ ArrayFree(surjector); };
                                    ~CProduct(void){};
   };

Una vez que los hayamos definido, podremos ejecutar los productos de la forma siguiente.

      //////////
      //PRODUCTS
      //////////
      
      CDomain<double> _d_p_a,_d_p_b,_d_p_c;
      _d_p_a.Cardinality(__product_size);_d_p_b.Cardinality(__product_size);_d_p_c.Cardinality(__product_size);
      
      int _rsi_handle=iRSI(_Symbol,_Period,__product_size,__product_price);
      int _cci_handle=iCCI(_Symbol,_Period,__product_size,__product_price);
      int _dmk_handle=iDeMarker(_Symbol,_Period,__product_size);
      int _wpr_handle=iWPR(_Symbol,_Period,__product_size);
      int _stc_handle=iStochastic(_Symbol,_Period,8,4,4,MODE_SMA,STO_LOWHIGH);
      int _trx_handle=iTriX(_Symbol,_Period,__product_size,__product_price);
      
      if
      (
      FillDomain(_d_p_a,0,__product_size,_rsi_handle)
      &&
      FillDomain(_d_p_a,1,__product_size,_cci_handle)
      &&
      FillDomain(_d_p_b,0,__product_size,_dmk_handle)
      &&
      FillDomain(_d_p_b,1,__product_size,_wpr_handle)
      &&
      FillDomain(_d_p_c,0,__product_size,_stc_handle)
      &&
      FillDomain(_d_p_c,1,__product_size,_trx_handle)
      )
      {
         printf(__FUNCSIG__+" domain A: "+PrintDomain(_d_p_a,2));
         printf(__FUNCSIG__+" domain B: "+PrintDomain(_d_p_b,2));
         printf(__FUNCSIG__+" domain C: "+PrintDomain(_d_p_c,5));
         
         CProduct _product;
         
         GetProduct(_d_p_a,_d_p_b,_product,2);
         printf(__FUNCSIG__+" A & B product: "+PrintDomain(_product.cone,2));
         
         GetProduct(_product.cone,_d_p_c,_product,5);
         printf(__FUNCSIG__+" A & B & C product: "+PrintDomain(_product.cone,5));
      }


Estos valores de indicadores, aunque no están normalizados como en el archivo de señales del prólogo, podrán considerarse o utilizarse como indicadores de riesgo para tomar una decisión comercial. La ejecución del script ofrece las siguientes entradas.

2023.02.17 17:31:33.199 ct_3_1 (USDCHF.ln,W1)   void OnStart() domain A: {(-66.67),(66.67)}
2023.02.17 17:31:33.199 ct_3_1 (USDCHF.ln,W1)   
2023.02.17 17:31:33.199 ct_3_1 (USDCHF.ln,W1)   void OnStart() domain B: {(-61.99),(-68.45)}
2023.02.17 17:31:33.199 ct_3_1 (USDCHF.ln,W1)   
2023.02.17 17:31:33.199 ct_3_1 (USDCHF.ln,W1)   void OnStart() domain C: {(-0.00996),(-0.00628)}
2023.02.17 17:31:33.199 ct_3_1 (USDCHF.ln,W1)   
2023.02.17 17:31:33.199 ct_3_1 (USDCHF.ln,W1)   void OnStart() A & B product: {((66.67),(-68.45)),((66.67),(-61.99)),((-66.67),(-68.45)),((-66.67),(-61.99))}
2023.02.17 17:31:33.199 ct_3_1 (USDCHF.ln,W1)   
2023.02.17 17:31:33.200 ct_3_1 (USDCHF.ln,W1)   void OnStart() A & B & C product: {(((-66.67),(-61.99)),(-0.00628)),(((-66.67),(-61.99)),(-0.00996)),(((-66.67),(-68.45)),(-0.00628)),(((-66.67),(-68.45)),(-0.00996)),(((66.67),(-61.99)),(-0.00628)),(((66.67),(-61.99)),(-0.00996)),(((66.67),(-68.45)),(-0.00628)),(((66.67),(-68.45)),(-0.00996))}

La capacidad de considerar múltiples factores resultará más sensible a la macroeconomía que, por ejemplo, un valor de riesgo que tenga en cuenta solo el intervalo de confianza del riesgo en comparación con el rendimiento anterior. La idea de incorporar múltiples factores en un morfismo también se puede usar para identificar y cuantificar los riesgos asociados con instrumentos financieros complejos, como los derivados, que pueden ser difíciles de modelar utilizando enfoques tradicionales. Una vez más, esto resulta posible gracias a un enfoque sistemático para dividir los datos en dominios y vincularlos mediante morfismos que preserven la integridad. Además, podríamos desarrollar estrategias de gestión de riesgos que se adapten mejor a la naturaleza compleja e interconectada de los mercados financieros actuales, como estrategias que consideren la relación entre diferentes instrumentos financieros y mercados.

El concepto de productos en la teoría de categorías también puede resultar útil, por ejemplo, en finanzas a la hora de gestionar el riesgo en múltiples activos. El producto de dos dominios en una categoría permitirá combinarlos en un solo dominio que se podrá utilizar para modelar el riesgo conjunto asociado con ambos dominios (activos). Por ejemplo, supongamos que tenemos dos instrumentos financieros, A y B, y queremos modelar el riesgo combinado vinculado con la tenencia de ambos en una cartera. Podemos pensar en A y B como dominios en una categoría, mientras que su riesgo combinado sería el producto de los dos dominios. Estos dominios de trabajo abarcarán el riesgo combinado asociado con A y B considerando sus riesgos individuales, así como cualquier interacción entre ellos. Este enfoque preservará el riesgo de entrada de cada instrumento financiero, de forma que al entrenar el modelo, pueda considerar entradas individuales para una mayor precisión y comprensión, en lugar de promediar dos en una. En esencia, comprenderemos mejor el riesgo general asociado con varios instrumentos financieros y, por lo tanto, podremos desarrollar estrategias de gestión de riesgos más efectivas. Para ilustrar esto, los productos se pueden usar para modelar el riesgo asociado con estructuras financieras complejas, como las obligaciones colateralizadas mediante deuda (collateralized debt obligations, CDO), que constan de múltiples activos subyacentes.

Los trabajos de teoría de categorías tienden a inclinarse hacia la abstracción y los marcos generales, lo cual puede conducir a una amplia gama de aplicaciones en instrumentos y mercados financieros, incluido el modelado de riesgos. Esto permite un enfoque más unificado y flexible de la gestión de riesgos, lo que puede ayudarnos a comprender mejor las interacciones y dependencias entre los diferentes instrumentos financieros y mercados, a diferencia de los detalles específicos de VaR/Black-Scholes. Supongamos que tenemos un portafolio S&P 500 de varias acciones y queremos modelar el riesgo de dicho portafolio. Podríamos hacerlo con el VaR, que estima la máxima pérdida potencial de un portafolio con un determinado nivel de probabilidad.

No obstante, el VaR tiene algunas limitaciones, como la suposición de una distribución normal que puede no cumplirse en la práctica, la incapacidad de captar relaciones de riesgo complejas entre los activos de un portafolio y la incapacidad de estimar la magnitud de las pérdidas si se infringe el VaR. La teoría de categorías ofrece una forma más abstracta y flexible de modelar el riesgo al centrarse en la estructura y las relaciones entre los diferentes elementos del portafolio en lugar de solo sus propiedades individuales. En particular, la teoría de categorías nos permite pensar en un portafolio S&P 500 como una categoría donde los activos son dominios de categoría y las relaciones de riesgo entre ellos se captan mediante morfismos o flechas de categoría.

Por ejemplo, podríamos definir un morfismo entre dos activos como la representación de las relaciones de riesgo entre ellos, como la medida en que sus precios se mueven en la misma dirección o en la dirección opuesta (por ejemplo, la correlación). Definiendo dichos morfismos, podemos construir una imagen más detallada de las relaciones de riesgo entre los activos en un portafolio, que puede resultar más precisa que simplemente usar el VaR. Además, abstrayendo las relaciones de riesgo entre activos como morfismos, podemos aplicar poderosas herramientas y conceptos de la teoría de categorías, como la composición, la dualidad y las propiedades universales, para analizar y administrar así el riesgo del portafolio. Por ejemplo, podríamos usar la composición de morfismos para combinar los índices de riesgo de múltiples activos y obtener el riesgo total del portafolio, o podríamos usar la dualidad (hablaremos de ella más adelante) para estudiar las relaciones de riesgo inversas entre activos.

Aquí tenemos un ejemplo numérico para ilustrar aún mejor cómo el uso de la teoría de categorías, incluidos los productos, puede ofrecer ventajas sobre los métodos tradicionales de medición de riesgos antes mencionados. Supongamos que tenemos un portafolio de dos instrumentos financieros, A y B, cada uno con un valor actual de $100, y queremos estimar el riesgo combinado asociado con la tenencia de ambos. Para simplificar, supongamos que los rendimientos A y B se distribuyen normalmente con una media del 10% y una desviación estándar del 20%. Usando modelos tradicionales como el VaR, podemos evaluar los riesgos individuales de A y B, así como su riesgo combinado. Por ejemplo, usando el VaR con un nivel de confianza del 95%, podemos estimar que el VaR de un día para A y B por separado será de aproximadamente $25,46, mientras que el VaR combinado será de aproximadamente $36,03.

VaR = valor de la cartera x volatilidad x z-score

VaR = 100$ x 20% x 1,645

VaR = 36,03$.

 

Alternativamente, podríamos utilizar la teoría de categorías y los productos de la teoría de categorías para modelar el riesgo conjunto de A y B. En este enfoque, representaremos a A y B como dominios en una categoría, mientras que su riesgo conjunto se representará como el producto de los dos dominios. Usando la fórmula estándar para el producto de dos variables aleatorias normalmente distribuidas, podremos calcular que la distribución conjunta de A y B tiene una media de un 10%, y una desviación estándar de aproximadamente 0.28.

VaR = 100$ x √ ((10%)2 x (28%)2 + (10%)2 x (28%)2) x 1,645

VaR = 29,15$.

 

Usando este enfoque, podríamos estimar el VaR de un día para el riesgo combinado de A y B usando la fórmula estándar del VaR. Con un nivel de confianza del 95%, el VaR de un día para el riesgo combinado de A y B sería de aproximadamente $29,15. En este ejemplo, el uso de la teoría de categorías y el modelo de producto de riesgo conjunto A y B ofrece una estimación diferente del VaR conjunto que el modelo tradicional descrito anteriormente. No obstante, la teoría de categorías puede ofrecer un enfoque más general y flexible para la gestión de riesgos que se puede aplicar a una gama más amplia de instrumentos y mercados financieros, y también puede considerar de forma más efectiva el riesgo añadido asociado con múltiples instrumentos financieros. Esto implica que un resultado típico para un área determinada sería una matriz que enumera los resultados de riesgo de cada iteración. Este conjunto continuo de datos sirve de base para estimar la media y la desviación típica según las metas y objetivos de los inversores.

El producto es un tipo de límite, por lo que podría ser útil ofrecer algunos comentarios generales sobre cómo los límites en general pueden resultar útiles para los tráders al diseñar un sistema. En el contexto de las finanzas, el uso de límites puede ayudarnos a aproximarnos a estructuras financieras complejas de forma más efectiva, lo cual puede ayudar a desarrollar estrategias de gestión de riesgos más precisas. Por ejemplo, podremos usar el concepto de límites para evaluar el valor de un portafolio que contenga un gran número de instrumentos financieros diferentes. Representando el portafolio como un límite de dominios más simples, podremos estimar su valor de manera más precisa y eficiente.

Como ejemplo, diremos que tenemos un portafolio de 1000 instrumentos financieros, cada uno con un valor presente de $100. Queremos estimar el valor de todo el portafolio, así como el riesgo total asociado con la tenencia de todos los instrumentos. El uso de métodos tradicionales como el VaR o el método Black-Scholes puede resultar difícil debido a la naturaleza multidimensional del portafolio. Sin embargo, usando el concepto de límites en la teoría de categorías, podemos pensar en un portafolio como en un límite de áreas más simples, como la suma de los primeros n instrumentos financieros, donde n va de 1 a 1000. Entonces podremos estimar el valor del portafolio tomando el límite de la suma cuando n se acerca a 1000. Usando este enfoque, podemos estimar el valor de un portafolio de forma más precisa y eficiente.

Además, el uso de límites en la teoría de categorías puede permitirnos razonar sobre el comportamiento de los instrumentos financieros y los mercados conforme se acercan a ciertos límites. Por ejemplo, podemos usar el concepto de límites para analizar el comportamiento de los mercados financieros durante periodos de extrema volatilidad, así como para desarrollar estrategias de gestión de riesgos que se adapten mejor a estas condiciones. En resumen, el uso de límites en la teoría de categorías puede aportar beneficios adicionales al usar la teoría de categorías y productos en finanzas, lo cual nos permite aproximarnos mejor a estructuras financieras complejas y analizar el comportamiento de los instrumentos financieros y los mercados a medida que se aproximan a ciertos límites.


Propiedad universal de un producto.

Una propiedad genérica es una forma de caracterizar un dominio en una categoría según cómo interactúe con otros dominios en la categoría. Esta propiedad se puede usar para definir dominios y operaciones de forma más abstracta, lo que puede dar lugar a modelos más potentes y flexibles. En el contexto de las finanzas, el uso de propiedades universales puede permitirnos definir instrumentos y mercados financieros de forma más abstracta, lo cual puede facilitar su análisis y el desarrollo de modelos más generales. Por ejemplo, podemos definir un derivado cotizado como un dominio de categoría que cumpla ciertas propiedades universales, como definir quién es el regulador, además de especificar si se trata de una opción o un contrato de futuros. Esta identificación podrá ayudar a evaluar los costos de cumplimiento y el riesgo de la contraparte. A continuación le mostramos un fragmento del script que demuestra esto.

      //////////////////////////////
      //PRODUCT UNIVERSAL-PROPERTY
      //////////////////////////////
      
      CDomain<string> _d_security,_d_exchanges,_d_optioncycle,_d_strikewidth,_d_property;
      //
      CElement<string> _e;_e.Cardinality(1);
      //
      _d_security.Cardinality(2);
      _e.Set(0,"EURUSD");_d_security.Set(0,_e,true);
      _e.Set(0,"USDJPY");_d_security.Set(1,_e,true);
      //
      _d_exchanges.Cardinality(7);
      _e.Set(0,"Chicago Board Options Exchange (CBOE)");_d_exchanges.Set(0,_e,true);
      _e.Set(0,"Shanghai Stock Exchange (SSE)");_d_exchanges.Set(1,_e,true);
      _e.Set(0,"Shenzhen Stock Exchange (SZSE)");_d_exchanges.Set(2,_e,true);
      _e.Set(0,"Tokyo Stock Exchange (TSE)");_d_exchanges.Set(3,_e,true);
      _e.Set(0,"Osaka Exchange (OSE)");_d_exchanges.Set(4,_e,true);
      _e.Set(0,"Eurex Exchange");_d_exchanges.Set(5,_e,true);
      _e.Set(0,"London Stock Exchange (LSE)");_d_exchanges.Set(6,_e,true);
      //
      _d_optioncycle.Cardinality(3);
      _e.Set(0,"JAJO - January, April, July, and October");_d_optioncycle.Set(0,_e,true);
      _e.Set(0,"FMAN - February, May, August, and November");_d_optioncycle.Set(1,_e,true);
      _e.Set(0,"MJSD - March, June, September, and December");_d_optioncycle.Set(2,_e,true);
      //
      _d_strikewidth.Cardinality(2);
      _e.Set(0,"1000 points");_d_strikewidth.Set(0,_e,true);
      _e.Set(0,"1250 points");_d_strikewidth.Set(1,_e,true);
      //
      printf(__FUNCSIG__+" securities domain: "+PrintDomain(_d_security,0));
      printf(__FUNCSIG__+" exchanges domain: "+PrintDomain(_d_exchanges,0));
      printf(__FUNCSIG__+" option cycle domain: "+PrintDomain(_d_optioncycle,0));
      printf(__FUNCSIG__+" strike width domain: "+PrintDomain(_d_strikewidth,0));
      
      CProduct _product_1;
      
      GetProduct(_d_security,_d_exchanges,_product_1,0);
      printf(__FUNCSIG__+" securities & exchanges product: "+PrintDomain(_product_1.cone,0));
      
      CProduct _product_2;
      
      GetProduct(_d_optioncycle,_d_strikewidth,_product_2,0);
      printf(__FUNCSIG__+" securities & exchanges & optioncycle product: "+PrintDomain(_product_2.cone,0));
      
      CProduct _product_all;
      
      GetProduct(_product_1.cone,_product_2.cone,_product_all,0);
      printf(__FUNCSIG__+" securities & exchanges & optioncycle & strikewidth product: "+PrintDomain(_product_all.cone,0));
      
      _d_property.Cardinality(5);
      _e.Set(0,"Commodity Futures Trading Commission (CFTC)");_d_property.Set(0,_e,true);
      _e.Set(0,"China Securities Regulatory Commission (CSRC)");_d_property.Set(1,_e,true);
      _e.Set(0,"Financial Services Agency (FSA)");_d_property.Set(2,_e,true);
      _e.Set(0,"Federal Financial Supervisory Authority (BaFin)");_d_property.Set(3,_e,true);
      _e.Set(0,"Financial Conduct Authority (FCA)");_d_property.Set(4,_e,true);
      
      //
      _product_all.property=_d_property;
      //
      _product_all.universality.domain=_product_all.property;
      _product_all.universality.codomain=_product_all.cone;
      //
      CMorphism<string,string> _mm;
      _mm.domain=_product_all.property;
      _mm.codomain=_product_all.cone;
      //
      
      for(int c=0;c<_product_all.property.Cardinality();c++)
      {
         CElement<string> _e_property;_e_property.Cardinality(1);
         if(_product_all.property.Get(c,_e_property) && _e_property.Get(0)!="")
         {
            for(int cc=0;cc<_product_all.cone.Cardinality();cc++)
            {
               CElement<string> _e_cone;_e_cone.Cardinality(1);
               if(_product_all.cone.Get(cc,_e_cone) && _e_cone.Get(0)!="")
               {
                  if(_e_property.Get(0)=="Commodity Futures Trading Commission (CFTC)")
                  {
                     if(StringFind(_e_cone.Get(0),"Chicago Board Options Exchange (CBOE)")>=0)
                     {
                        if(_product_all.universality.Morphisms(_product_all.universality.Morphisms()+1))
                        {
                           if(_mm.Morph(_product_all.property,_product_all.cone,_e_property,_e_cone))
                           {
                              if(!_product_all.universality.Set(_product_all.universality.Morphisms()-1,_mm))
                              {
                              }
                           }
                        }
                     }
                  }
                  else if(_e_property.Get(0)=="China Securities Regulatory Commission (CSRC)")
                  {
                     if(StringFind(_e_cone.Get(0),"Shanghai Stock Exchange (SSE)")>=0||StringFind(_e_cone.Get(0),"Shenzhen Stock Exchange (SZSE)")>=0)
                     {
                        if(_product_all.universality.Morphisms(_product_all.universality.Morphisms()+1))
                        {
                           if(_mm.Morph(_product_all.property,_product_all.cone,_e_property,_e_cone))
                           {
                              if(!_product_all.universality.Set(_product_all.universality.Morphisms()-1,_mm))
                              {
                              }
                           }
                        }
                     }
                  }
                  else if(_e_property.Get(0)=="Financial Services Agency (FSA)")
                  {
                     if(StringFind(_e_cone.Get(0),"Tokyo Stock Exchange (TSE)")>=0||StringFind(_e_cone.Get(0),"Osaka Exchange (OSE)")>=0)
                     {
                        if(_product_all.universality.Morphisms(_product_all.universality.Morphisms()+1))
                        {
                           if(_mm.Morph(_product_all.property,_product_all.cone,_e_property,_e_cone))
                           {
                              if(!_product_all.universality.Set(_product_all.universality.Morphisms()-1,_mm))
                              {
                              }
                           }
                        }
                     }
                  }
                  else if(_e_property.Get(0)=="Federal Financial Supervisory Authority (BaFin)")
                  {
                     if(StringFind(_e_cone.Get(0),"Eurex Exchange")>=0)
                     {
                        if(_product_all.universality.Morphisms(_product_all.universality.Morphisms()+1))
                        {
                           if(_mm.Morph(_product_all.property,_product_all.cone,_e_property,_e_cone))
                           {
                              if(!_product_all.universality.Set(_product_all.universality.Morphisms()-1,_mm))
                              {
                              }
                           }
                        }
                     }
                  }
                  else if(_e_property.Get(0)=="Financial Conduct Authority (FCA)")
                  {
                     if(StringFind(_e_cone.Get(0),"London Stock Exchange (LSE)")>=0)
                     {
                        if(_product_all.universality.Morphisms(_product_all.universality.Morphisms()+1))
                        {
                           if(_mm.Morph(_product_all.property,_product_all.cone,_e_property,_e_cone))
                           {
                              if(!_product_all.universality.Set(_product_all.universality.Morphisms()-1,_mm))
                              {
                              }
                           }
                        }
                     }
                  }
               }
            }
         }
      }

Al ejecutar este script, crearemos las siguientes entradas, que representarán el homomorfismo entre el dominio cónico y el dominio de la propiedad. Este homomorfismo marca una propiedad universal.

/*
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   void OnStart() universal property: 
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   {(Commodity Futures Trading Commission (CFTC)),(China Securities Regulatory Commission (CSRC)),(Financial Services Agency (FSA)),(Federal Financial Supervisory Authority (BaFin)),(Financial Conduct Authority (FCA))}
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   |
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (Commodity Futures Trading Commission (CFTC))|----->(((EURUSD),(Chicago Board Options Exchange (CBOE))),((JAJO - January, April, July, and October),(1000 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (Commodity Futures Trading Commission (CFTC))|----->(((EURUSD),(Chicago Board Options Exchange (CBOE))),((JAJO - January, April, July, and October),(1250 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (Commodity Futures Trading Commission (CFTC))|----->(((EURUSD),(Chicago Board Options Exchange (CBOE))),((FMAN - February, May, August, and November),(1000 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (Commodity Futures Trading Commission (CFTC))|----->(((EURUSD),(Chicago Board Options Exchange (CBOE))),((FMAN - February, May, August, and November),(1250 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (Commodity Futures Trading Commission (CFTC))|----->(((EURUSD),(Chicago Board Options Exchange (CBOE))),((MJSD - March, June, September, and December),(1000 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (Commodity Futures Trading Commission (CFTC))|----->(((EURUSD),(Chicago Board Options Exchange (CBOE))),((MJSD - March, June, September, and December),(1250 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (Commodity Futures Trading Commission (CFTC))|----->(((USDJPY),(Chicago Board Options Exchange (CBOE))),((JAJO - January, April, July, and October),(1000 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (Commodity Futures Trading Commission (CFTC))|----->(((USDJPY),(Chicago Board Options Exchange (CBOE))),((JAJO - January, April, July, and October),(1250 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (Commodity Futures Trading Commission (CFTC))|----->(((USDJPY),(Chicago Board Options Exchange (CBOE))),((FMAN - February, May, August, and November),(1000 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (Commodity Futures Trading Commission (CFTC))|----->(((USDJPY),(Chicago Board Options Exchange (CBOE))),((FMAN - February, May, August, and November),(1250 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (Commodity Futures Trading Commission (CFTC))|----->(((USDJPY),(Chicago Board Options Exchange (CBOE))),((MJSD - March, June, September, and December),(1000 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (Commodity Futures Trading Commission (CFTC))|----->(((USDJPY),(Chicago Board Options Exchange (CBOE))),((MJSD - March, June, September, and December),(1250 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((EURUSD),(Shanghai Stock Exchange (SSE))),((JAJO - January, April, July, and October),(1000 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((EURUSD),(Shanghai Stock Exchange (SSE))),((JAJO - January, April, July, and October),(1250 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((EURUSD),(Shanghai Stock Exchange (SSE))),((FMAN - February, May, August, and November),(1000 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((EURUSD),(Shanghai Stock Exchange (SSE))),((FMAN - February, May, August, and November),(1250 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((EURUSD),(Shanghai Stock Exchange (SSE))),((MJSD - March, June, September, and December),(1000 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((EURUSD),(Shanghai Stock Exchange (SSE))),((MJSD - March, June, September, and December),(1250 points)))
2023.02.21 09:57:41.077 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((EURUSD),(Shenzhen Stock Exchange (SZSE))),((JAJO - January, April, July, and October),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((EURUSD),(Shenzhen Stock Exchange (SZSE))),((JAJO - January, April, July, and October),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((EURUSD),(Shenzhen Stock Exchange (SZSE))),((FMAN - February, May, August, and November),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((EURUSD),(Shenzhen Stock Exchange (SZSE))),((FMAN - February, May, August, and November),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((EURUSD),(Shenzhen Stock Exchange (SZSE))),((MJSD - March, June, September, and December),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((EURUSD),(Shenzhen Stock Exchange (SZSE))),((MJSD - March, June, September, and December),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((USDJPY),(Shanghai Stock Exchange (SSE))),((JAJO - January, April, July, and October),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((USDJPY),(Shanghai Stock Exchange (SSE))),((JAJO - January, April, July, and October),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((USDJPY),(Shanghai Stock Exchange (SSE))),((FMAN - February, May, August, and November),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((USDJPY),(Shanghai Stock Exchange (SSE))),((FMAN - February, May, August, and November),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((USDJPY),(Shanghai Stock Exchange (SSE))),((MJSD - March, June, September, and December),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((USDJPY),(Shanghai Stock Exchange (SSE))),((MJSD - March, June, September, and December),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((USDJPY),(Shenzhen Stock Exchange (SZSE))),((JAJO - January, April, July, and October),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((USDJPY),(Shenzhen Stock Exchange (SZSE))),((JAJO - January, April, July, and October),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((USDJPY),(Shenzhen Stock Exchange (SZSE))),((FMAN - February, May, August, and November),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((USDJPY),(Shenzhen Stock Exchange (SZSE))),((FMAN - February, May, August, and November),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((USDJPY),(Shenzhen Stock Exchange (SZSE))),((MJSD - March, June, September, and December),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (China Securities Regulatory Commission (CSRC))|----->(((USDJPY),(Shenzhen Stock Exchange (SZSE))),((MJSD - March, June, September, and December),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((EURUSD),(Tokyo Stock Exchange (TSE))),((JAJO - January, April, July, and October),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((EURUSD),(Tokyo Stock Exchange (TSE))),((JAJO - January, April, July, and October),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((EURUSD),(Tokyo Stock Exchange (TSE))),((FMAN - February, May, August, and November),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((EURUSD),(Tokyo Stock Exchange (TSE))),((FMAN - February, May, August, and November),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((EURUSD),(Tokyo Stock Exchange (TSE))),((MJSD - March, June, September, and December),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((EURUSD),(Tokyo Stock Exchange (TSE))),((MJSD - March, June, September, and December),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((EURUSD),(Osaka Exchange (OSE))),((JAJO - January, April, July, and October),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((EURUSD),(Osaka Exchange (OSE))),((JAJO - January, April, July, and October),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((EURUSD),(Osaka Exchange (OSE))),((FMAN - February, May, August, and November),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((EURUSD),(Osaka Exchange (OSE))),((FMAN - February, May, August, and November),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((EURUSD),(Osaka Exchange (OSE))),((MJSD - March, June, September, and December),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((EURUSD),(Osaka Exchange (OSE))),((MJSD - March, June, September, and December),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((USDJPY),(Tokyo Stock Exchange (TSE))),((JAJO - January, April, July, and October),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((USDJPY),(Tokyo Stock Exchange (TSE))),((JAJO - January, April, July, and October),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((USDJPY),(Tokyo Stock Exchange (TSE))),((FMAN - February, May, August, and November),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((USDJPY),(Tokyo Stock Exchange (TSE))),((FMAN - February, May, August, and November),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((USDJPY),(Tokyo Stock Exchange (TSE))),((MJSD - March, June, September, and December),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((USDJPY),(Tokyo Stock Exchange (TSE))),((MJSD - March, June, September, and December),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((USDJPY),(Osaka Exchange (OSE))),((JAJO - January, April, July, and October),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((USDJPY),(Osaka Exchange (OSE))),((JAJO - January, April, July, and October),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((USDJPY),(Osaka Exchange (OSE))),((FMAN - February, May, August, and November),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((USDJPY),(Osaka Exchange (OSE))),((FMAN - February, May, August, and November),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((USDJPY),(Osaka Exchange (OSE))),((MJSD - March, June, September, and December),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Financial Services Agency (FSA))|----->(((USDJPY),(Osaka Exchange (OSE))),((MJSD - March, June, September, and December),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Federal Financial Supervisory Authority (BaFin))|----->(((EURUSD),(Eurex Exchange)),((JAJO - January, April, July, and October),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Federal Financial Supervisory Authority (BaFin))|----->(((EURUSD),(Eurex Exchange)),((JAJO - January, April, July, and October),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Federal Financial Supervisory Authority (BaFin))|----->(((EURUSD),(Eurex Exchange)),((FMAN - February, May, August, and November),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Federal Financial Supervisory Authority (BaFin))|----->(((EURUSD),(Eurex Exchange)),((FMAN - February, May, August, and November),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Federal Financial Supervisory Authority (BaFin))|----->(((EURUSD),(Eurex Exchange)),((MJSD - March, June, September, and December),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Federal Financial Supervisory Authority (BaFin))|----->(((EURUSD),(Eurex Exchange)),((MJSD - March, June, September, and December),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Federal Financial Supervisory Authority (BaFin))|----->(((USDJPY),(Eurex Exchange)),((JAJO - January, April, July, and October),(1000 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Federal Financial Supervisory Authority (BaFin))|----->(((USDJPY),(Eurex Exchange)),((JAJO - January, April, July, and October),(1250 points)))
2023.02.21 09:57:41.078 ct_3_1 (USDCHF.ln,H1)   (Federal Financial Supervisory Authority (BaFin))|----->(((USDJPY),(Eurex Exchange)),((FMAN - February, May, August, and November),(1000 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Federal Financial Supervisory Authority (BaFin))|----->(((USDJPY),(Eurex Exchange)),((FMAN - February, May, August, and November),(1250 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Federal Financial Supervisory Authority (BaFin))|----->(((USDJPY),(Eurex Exchange)),((MJSD - March, June, September, and December),(1000 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Federal Financial Supervisory Authority (BaFin))|----->(((USDJPY),(Eurex Exchange)),((MJSD - March, June, September, and December),(1250 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Financial Conduct Authority (FCA))|----->(((EURUSD),(London Stock Exchange (LSE))),((JAJO - January, April, July, and October),(1000 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Financial Conduct Authority (FCA))|----->(((EURUSD),(London Stock Exchange (LSE))),((JAJO - January, April, July, and October),(1250 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Financial Conduct Authority (FCA))|----->(((EURUSD),(London Stock Exchange (LSE))),((FMAN - February, May, August, and November),(1000 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Financial Conduct Authority (FCA))|----->(((EURUSD),(London Stock Exchange (LSE))),((FMAN - February, May, August, and November),(1250 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Financial Conduct Authority (FCA))|----->(((EURUSD),(London Stock Exchange (LSE))),((MJSD - March, June, September, and December),(1000 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Financial Conduct Authority (FCA))|----->(((EURUSD),(London Stock Exchange (LSE))),((MJSD - March, June, September, and December),(1250 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Financial Conduct Authority (FCA))|----->(((USDJPY),(London Stock Exchange (LSE))),((JAJO - January, April, July, and October),(1000 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Financial Conduct Authority (FCA))|----->(((USDJPY),(London Stock Exchange (LSE))),((JAJO - January, April, July, and October),(1250 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Financial Conduct Authority (FCA))|----->(((USDJPY),(London Stock Exchange (LSE))),((FMAN - February, May, August, and November),(1000 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Financial Conduct Authority (FCA))|----->(((USDJPY),(London Stock Exchange (LSE))),((FMAN - February, May, August, and November),(1250 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Financial Conduct Authority (FCA))|----->(((USDJPY),(London Stock Exchange (LSE))),((MJSD - March, June, September, and December),(1000 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   (Financial Conduct Authority (FCA))|----->(((USDJPY),(London Stock Exchange (LSE))),((MJSD - March, June, September, and December),(1250 points)))
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   |
2023.02.21 09:57:41.079 ct_3_1 (USDCHF.ln,H1)   {(((EURUSD),(Chicago Board Options Exchange (CBOE))),((JAJO - January, April, July, and October),(1000 points))),(((EURUSD),(Chicago Board Options Exchange (CBOE))),((JAJO - January, April, July, and October),(1250 points))),(((EURUSD),(Chicago Board Options Exchange (CBOE))),((FMAN - February, May, August, and November),(1000 points))),(((EURUSD),(Chicago Board Options Exchange (CBOE))),((FMAN - February, May, August, and November),(1250 points))),(((EURUSD),(Chicago Board Options Exchange (CBOE))),((MJSD
*/

El uso de propiedades genéricas también puede facilitar el análisis de estructuras financieras complejas, como las obligaciones colateralizadas mediante deuda (CDO). Estas estructuras suelen constar de varios activos básicos, cada uno con su propio perfil de riesgo. Definiendo los activos básicos como dominios dentro de una categoría y usando propiedades genéricas para definir la estructura de las CDO, podremos desarrollar modelos más abstractos y generales que reflejen de forma más efectiva el riesgo compartido asociado con los activos básicos. Además, el concepto de propiedad universal se puede usar para desarrollar nuevos instrumentos o productos financieros definiendo las propiedades universales necesarias, en lugar de intentar crear un instrumento financiero específico desde cero. Esto puede dar lugar a productos financieros más innovadores y potentes que se adapten mejor a las necesidades de los inversores y del mercado.

      ////////////////////////////
      //PRODUCT UNIVERSAL-PROPERTY
      ////////////////////////////
      
      //EX no.2
      
      CDomain<string> _d_hedge,_d_cover,_d_postion,_d_p2_property;
      //
      CElement<string> _ep2;_ep2.Cardinality(1);
      //
      _d_hedge.Cardinality(2);
      _ep2.Set(0,"EURUSD");_d_hedge.Set(0,_ep2,true);
      _ep2.Set(0,"GBPUSD");_d_hedge.Set(1,_ep2,true);
      //
      _d_cover.Cardinality(2);
      _ep2.Set(0,"USDCHF");_d_cover.Set(0,_ep2,true);
      _ep2.Set(0,"USDJPY");_d_cover.Set(1,_ep2,true);
      //
      _d_postion.Cardinality(4);
      _ep2.Set(0,"EURCHF");_d_postion.Set(0,_ep2,true);
      _ep2.Set(0,"EURJPY");_d_postion.Set(1,_ep2,true);
      _ep2.Set(0,"GBPCHF");_d_postion.Set(2,_ep2,true);
      _ep2.Set(0,"GBPJPY");_d_postion.Set(3,_ep2,true);
      //
      printf(__FUNCSIG__+" hedge domain: "+PrintDomain(_d_hedge,0));
      printf(__FUNCSIG__+" cover domain: "+PrintDomain(_d_cover,0));
      printf(__FUNCSIG__+" postion domain: "+PrintDomain(_d_postion,0));
      
      CProduct _product_hc;
      
      GetProduct(_d_hedge,_d_cover,_product_hc,0);
      printf(__FUNCSIG__+" hedge & cover product: "+PrintDomain(_product_hc.cone,0));
      
      CProduct _product_hcp;
      
      GetProduct(_product_hc.cone,_d_postion,_product_hcp,0);
      printf(__FUNCSIG__+" hedge & cover & postion product: "+PrintDomain(_product_hcp.cone,0));
      //
      
      CDomain<double> _d_p2_eu,_d_p2_gu,_d_p2_uc,_d_p2_uj,_d_p2_ec,_d_p2_ej,_d_p2_gc,_d_p2_gj;
      _d_p2_eu.Cardinality(1);_d_p2_gu.Cardinality(1);_d_p2_uc.Cardinality(1);_d_p2_uj.Cardinality(1);
      _d_p2_ec.Cardinality(1);_d_p2_ej.Cardinality(1);_d_p2_gc.Cardinality(1);_d_p2_gj.Cardinality(1);
      
      int _eu_handle=iATR("EURUSD",_Period,__product_size);
      int _gu_handle=iATR("GBPUSD",_Period,__product_size);
      int _uc_handle=iATR("USDCHF",_Period,__product_size);
      int _uj_handle=iATR("USDJPY",_Period,__product_size);
      int _ec_handle=iATR("EURCHF",_Period,__product_size);
      int _ej_handle=iATR("EURJPY",_Period,__product_size);
      int _gc_handle=iATR("GBPCHF",_Period,__product_size);
      int _gj_handle=iATR("GBPJPY",_Period,__product_size);
      
      if
      (
      FillDomain(_d_p2_eu,0,1,_eu_handle)
      &&
      FillDomain(_d_p2_gu,0,1,_gu_handle)
      &&
      FillDomain(_d_p2_uc,0,1,_uc_handle)
      &&
      FillDomain(_d_p2_uj,0,1,_uj_handle)
      &&
      FillDomain(_d_p2_ec,0,1,_ec_handle)
      &&
      FillDomain(_d_p2_ej,0,1,_ej_handle)
      &&
      FillDomain(_d_p2_gc,0,1,_gc_handle)
      &&
      FillDomain(_d_p2_gj,0,1,_gj_handle)
      )
      {
         CElement<double> _e_eu,_e_gu,_e_uc,_e_uj,_e_ec,_e_ej,_e_gc,_e_gj;
         //
         if
         (
         _d_p2_eu.Get(0,_e_eu) && _d_p2_gu.Get(0,_e_gu) && 
         _d_p2_uc.Get(0,_e_uc) && _d_p2_uj.Get(0,_e_uj) && 
         _d_p2_ec.Get(0,_e_ec) && _d_p2_ej.Get(0,_e_ej) && 
         _d_p2_gc.Get(0,_e_gc) && _d_p2_gj.Get(0,_e_gj)
         )
         {
            _d_p2_property.Cardinality(4);
            _ep2.Set(0,DoubleToString(_e_eu.Get(0),3)+","+DoubleToString(_e_uc.Get(0),3)+","+DoubleToString(_e_ec.Get(0),3));_d_p2_property.Set(0,_ep2,true);
            _ep2.Set(0,DoubleToString(_e_gu.Get(0),3)+","+DoubleToString(_e_uc.Get(0),3)+","+DoubleToString(_e_gc.Get(0),3));_d_p2_property.Set(1,_ep2,true);
            _ep2.Set(0,DoubleToString(_e_eu.Get(0),3)+","+DoubleToString(_e_uj.Get(0),3)+","+DoubleToString(_e_ej.Get(0),3));_d_p2_property.Set(2,_ep2,true);
            _ep2.Set(0,DoubleToString(_e_gu.Get(0),3)+","+DoubleToString(_e_uj.Get(0),3)+","+DoubleToString(_e_gj.Get(0),3));_d_p2_property.Set(3,_ep2,true);
            
            //
            _product_hcp.property=_d_p2_property;
            //
            _product_hcp.universality.domain=_product_hcp.property;
            _product_hcp.universality.codomain=_product_hcp.cone;
            //
            CMorphism<string,string> _m_p2;
            _m_p2.domain=_product_hcp.property;
            _m_p2.codomain=_product_hcp.cone;
            //
            
            for(int c=0;c<_product_hcp.property.Cardinality();c++)
            {
               CElement<string> _e_property;_e_property.Cardinality(1);
               if(_product_hcp.property.Get(c,_e_property) && _e_property.Get(0)!="")
               {
                  for(int cc=0;cc<_product_hcp.cone.Cardinality();cc++)
                  {
                     CElement<string> _e_cone;_e_cone.Cardinality(1);
                     if(_product_hcp.cone.Get(cc,_e_cone) && _e_cone.Get(0)!="")
                     {
                        if(c==0)
                        {
                           if(StringFind(_e_cone.Get(0),"EURUSD")>=0&&StringFind(_e_cone.Get(0),"USDCHF")>=0&&StringFind(_e_cone.Get(0),"EURCHF")>=0)
                           {
                              if(_product_hcp.universality.Morphisms(_product_hcp.universality.Morphisms()+1))
                              {
                                 if(_m_p2.Morph(_product_hcp.property,_product_hcp.cone,_e_property,_e_cone))
                                 {
                                    if(!_product_hcp.universality.Set(_product_hcp.universality.Morphisms()-1,_m_p2))
                                    {
                                    }
                                 }
                              }
                           }
                        }
                        else if(c==1)
                        {
                           if(StringFind(_e_cone.Get(0),"GBPUSD")>=0&&StringFind(_e_cone.Get(0),"USDCHF")>=0&&StringFind(_e_cone.Get(0),"GBPCHF")>=0)
                           {
                              if(_product_hcp.universality.Morphisms(_product_hcp.universality.Morphisms()+1))
                              {
                                 if(_m_p2.Morph(_product_hcp.property,_product_hcp.cone,_e_property,_e_cone))
                                 {
                                    if(!_product_hcp.universality.Set(_product_hcp.universality.Morphisms()-1,_m_p2))
                                    {
                                    }
                                 }
                              }
                           }
                        }
                        else if(c==2)
                        {
                           if(StringFind(_e_cone.Get(0),"EURUSD")>=0&&StringFind(_e_cone.Get(0),"USDJPY")>=0&&StringFind(_e_cone.Get(0),"EURJPY")>=0)
                           {
                              if(_product_hcp.universality.Morphisms(_product_hcp.universality.Morphisms()+1))
                              {
                                 if(_m_p2.Morph(_product_hcp.property,_product_hcp.cone,_e_property,_e_cone))
                                 {
                                    if(!_product_hcp.universality.Set(_product_hcp.universality.Morphisms()-1,_m_p2))
                                    {
                                    }
                                 }
                              }
                           }
                        }
                        else if(c==3)
                        {
                           if(StringFind(_e_cone.Get(0),"GBPUSD")>=0&&StringFind(_e_cone.Get(0),"USDJPY")>=0&&StringFind(_e_cone.Get(0),"GBPJPY")>=0)
                           {
                              if(_product_hcp.universality.Morphisms(_product_hcp.universality.Morphisms()+1))
                              {
                                 if(_m_p2.Morph(_product_hcp.property,_product_hcp.cone,_e_property,_e_cone))
                                 {
                                    if(!_product_hcp.universality.Set(_product_hcp.universality.Morphisms()-1,_m_p2))
                                    {
                                    }
                                 }
                              }
                           }
                        }
                     }
                  }
               }
            }
            
            printf(__FUNCSIG__+" universal property hcp: "+PrintHomomorphism(_product_hcp.universality,0));
         }
      }
      


Ejecutando nuevamente este script, obtendremos un homomorfismo de propiedad universal que esencialmente asignará niveles de riesgo (valores ATR en este caso) a un portafolio en el dominio cónico que se ha formado como resultado de los productos de diferentes valores.

2023.02.21 20:21:53.614 ct_3_1 (USDCHF.ln,H1)   void OnStart() universal property hcp: 
2023.02.21 20:21:53.614 ct_3_1 (USDCHF.ln,H1)   
2023.02.21 20:21:53.614 ct_3_1 (USDCHF.ln,H1)   {(0.002,0.001,0.001),(0.002,0.001,0.002),(0.002,0.145,0.189),(0.002,0.145,0.258)}
2023.02.21 20:21:53.614 ct_3_1 (USDCHF.ln,H1)   |
2023.02.21 20:21:53.614 ct_3_1 (USDCHF.ln,H1)   (0.002,0.001,0.001)|----->(((EURUSD),(USDCHF)),(EURCHF))
2023.02.21 20:21:53.614 ct_3_1 (USDCHF.ln,H1)   (0.002,0.001,0.002)|----->(((GBPUSD),(USDCHF)),(GBPCHF))
2023.02.21 20:21:53.614 ct_3_1 (USDCHF.ln,H1)   (0.002,0.145,0.189)|----->(((EURUSD),(USDJPY)),(EURJPY))
2023.02.21 20:21:53.614 ct_3_1 (USDCHF.ln,H1)   (0.002,0.145,0.258)|----->(((GBPUSD),(USDJPY)),(GBPJPY))
2023.02.21 20:21:53.614 ct_3_1 (USDCHF.ln,H1)   |
2023.02.21 20:21:53.614 ct_3_1 (USDCHF.ln,H1)   {(((EURUSD),(USDCHF)),(GBPJPY)),(((EURUSD),(USDCHF)),(GBPCHF)),(((EURUSD),(USDCHF)),(EURJPY)),(((EURUSD),(USDCHF)),(EURCHF)),(((EURUSD),(USDJPY)),(GBPJPY)),(((EURUSD),(USDJPY)),(GBPCHF)),(((EURUSD),(USDJPY)),(EURJPY)),(((EURUSD),(USDJPY)),(EURCHF)),(((GBPUSD),(USDCHF)),(GBPJPY)),(((GBPUSD),(USDCHF)),(GBPCHF)),(((GBPUSD),(USDCHF)),(EURJPY)),(((GBPUSD),(USDCHF)),(EURCHF)),(((GBPUSD),(USDJPY)),(GBPJPY)),(((GBPUSD),(USDJPY)),(GBPCHF)),(((GBPUSD),(USDJPY)),(EURJPY)),(((GBPUSD),(USDJPY)),(EURCHF))}


Coproductos

En álgebra, el coproducto de dos grupos (G y H) es un dominio que contiene todos los elementos de G y H, con la operación de dominio definida de tal forma que la estructura resultante sea el dominio "más pequeño" que contenga tanto G como H. Esto se distinguirá del producto de dos dominios, que es un dominio que contiene todos los pares de elementos (g, h), donde g se encuentra en G, mientras que h se encuentra en H, con la operación de dominio definida por componentes. El coproducto es un colímite, porque es el "límite superior mínimo" de G y H en el sentido de que cualquier otro dominio que contenga tanto G como H también deberá contener un coproducto.

El coproducto de dos dominios A y B es también el tercer dominio de C, junto con dos morfismos de inclusión de A y B en C, respectivamente, de manera que para cualquier otro dominio D con dos morfismos de A y B, respectivamente, hay un morfismo único de C a D, lo que provoca el reemplazo de algunos diagramas. El coproducto también se denomina "unión disjunta" o "suma" de A y B porque captura la idea de la elección entre dos dominios diferentes. Intuitivamente, el subproducto de C será el comportamiento "alternativo" o "divergente" de A y B.

El coproducto suele cumplir las siguientes propiedades:

  • Es asociativo: (A + B) + C es isomorfo a A + (B + C).
  • Es conmutativo: A + B es isomorfo a B + A.
  • El coproducto de un dominio con el dominio original es isomorfo al propio dominio: A + 0 es isomorfo a A.
  • El coproducto de un dominio con un dominio terminal es isomorfo al propio dominio: A + 1 es isomorfo a 1.

El concepto de coproductos se puede aplicar a varias estructuras matemáticas, incluidos conjuntos, grupos, anillos y espacios vectoriales, así como a estructuras más abstractas, como los espacios topológicos y las categorías mismas. En cada caso, el coproducto reflejará la idea de una "elección" o "alternativa" entre dos dominios o estructuras, y ofrecerá una forma de razonamiento sobre el comportamiento del sistema como un todo.

Desde el punto de vista de un tráder, los coproductos en la teoría de categorías se pueden usar para modelar y analizar portafolios de inversión y pueden suponer una mejor alternativa a los métodos tradicionales de valoración de portafolios porque son una forma de agrupar dominios en una categoría donde el dominio resultante es una elección entre dominios de origen. Por ejemplo, el coproducto de dos números es su máximo. Esta propiedad se puede usar para modelar portafolios de inversión como una elección entre diferentes activos, así como para un análisis más flexible y general de la valoración de estos portafolios.

Como ejemplo, supongamos que tenemos un portafolio de inversión que contiene dos activos: acciones y bonos. Queremos analizar el valor del portafolio y cómo cambia bajo diferentes condiciones de mercado. Tradicionalmente, esto se haría utilizando métodos como el análisis de flujo de efectivo descontado o el modelo de valoración de activos de capital (CAPM). Sin embargo, usando productos complementarios en la teoría de categorías, podemos modelar un portafolio como una opción entre acciones y bonos. El dominio de coproducto resultante representará el valor del portafolio en diferentes condiciones de mercado y captará el riesgo combinado asociado con la tenencia de ambos activos.

Para simplificar, supongamos que el valor actual de una acción es de $50 y el valor actual de un bono es de $100. Podemos definir el coproducto de una acción y un bono como su máximo, que es $100. Esto significará que el valor del portafolio será de al menos $100 independientemente de las condiciones del mercado. Con este enfoque, podremos analizar el comportamiento del portafolio en varios escenarios de mercado. Por ejemplo, si el precio de la acción sube a $60 y el precio del bono permanece igual, el valor del portafolio será de $110, que es más de $60 o $100, reflejando un aumento en el precio, pero inferior al total de $160. De forma similar, si el precio del bono cae a $90 y el precio de la acción permanece igual, el valor del portafolio seguirá siendo de $100, que es más de $50 o $90, pero aún así inferior al total de $140. En general, los coproductos ofrecen un enfoque de valoración conservador y menos volátil, menos vinculado a las fluctuaciones de los precios del mercado. Por consiguiente, podremos modelar los portafolios de inversión como la elección entre diferentes activos y analizar su comportamiento de forma más flexible y general. Esto puede conducir a estrategias de valoración del portafolio a largo plazo más precisas y eficientes, y también a considerar el riesgo compartido vinculado con la tenencia de múltiples activos.

 

Los coproductos y la propiedad universal

El concepto de propiedad universal, como sucede con los productos anteriores, es una poderosa herramienta de teoría de categorías que también se puede utilizar para mejorar aún más el análisis de productos relacionados en finanzas. Asimismo, ofrece una manera formal de caracterizar la singularidad de un coproducto para un cierto tipo de isomorfismo, lo cual puede llevar a un análisis más eficiente y preciso de los portafolios de inversión. Como ejemplo, vamos a analizar un portafolio con tres activos: acciones, bonos y un fondo de inversión en bienes raíces (real estate investment trust, REIT). Podemos modelar este portafolio utilizando el coproducto de las acciones, los bonos y el REIT en la categoría de activos de inversión. El coproducto de estos tres activos puede verse como la elección entre poseer una acción, un bono o un REIT. Podemos usar la propiedad universal de los coproductos para ver cómo de única resulta esta elección para un isomorfismo. En particular, la propiedad del coproducto universal dice que para cualquier otro dominio Z y los morfismos de tres activos a Z, habrá un único morfismo de un coproducto a Z, lo cual provocará el reemplazo de algunos diagramas.

Usando la propiedad universal, podremos razonar de manera más precisa y eficiente sobre el comportamiento del coproducto. Por ejemplo, supongamos que queremos calcular el riesgo combinado vinculado con la tenencia de acciones, bonos y REIT. Podemos usar la propiedad del coproducto universal para mostrar que cualquier valor que cumpla los diagramas requeridos por la propiedad universal también deberá cumplir ciertas propiedades como la subaditividad del riesgo. Como ejemplo, digamos que una acción cuesta $50, un bono cuesta $100 y un REIT cuesta $150. Utilizando el coproducto, podemos modelar el portafolio como una elección entre estos tres activos y calcular el riesgo combinado asociado con su tenencia.

En particular, el riesgo total puede calcularse como el máximo de los riesgos individuales vinculados a cada activo. Supongamos que el riesgo vinculado con las acciones es del 10%, el riesgo vinculado con los bonos es del 5% y el riesgo vinculado con los REIT es del 8%. Utilizando el coproducto, podremos calcular el riesgo conjunto como el máximo de estos tres riesgos, que es el 10%. Ese será el riesgo vinculado al portafolio, siempre que los riesgos asociados a cada activo sean independientes. Usando la propiedad universal del coproducto, podemos razonar sobre el comportamiento del portafolio bajo varios supuestos sobre la correlación entre los riesgos asociados con cada activo. Por ejemplo, podemos usar la propiedad universal para mostrar que si los riesgos asociados con las acciones y los REIT están positivamente correlacionados, el riesgo total vinculado con su tenencia será mayor que el máximo de sus riesgos individuales.

Por lo tanto, el uso de la propiedad universal en combinación con coproductos puede ofrecer una forma más precisa y eficiente de analizar portafolios de inversión. Esto nos permitirá comprender las propiedades únicas del coproducto en relación con el isomorfismo y razonar sobre el comportamiento de un portafolio bajo varios supuestos de riesgo y correlación.


Conclusión

La teoría de categorías ofrece un potente conjunto de herramientas para analizar sistemas complejos, y sus conceptos de productos, coproductos y propiedades universales tienen importantes aplicaciones prácticas en finanzas, especialmente en el campo del comercio algorítmico. Implementando estos conceptos en MQL5, los tráders pueden lograr una comprensión más profunda del comportamiento de los mercados financieros y desarrollar estrategias comerciales más eficientes. El uso de productos y coproductos permite a los tráders razonar sobre el comportamiento conjunto o diferente de los instrumentos financieros y crear portafolios más complejos que tengan en cuenta la relación entre los activos.

La propiedad universal asegura que estas construcciones sean únicas y cumplan ciertas propiedades deseadas. Los límites y colímites hacen posible una forma más abstracta y amplia de pensar sobre el comportamiento de las secuencias de dominios y permiten a los tráders desarrollar estrategias de gestión de riesgos más complejas. En general, la aplicación de la teoría de categorías a las finanzas puede mejorar nuestra comprensión de los mercados financieros y permitir a los tráders tomar decisiones más informadas. Incorporando estos conceptos a MQL5, los tráders pueden aprovechar al máximo la teoría de categorías y desarrollar mejores estrategias comerciales basadas en una comprensión más profunda de la estructura básica de los mercados financieros.

Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/12085

Archivos adjuntos |
SignalCT3.mqh (10.76 KB)
ct_3_1.mq5 (96.41 KB)
Aprendiendo a diseñar un sistema de trading basado en el Índice de Facilitación del Mercado MFI de Bill Williams Aprendiendo a diseñar un sistema de trading basado en el Índice de Facilitación del Mercado MFI de Bill Williams
Bienvenidos a nuevo artículo de nuestra serie dedicada a la creación de sistemas comerciales basados en indicadores técnicos populares. Hoy analizaremos el Índice de Facilitación del Mercado (MFI), desarrollado por Bill Williams.
Aprendizaje automático y Data Science (Parte 11): Clasificador bayesiano ingenuo y teoría de la probabilidad en el trading Aprendizaje automático y Data Science (Parte 11): Clasificador bayesiano ingenuo y teoría de la probabilidad en el trading
Comerciar con probabilidades es como caminar por la cuerda floja: requiere precisión, equilibrio y una clara comprensión del riesgo. En el mundo del trading, la probabilidad lo es todo: es lo que determina el resultado, el éxito o el fracaso, los beneficios o las pérdidas. Usando el poder de la probabilidad, los tráders pueden tomar decisiones mejor informadas, gestionar el riesgo con mayor eficacia y alcanzar sus objetivos financieros. Tanto si es usted un inversor experimentado como un tráder principiante, comprender las probabilidades puede ser la clave para liberar su potencial comercial. En este artículo, analizaremos el fascinante mundo del trading probabilístico y le mostraremos cómo llevar su modo de comerciar al siguiente nivel.
Algoritmos de optimización de la población: Algoritmo del mono (Monkey algorithm, MA) Algoritmos de optimización de la población: Algoritmo del mono (Monkey algorithm, MA)
En este artículo analizaremos el algoritmo de optimización "Algoritmo del Mono" (MA). La capacidad de estos ágiles animales para superar obstáculos complicados y alcanzar las copas de los árboles más inaccesibles fue la base de la idea del algoritmo MA.
Algoritmos de optimización de la población: Búsqueda armónica (HS) Algoritmos de optimización de la población: Búsqueda armónica (HS)
Hoy estudiaremos y pondremos a prueba un algoritmo de optimización muy potente, la búsqueda armónica (HS), que se inspira en el proceso de búsqueda de la armonía sonora perfecta. ¿Qué algoritmo lidera ahora mismo nuestra clasificación?