Capítulo 4. Optimalidad y equilibrio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Gran parte de la teoría económica se basa en la premisa: dadas dos alternativas, un agente puede, y si puede, elegirá la preferida.

Darrell Duffie (1988)

Un análisis de cartera comienza con información relativa a valores individuales. Termina con conclusiones relativas a las carteras en su conjunto. La finalidad del análisis es encontrar las carteras que mejor se ajusten a los objetivos del inversor.

Harry Markowitz (1959)

Este capítulo trata sobre la modelización de los agentes y sus problemas de optimización. Presenta algunos de los pilares fundamentales de la teoría microeconómica (véase Varian (1992)) y de la economía financiera (véase Eichberger y Harper (1997)). El núcleo de este capítulo es el paradigma de la maximización de la utilidad esperada, que es la forma dominante de modelizar las preferencias de un agente en economía financiera. A partir de este paradigma, se discuten dos temas centrales.

En primer lugar, analizamos cómo elige un agente una cartera de inversión óptima dadas sus preferencias y la riqueza inicial. Este tipo de problema suele denominarse elección óptima de cartera. El planteamiento que presentamos aquí no se basa en ninguna forma de simplificación, como ocurre con el planteamiento de la cartera media-varianza (MVP) y el Modelo de Valoración de Activos de Capital (CAPM) que, por ejemplo, reducen el problema de la elección de carteras de inversión al primer y segundo momentos de las distribuciones de rendimientos de los activos financieros, así como a su covarianza.

En segundo lugar, mientras que los precios de los activos financieros en los dos capítulos anteriores se han dado a priori, este capítulo los deriva de principios fundamentales en el sentido de que analizala fijación de precios de los activos financieros basándose en el problema de optimización de un llamado agente representativo, además de en argumentos de equilibrio. En términos generales, puede considerarse que un agente representativo es la agregación de (infinitamente) muchos agentes que actúande forma independiente en los mercados (financieros). Las condiciones para la existencia de dicho agente representativo son bien conocidas (véase el capítulo 6 de Milne (1995)); sin embargo, no se tratan en este capítulo porque la teoría financiera en general simplemente postula laexistencia.

El capítulo actual abarca principalmente los siguientes temas de finanzas, matemáticas y programación en Python. En cuanto a Python, no se introducen muchos elementos nuevos. Los conjuntos básicos de herramientas matemáticas y de Python para hacer finanzas en modelos discretos ya se han introducido y desarrollado en los dos capítulos anteriores:

Finanzas Matemáticas Python

Preferencias y utilidad

Función de utilidad

NumPy

Maximización de la utilidad

Función objetivo, restricción presupuestaria, Teorema de Lagrange

scipy.optimize.minimize

Curvas de indiferencia, línea presupuestaria

Función

NumPy, matplotlib

Utilidad logarítmica

Logaritmo natural

NumPy, matplotlib

Utilidad aditiva al tiempo

Función de utilidad

NumPy,scipy.optimize.minimize

utilidad esperada (aditiva al tiempo)

Medida de probabilidad, Teorema de Lagrange

NumPy,scipy.optimize.minimize

Cartera de inversión óptima

Teorema de Lagrange, condiciones de primer orden

NumPy,scipy.optimize.minimize

Precios de equilibrio, agente representativo

Teorema de Lagrange, condiciones de primer orden

NumPy,scipy.optimize.minimize, SymPy

Medidas martingala en mercados incompletos

Conjunto de medidas de probabilidad

SymPy, sy.Symbol, sy.solve

Finalización del mercado por reclamaciones contingentes

Teorema de Lagrange, condiciones de primer orden

NumPy,scipy.optimize.minimize

Maximización de la utilidad

Formalmente, un agente se modela mediante una función de utilidad, que ordena un conjunto de elecciones a las que se enfrenta el agente y que es una representación de las preferencias del agente (véase el capítulo 7 de Varian (1992)). Considera la economía estática sin incertidumbre del Capítulo 2. Además, supongamos que el agente está dotado de cierta riqueza inicial,w >0 El agente puede decidir qué parte de esta riqueza gastará hoy, t = 0 y cuánto ahorrar -mediante depósitos bancarios- para el consumo futuro. Se puede pensar en un agente que se enfrenta a la cuestión de cuánto ahorrar para la jubilación.

El agente recibe hoy utilidad del dinero, c 0 y dentro de un año c 1 según la función de utilidad:

U : ≥0 2 ≥0 , ( c 0 , c 1 ) u ( c 0 , c 1 )

Como ejemplo, supongamos u ( c 0 , c 1 ) = c 0 - c 1 -expresando la idea de que el dinero de hoy y el de dentro de un año son sustitutos, aunque no perfectos (si cualquiera de los dos es cero, la utilidad también es cero). ¿Cuál es el plan óptimo de ahorro-consumo para el agente? Su problema de optimización restringida es formalmente:

max c 0 ,c 1 c 0 - c 1 s.t. c 0 + c 1 = w

Según el Teorema de Lagrange (véase el capítulo 5 de Sundaram (1996)), el problema de optimización con restricciones puede transformarse en uno sin restricciones de la forma:

max c 0 ,c 1 ,λ f ( c 0 , c 1 , λ ) = c 0 - c 1 - λ - ( c 0 + c 1 - w )

Las condiciones necesarias de primer orden para la optimalidad son:

f c 0 = c 1 - λ = 0 f c 1 = c 0 - λ = 0 f λ = c 0 + c 1 - w = 0

A partir de ellas, se deduce fácilmente c 0 = c 1 = w 2 como plan óptimo de ahorro de consumo.

Este problema de optimización puede modelarse y resolverse en Python numéricamente, para lo cual w = 10 se cumplirá:

In [1]: def u(c):
            return -c[0] * c[1]  1

In [2]: w = 10  2

In [3]: from scipy.optimize import minimize

In [4]: cons = ({'type': 'eq', 'fun': lambda c: c[0] + c[1] - w})  3

In [5]: opt = minimize(u, (1, 1), constraints=cons)  4

In [6]: opt
Out[6]:      fun: -24.999999999999996
             jac: array([-5., -5.])
         message: 'Optimization terminated successfully'
            nfev: 6
             nit: 2
            njev: 2
          status: 0
         success: True
               x: array([5., 5.])

In [7]: opt['x']  5
Out[7]: array([5., 5.])

In [8]: -opt['fun']   6
Out[8]: 24.999999999999996
1

La función de utilidad con signo negativo para lograr una maximización a través de una minimización.

2

La riqueza inicial del agente a distribuir entre el presente y el futuro.

3

La restricción presupuestaria como restricción de igualdad para la función minimize.

4

La optimización con conjetura inicial y restricción presupuestaria.

5

El plan óptimo de ahorro de consumo.

6

La máxima utilidad obtenida mediante el plan óptimo .

Curvas de indiferencia

La solución óptima del apartado anterior puede visualizarse mediante curvas de indiferencia. Una curva de indiferencia está formada por todas esas combinaciones c = ( c 0 , c 1 ) que dan la misma utilidad u ¯ . La ecuación que describe dicha curva en ( c 0 , c 1 ) es el espacio:

u ¯ = c 0 - c 1 c 1 = u ¯ c 0

La ecuación que describe la línea que representa la restricción presupuestaria es:

w = c 0 + c 1 c 1 = w - c 0

El problema de optimización se visualiza en la Figura 4-1, donde el plan óptimo viene dado por el punto, que es donde se encuentra la curva de indiferencia para u ¯ = 25 es tangente a la línea que representa la restricción presupuestaria.

En Python, esto se traduce en el siguiente código:

In [9]: def iu(u, c0):
            return u / c0  1

In [10]: def c1(c0):
             return w - c0  2

In [11]: import numpy as np
         np.set_printoptions(precision=5)

In [12]: from pylab import mpl, plt
         plt.style.use('seaborn')
         mpl.rcParams['savefig.dpi'] = 300
         mpl.rcParams['font.family'] = 'serif'

In [13]: c0 = np.linspace(1, w)  3

In [14]: plt.figure(figsize=(10, 6))
         plt.plot(c0, c1(c0), label='budget constraint', lw=3.0)
         plt.plot(c0, iu(15, c0), '--', label='$u=15$')
         plt.plot(c0, iu(25, c0), label='$u=25$')
         plt.plot(c0, iu(35, c0), '-.', label='$u=35$')
         plt.plot(opt['x'][0], opt['x'][1], 'ro', label='$c=(5, 5)$')
         plt.legend(loc=0);
1

Función para la curva de indiferencia.

2

Función de la línea presupuestaria.

3

El dominio sobre el que trazar ambos.

ftwp 0401
Figura 4-1. El problema de maximización de la utilidad

Funciones de utilidad adecuadas

En finanzas, la utilidad que un agente obtiene del dinero que tiene disponible en un momento determinado -como sustituto de cualquier otro activo real que pudiera comprarse con el dinero, por ejemplo- se expresa típicamente como una funciónu: ≥0 que se supone que cumple tres condiciones:

  1. u ( x ) es dos veces diferenciable

  2. du dx > 0

  3. d 2 u dx 2 0

La primera condición es un requisito técnico para las otras dos. La segunda condición formaliza la idea de que más dinero -en igualdad de condiciones- es mejor que menos dinero. Se supone que los agentes son insaciables. La tercera condición establece que la utilidad marginal de una unidad adicional de dinero es menor (o igual al máximo) que la utilidad marginal de la unidad marginal de dinero anterior. Por tanto, se supone que la función es creciente y (cuasi) cóncava.

Utilidad logarítmica

Esta sección introduce un tipo de función muy adecuada para los análisis financieros basados en un agente maximizador de la utilidad. Una función de este tipo -que satisface las tres condiciones de la sección anterior y que se utiliza habitualmente en finanzas para modelizar la utilidad que un agente recibe del dinero (o del consumo)- es el logaritmo natural u ( x ) = ln x . Para ello, se obtiene

  1. du dx = 1 x > 0 para x >0

  2. d 2 u dx 2 = - 1 x 2 < 0 para x >0

Python nos permite visualizar las tres funciones relevantes. NumPy se utiliza en combinación con cálculos vectorizados. La Figura 4-2 muestra el gráfico generado por el siguiente código:

In [15]: x = np.linspace(0.5, 10, 50)  1

In [16]: x[:5]  2
Out[16]: array([0.5    , 0.69388, 0.88776, 1.08163, 1.27551])

In [17]: u = np.log(x)  3

In [18]: u1 = 1 / x  4

In [19]: u2 = -1 / x ** 2  5

In [20]: plt.figure(figsize=(10, 6))  6
         plt.plot(x, u, label='$u$')  7
         plt.plot(x, u1, '--', label='$du/dx$')  8
         plt.plot(x, u2, '-.', label='$d^2u/dx^2$')  9
         plt.legend(loc=0);  10
1

Crea un objeto ndarray con números en coma flotante entre 0,5 y 10 y un espaciado homogéneo para obtener 50 valores.

2

Muestra una selección de los números resultantes.

3

Calcula los valores de la función de utilidad.

4

Y por su primera derivada, así como...

5

...por su segunda derivada.

6

Crea un nuevo lienzo para trazar y proporciona parámetros de tamaño.

7

Traza la función de utilidad.

8

Traza la primera derivada.

9

Traza la segunda derivada.

10

Coloca una leyenda en la ubicación óptima de (loc=0).

ftwp 0402
Figura 4-2. La función logaritmo natural y sus derivadas primera y segunda

Utilidad de tiempo añadido

Utilizando el logaritmo natural como función para modelizar la utilidad de un agente a partir del dinero, las preferencias de un agente sobre los planes de ahorro de consumo c = ( c 0 , c 1 ) puede describirse como una función aditiva al tiempo de la forma siguiente:

U : ≥0 2 , ( c 0 , c 1 ) ln c 0 + κ - ln c 1

κ ≥0 se supone que toma los valores 0 < κ 1 y representa la preferencia temporal del agente. Encarna la idea de que el dinero y el consumo hoy se valoran más que dentro de un año. Al menos débilmente, 100 USD ahora son preferibles a 100 USD dentro de un año, independientemente de la función exacta que describa la utilidad (suponiendo la coherencia de las preferencias a lo largo del tiempo). Puede considerarse como un factor de descuento no monetario. Es fácil comprobar que esta función satisface las tres condiciones descritas anteriormente -es dos vecesdiferenciable, creciente y cóncava- basándose en las derivadas parciales con respecto tanto a c 0 y c 1 .

Si el agente tiene una riqueza inicial de w su problema de optimización restringida es

max c 0 ,c 1 ln c 0 + κ - ln c 1 s.t. c 0 + c 1 = w

o

max c 0 ,c 1 ,λ f ( c 0 , c 1 , λ ) = ln c 0 + κ - ln c 1 - λ - ( c 0 + c 1 - w )

Las condiciones necesarias de primer orden para la optimalidad son:

f c 0 = 1 c 0 - λ = 0 f c 1 = κ - 1 c 1 - λ = 0 f λ = c 0 + c 1 - w = 0

De ellas se obtiene:

1 c 0 = κ - 1 c 1 c 1 = κ - c 0

El plan óptimo de ahorro de consumo refleja ahora la preferencia temporal en que el consumo en un año c 1 se fija en κ - c 0 . También se cumple

c 0 + κ - c 0 = w c 0 = w 1+κ

y

w 1+κ + c 1 = w c 1 = κ-w 1+κ

La restricción presupuestaria es vinculante:

w 1+κ + κ-w 1+κ = w+κ-w 1+κ = w

El código siguiente resuelve numéricamente el problema de optimización para w = 10 . El plan óptimo refleja la preferencia temporal:

In [21]: import math

In [22]: from scipy.optimize import minimize

In [23]: kappa = 10 / 11

In [24]: def U(c):
             return -(math.log(c[0]) +  kappa * math.log(c[1]))  1

In [25]: w = 10

In [26]: cons = ({'type': 'eq', 'fun': lambda c: c[0] + c[1] - w})  2

In [27]: opt = minimize(U, (1, 1), constraints=cons)

In [28]: opt
Out[28]:      fun: -3.0747286083026886
              jac: array([-0.19091, -0.19091])
          message: 'Optimization terminated successfully'
             nfev: 18
              nit: 6
             njev: 6
           status: 0
          success: True
                x: array([5.23811, 4.76189])

In [29]: opt['x']  3
Out[29]: array([5.23811, 4.76189])

In [30]: -opt['fun']  4
Out[30]: 3.0747286083026886
1

La función de utilidad con signo negativo para lograr una maximización a través de una minimización.

2

La restricción presupuestaria como restricción de igualdad para la función minimize.

3

El plan óptimo de ahorro de consumo, que refleja la preferencia temporal en que c 0 es mayor que c 1 -exactamente en un 10%.

4

La máxima utilidad obtenida a través de el plan óptimo.1

Utilidad esperada

Ahora considera la economía estática de dos estados con incertidumbre. Supongamos que un agente, dotado de cierta riqueza inicialw >0 , obtiene utilidad sólo a través del dinero disponible en un año, pero ahora distinguido en los dos estados que son posibles entonces. Esto representará un problema de inversión puro en el que toda la riqueza inicial disponible se invertirá de forma óptima en los activos financieros negociados.

Supongamos que se negocian dos activos financieros, un bono sin riesgo con proceso de precios

B = B 0 , (B 1 ,B 1 ) T

y una acción de riesgo con un proceso de precios

S = S 0 , (S 1 u ,S 1 d ) T

Los activos financieros son un medio para transferir la riqueza inicial de hoy a un momento posterior. El principal problema de decisión del agente es decidir qué consumir en cualquiera de los estados futuros.

Un modelo para el problema de inversión al que se enfrenta el agente en condiciones de incertidumbre viene dado por la utilidad esperada del agente que hay que maximizar dada w . La función de utilidad esperada viene dada por:

U : ≥0 2 , c 1 𝐄 P ( u ( c 1 ) )

Con el vector precio 0 = (B 0 ,S 0 ) T , el agente puede distribuir su riqueza inicial según

0 - ϕ = w B 0 - b + S 0 - s = w

dondeϕ=(b,s) T ≥0 2 representa la cartera compuesta por el bono sin riesgo y la acción con riesgo, tal y como la compone el agente. Esta restricción presupuestaria siempre será vinculante debido a que el agente es insaciable. No se permitirán las ventas en corto.

La matriz de retribución del mercado es como sigue:

= B 1 S 1 u B 1 S 1 d

¿De cuánto dinero dispone el agente en cualquiera de los dos estados dentro de un año? Esto lo determina la cartera que elija componer el agente:

c 1 = - ϕ = B 1 B 1 - b + S 1 u S 1 d - s

Esto conduce a

c 1 = b - B 1 + s - S 1 u b - B 1 + s - S 1 d

o

c 1 u = b - B 1 + s - S 1 u c 1 d = b - B 1 + s - S 1 d

El problema completo de toma de decisiones -con respecto a la elección de la cartera óptima-del agente puede representarse entonces como el siguiente problema de optimización con restricciones:

max c 1 𝐄 P ( u ( c 1 ) ) (i) w = 0 - ϕ (ii) c 1 = - ϕ

o después de sustituir c 1

max ϕ 𝐄 P ( u ( - ϕ ) ) w = 0 - ϕ

Según el Teorema de Lagrange, se puede transformar este problema en un problema de optimización sin restricciones de la forma

max b,s,λ f ( b , s , λ ) = 𝐄 P u ( b - B 1 + s - S 1 ) - λ - ( b - B 0 + s - S 0 - w )

donde el agente elige b y s para maximizar la utilidad esperada dada larestricción presupuestaria.

Teoría de la utilidad esperada

Décadas después de su formulación e introducción, la teoría de la utilidad esperada (TUE) sigue siendo el paradigma dominante de la toma de decisiones en finanzas. Uno de sus principales supuestos -que los agentes tienen pleno conocimiento de los posibles estados futuros y sus probabilidades- casi nunca se cumple en la realidad. Sin embargo, el EUT es, para muchos, intelectualmente atractivo y conduce a resultados "bonitos" que a menudo son fáciles de entender e interpretar. Para más información sobre los problemas de este paradigma central de las finanzas , véase Hilpisch (2020, capítulos 3 y 4).

Cartera de inversión óptima

¿Qué aspecto tiene una solución óptima para el agente maximizador de la utilidad esperada? En términos generales, la respuesta puede darse basándose en las condiciones de primer orden que son necesarias y suficientes aquí para una solución óptima:

f b = 0 f s = 0 f λ = 0

o

f b = p - B 1 - u ' b - B 1 + s - S 1 u + ( 1 - p ) - B 1 - u ' b - B 1 + s - S 1 d - λ - B 0 = 0

y

f s = p - S 1 u - u ' b - B 1 + s - S 1 u + ( 1 - p ) - S 1 d - u ' b - B 1 + s - S 1 d - λ - S 0 = 0

con la notación habitual u ' ( x ) du dx así como

b - B 0 + s - S 0 = w

Supongamos una utilidad logarítmica y para los procesos de precios de los dos activos financieros negociados B = ( 10 , 11 ) y S = 10 , (20,5) T respectivamente. Con w = 10 se cumple b + s = 1 de forma que las posiciones de la cartera representen valores porcentuales.

En Python, la función minimize del subpaquete scipy.optimize también es adecuada para resolver el problema de inversión del agente:

In [31]: B = (10, (11, 11))  1

In [32]: S = (10, (20, 5))  2

In [33]: M0 = np.array((B[0], S[0]))  3

In [34]: M = np.array((B[1], S[1])).T  4

In [35]: p = 0.5  5

In [36]: P = np.array((p, 1-p))  5

In [37]: def U(phi):
             c1 = np.dot(M, phi)  6
             return -np.dot(P, np.log(c1))  6

In [38]: -U((1, 0))  7
Out[38]: 2.3978952727983707

In [39]: -U((0, 1))  7
Out[39]: 2.3025850929940455

In [40]: -U((0.5, 0.5))  7
Out[40]: 2.410140782802518

In [41]: w = 10

In [42]: cons = ({'type': 'eq',
                  'fun': lambda phi: np.dot(M0, phi) - w})  8

In [43]: opt = minimize(U, (1, 1), constraints=cons)  9

In [44]: opt
Out[44]:      fun: -2.4183062699261972
              jac: array([-1.     , -0.99999])
          message: 'Optimization terminated successfully'
             nfev: 15
              nit: 5
             njev: 5
           status: 0
          success: True
                x: array([0.69442, 0.30558])

In [45]: opt['x']  10
Out[45]: array([0.69442, 0.30558])

In [46]: -opt['fun']  11
Out[46]: 2.4183062699261972

In [47]: -U(opt['x'])  11
Out[47]: 2.4183062699261972

In [48]: np.dot(M, opt['x'])  12
Out[48]: array([13.75022,  9.16652])
1

El proceso del precio de los bonos y...

2

...el proceso de cotización de las acciones.

3

El vector de precios de los dos activos financieros negociados.

4

La matriz de pagos de mercado de los dos activos financieros negociados.

5

La medida de probabilidad física de la economía.

6

La función de utilidad esperada con utilidad logarítmica.

7

Algunos valores de ejemplo para las ponderaciones totales de la cartera de 1-la diversificación merece la pena.

8

La restricción presupuestaria basada en el producto punto de losvectores precio y cartera.

9

El problema de maximización de la utilidad esperada como minimización.

10

La asignación óptima entre el bono y la acción.

11

El valor óptimo de utilidad esperada.

12

El beneficio contingente del estado de la cartera óptima .

Utilidad Esperada Aditiva en el Tiempo

Es posible formular el problema de toma de decisiones del agente para que incluya también la utilidad del dinero hoy:

U : R 0 × 0 , ( c 0 , c 1 ) u ( c 0 ) + κ - 𝐄 P ( u ( c 1 ) )
U : R ≥0 × ≥0 , ( c 0 , c 1 ) u ( c 0 ) + κ - 𝐄 P ( u ( c 1 ) )

Con la riqueza inicial w el problema de optimización sin restricciones pasa a ser

max c 0 ,b,s,λ f ( c 0 , b , s , λ ) = u ( c 0 ) + κ - 𝐄 P u ( b - B 1 + s - S 1 ) - λ - ( c 0 + b - B 0 + s - S 0 - w )

Con las suposiciones de antes, la solución óptima se obtiene con Python según el código siguiente:

In [49]: M0 = np.array((1, B[0], S[0]))  1

In [50]: kappa = 10 / 11  2

In [51]: def U(phi):
             c0 = phi[0]  3
             c1 = np.dot(M, phi[1:])  3
             return -(np.log(c0) + kappa * np.dot(P, np.log(c1)))  3

In [52]: opt = minimize(U, (1, 1, 1), constraints=cons)

In [53]: opt
Out[53]:      fun: -3.1799295980286093
              jac: array([-0.19088, -1.90932, -1.90974])
          message: 'Optimization terminated successfully'
             nfev: 32
              nit: 8
             njev: 8
           status: 0
          success: True
                x: array([5.23899, 0.33087, 0.14523])

In [54]: -opt['fun']
Out[54]: 3.1799295980286093

In [55]: opt['x'][0]  4
Out[55]: 5.23898714830318

In [56]: np.dot(M, opt['x'][1:])  5
Out[56]: array([6.54422, 4.36571])
1

El vector de precios incluye el precio de 1 para el consumo de hoy.

2

El factor de preferencia temporal.

3

La función de utilidad esperada teniendo en cuenta el consumo actual y la preferencia temporal.

4

Esto es lo que el agente consume hoy de w .

5

Este es el pago contingente del bono y la acción posición.

Fijación de precios en mercados completos

En esta sección , el análisis se cambia a un entorno de fijación de precios basado en principios de optimización. Supongamos que los dos valores de Arrow-Debreu se negocian en la economía con dos estados futuros y que la oferta neta de ambos es uno. Los dos vectores de retribución forman una base estándar para 2 y la matriz de retribución del mercado es

= 1 0 0 1

Supongamos ahora que hay un agente representativo en la economía que es el único que negocia los dos valores. En un equilibrio, el agente representativo necesita tener la oferta neta de ambos valores porque no hay nadie más. El mecanismo que garantiza el equilibrio son los precios actuales de los dos valores, es decir, el vector de precios:

0 = (γ u ,γ d ) T ≥0 2

La idea de la fijación de precios de equilibrio es que este vector de precios debe ajustarse de forma que el agente representativo posea la oferta neta de todos los activos financieros disponibles. Esto se debe a que, de lo contrario, no habría equilibrio.

Con la cartera de inversiones ϕ = ϕ u ,ϕ d T el problema del agente representativo maximizador de la utilidad esperada es

max ϕ 𝐄 P ( u ( - ϕ ) ) s.t. 0 - ϕ = w

o

max ϕ,λ 𝐄 P ( u ( - ϕ ) ) - λ - ( 0 - ϕ - w )

Debido a la matriz especial de retribución del mercado, esto se traduce en

max ϕ u ,ϕ d p - u ϕ u + ( 1 - p ) - u ϕ d s.t. γ u - ϕ u + γ d - ϕ d = w

y

max ϕ u ,ϕ d ,λ f ( ϕ u , ϕ d , λ ) = p - u ϕ u + ( 1 - p ) - u ϕ d - λ - γ u - ϕ u + γ d - ϕ d - w

Las tres condiciones de primer orden para el problema sin restricciones son:

f ϕ u = p - u ' ( ϕ u ) - λ - γ u = 0 f ϕ d = ( 1 - p ) - u ' ( ϕ d ) - λ - γ d = 0 f λ = γ u - ϕ u + γ d - ϕ d - w = 0

Qué consecuencias para los precios 0 se derivan de estas condiciones de optimalidad? La primera es con respecto a el precio relativo de los dos valores Arrow-Debreu:

γ u γ d = p-u ' (ϕ u ) (1-p)-u ' (ϕ d )

El precio relativo está totalmente determinado por las probabilidades de que se produzcan los dos estados y las utilidades marginales obtenidas del consumo en los dos estados. Teniendo en cuenta que en equilibrio ϕ u = ϕ d = 1 debe cumplirse, el precio relativo viene determinado únicamente por la medida de probabilidad:

γ u γ d = p (1-p)

Con esta condición adicional, también se obtiene:

γ u + γ d = w

Mientras que en este caso el precio relativo viene determinado por la medida de probabilidad, los precios absolutos de vienen determinados por la riqueza inicial disponible. Esto es intuitivamente atractivo en el sentido de que los precios deberían ser más altos cuanta más riqueza inicial exista, dado que la oferta neta de dos valores es fija.

Normalizando la riqueza inicial a w = 1 por ejemplo, fija los precios mediante

γ u = 1 - γ d

para llegar finalmente a los precios de equilibrio de

γ u = p γ d = 1 - p

o el vector de precios de equilibrio 0 * = (p,1-p) T .

Precios de arbitraje

Lo que sobre los precios de arbitraje de los créditos contingentes dado el vector de precios de equilibrio 0 * ? En los mercados completos, en los que toda demanda contingente es alcanzable, el precio de toda demanda contingente alcanzableC 1 𝔸= ≥0 2 viene dada entonces por:

C 0 = 0 * - C 1 = γ u - C 1 u + γ d - C 1 d

Esto se debe a que la cartera de réplica es simplemente el propio pago contingente de estado ϕ = C 1 en el caso especial de dos valores Arrow-Debreu. Por tanto, los precios de los valores Arrow-Debreu también se denominan precios de estado, porque representan el precio de una unidad de moneda (consumo) en un determinado estado.

Precios Martingala

¿Cómo se ve la medida martingala única para la economía actual? La condición para la medida martingala Q es que hace que todos los procesos de precios descontados de los activos financieros negociados sean una martingala. En forma matricial, las condiciones son:

0 * = 1 1+i - 𝐄 Q ( )

Más explícitamente, se obtiene:

p - ( 1 + i ) = q ( 1 - p ) - ( 1 + i ) = 1 - q

De estos, i = 0 y también q = p . La medida física de la probabilidad hace que todas las probabilidades sean ya una martingala. Al revés, los precios de los dos valores Arrow-Debreu se fijan en equilibrio de forma que los procesos de precios descontados son martingalas.

Todo derecho contingente alcanzable C 1 𝔸 puede valorarse simplemente tomando la expectativa bajo la medida de probabilidad física en este tipo especial de economía de agente representativo. Formalmente, esto se traduce en

C 0 = 𝐄 P ( C 1 )

Tipo de interés sin riesgo

¿Por qué el tipo de interés de equilibrio sin riesgo es cero? La respuesta es muy sencilla: porque no se negocia ningún activo financiero sin riesgo que fije otro tipo de interés. Considera un activo financiero sin riesgo que pague 1 en cada estado B 1 = (1,1) T . El precio de arbitraje de este activo financiero es

B 0 = 0 * - B 1 = p + ( 1 - p ) = 1

lo que implica un tipo de interés sin riesgo de i = 0 . Cualquier otro precio 0 < B 0 < 1 que implica un tipo de interés sin riesgo positivo, también implicaría oportunidades de arbitraje.

Un ejemplo numérico (I)

El análisis de los precios de equilibrio realizado hasta ahora se basa en una serie de supuestos simplificadores que permiten soluciones elegantes y relaciones sencillas. Consideremos ahora un caso con los supuestos numéricos, en cierto modo más realistas, utilizados en múltiples ocasiones anteriormente.

En concreto, asume la maximización de la utilidad esperada basada en la utilidad logarítmica para el agente representativo. Supongamos además procesos de precios para el bono sin riesgo de

B = B 0 , (11,11) T

y para las existencias de riesgo de

S = S 0 , (20,5) T

En consecuencia, la matriz de retribución del mercado es

= 11 20 11 5

La medida de probabilidad física viene dada por P = p,(1-p) T con p = 1 3 . La oferta neta del bono sin riesgo es b = 1 y es s = 1 para la acción de riesgo. La riqueza inicial de que dispone el agente será w = 15 .

El problema del agente representativo es

max ϕ,λ f ( ϕ , λ ) = 𝐄 P u ( - ϕ ) - λ - 0 - ϕ - w

o

max b,s,λ f ( b , s , λ ) = 𝐄 P u ( b - B 1 + s - S 1 ) - λ - b - B 0 + s - S 0 - w

Las tres condiciones de primer orden son:

f b = 𝐄 P B 1 - u ' ( b - B 1 + s - S 1 ) - λ - B 0 = 0 f s = 𝐄 P S 1 - u ' ( b - B 1 + s - S 1 ) - λ - S 0 = 0 f λ = b - B 0 + s - S 0 - w = 0

El precio relativo para de los dos activos financieros según las condiciones de optimalidad -y teniendo en cuenta la oferta neta de uno para ambos activos financieros, así como la utilidad logarítmica- es:

S 0 B 0 = 𝐄 P S 1 -u ' (b-B 1 +s-S 1 ) 𝐄 P B 1 -u ' (b-B 1 +s-S 1 ) = 𝐄 P S 1 B 1 +S 1 𝐄 P B 1 B 1 +S 1 ζ

Añadir la restricción presupuestaria a la mezcla no sólo fija el precio relativo ζ sino también los niveles de precios absolutos de :

B 0 + ζ - B 0 = w B 0 = w 1+ζ

En Python, estas consideraciones se traducen en sencillas operaciones vectorizadas utilizando NumPy:

In [57]: p = 1 / 3  1

In [58]: P = np.array((p, (1-p)))  1

In [59]: B1 = np.array((11, 11))

In [60]: S1 = np.array((20, 5))

In [61]: zeta = np.dot(S1 / (B1 + S1), P) / np.dot(B1 / (B1 + S1), P)  2

In [62]: zeta  2
Out[62]: 0.7342657342657343

In [63]: w = 15  3

In [64]: B0 = w / (1 + zeta)  4

In [65]: B0  4
Out[65]: 8.649193548387098

In [66]: S0 = zeta * B0  5

In [67]: S0  5
Out[67]: 6.350806451612904

In [68]: B0 + S0  6
Out[68]: 15.000000000000002

In [69]: i = B1.mean() / B0 - 1  7

In [70]: i  7
Out[70]: 0.2717948717948717

In [71]: mu = np.dot(S1, P) / S0 - 1  8

In [72]: mu  8
Out[72]: 0.5746031746031743
1

La medida de probabilidad.

2

La relación de precios zeta dadas las condiciones de optimalidad.

3

La riqueza inicial.

4

El nivel de precios de equilibrio del bono sin riesgo dada la relación de precios zeta y la riqueza inicial w.

5

El nivel de precios de equilibrio resultante del stock de riesgo.

6

La restricción presupuestaria es vinculante.

7

El tipo de interés de equilibrio dado el nivel de precios del bono sin riesgo.

8

La tasa de rendimiento esperada de equilibrio de la acción de riesgo.

La fijación de precios de equilibrio no conduce en este caso a que los procesos de precios descontados sean martingalas bajo la medida de probabilidad física. Sin embargo, la medida martingala se deduce fácilmente de. El análisis utiliza el paquete SymPy para cálculos simbólicos con Python:

In [73]: import sympy as sy  1

In [74]: q = sy.Symbol('q')  2

In [75]: eq = (q * 20 + (1 - q) * 5) / (1 + i) - S0  3

In [76]: eq  4
Out[76]: 11.7943548387097*q - 2.41935483870968

In [77]: q = sy.solve(eq)[0]  5

In [78]: q  6
Out[78]: 0.205128205128205

In [79]: Q = np.array((q, 1 - q))  6

In [80]: np.dot(B1, Q) / (1 + i)  7
Out[80]: 8.64919354838710

In [81]: np.dot(S1, Q) / (1 + i)  7
Out[81]: 6.35080645161290
1

Importa el paquete de cálculo simbólico SymPy.

2

Definición del símbolo q.

3

Formulación de la ecuación para q dada la condición de martingala.

4

La ecuación simplificada.

5

Así se resuelve numéricamente la ecuación.

6

La medida martingala resultante.

7

Ambos procesos de precios descontados son martingalas bajo Q.

Fijación de precios en mercados incompletos

¿Cómo funciona la fijación de precios por el agente representativo en los mercados incompletos? Afortunadamente, la respuesta es: exactamente igual que en los mercados completos.

Supongamos la economía de dos fechas y tres estados en la que un bono sin riesgo con proceso de precios

B = B 0 , (11,11,11) T

y una acción de riesgo con un proceso de precios

S = S 0 , (20,10,5) T

se negocian. La medida de probabilidad física es P = (p,p,p) T con p = 1 3 . Todo lo demás será como en la sección anterior.

Formalmente, el problema de optimización del agente representativo no cambia:

max b,s,λ f ( b , s , λ ) = 𝐄 P u ( b - B 1 + s - S 1 ) - λ - b - B 0 + s - S 0 - w

Tampoco cambia la fórmula del precio relativo:

S 0 B 0 = 𝐄 P S 1 B 1 +S 1 𝐄 P B 1 B 1 +S 1 ζ

En Python, sólo hay que ajustar los vectores de precios futuros de los activos financieros y el vector que representa la medida de probabilidad:

In [82]: p = 1 / 3  1

In [83]: P = np.array((p, p, p))  1

In [84]: B1 = np.array((11, 11, 11))

In [85]: S1 = np.array((20, 10, 5))

In [86]: zeta = np.dot(S1 / (B1 + S1), P) / np.dot(B1 / (B1 + S1), P)  2

In [87]: zeta  2
Out[87]: 0.9155274934101636

In [88]: w = 15  3

In [89]: B0 = w / (1 + zeta)  4

In [90]: B0  4
Out[90]: 7.8307411674347165

In [91]: S0 = zeta * B0  5

In [92]: S0  5
Out[92]: 7.169258832565284

In [93]: B0 + S0  6
Out[93]: 15.0

In [94]: i = B1.mean() / B0 - 1  7

In [95]: i  7
Out[95]: 0.40472016183411985

In [96]: mu = np.dot(S1, P) / S0 - 1  8

In [97]: mu  8
Out[97]: 0.6273183796451287
1

La medida de probabilidad.

2

El precio relativo zeta dadas las condiciones de optimalidad.

3

La riqueza inicial.

4

El nivel de precios de equilibrio del bono sin riesgo dada la relación de precios zeta y la riqueza inicial w.

5

El nivel de precios de equilibrio resultante del stock de riesgo.

6

La restricción presupuestaria es vinculante.

7

El tipo de interés de equilibrio dado el nivel de precios del bono sin riesgo.

8

La tasa de rendimiento esperada de equilibrio de la acción de riesgo.

Precios para agentes representativos

La fijación de precios de los valores basada en el cálculo de optimización de un agente representativo es un enfoque que se aplica tanto a los mercados completos como a los incompletos. En lugar de ajustar los mercados -por ejemplo, mediante la compleción del mercado basada en valores adicionales-, se hacen suposiciones adicionales con respecto al agente representativo. Por ejemplo, se requiere la riqueza inicial del agente para llegar a precios específicos y absolutos de los valores, en lugar de sólo precios relativos.

Medidas Martingala

Aunque la fijación de precios del agente representativo funciona en los mercados incompletos igual que en los completos, lamentablemente no resuelve directamente el problema de la fijación de precios de las demandas contingentes que no son alcanzables. Siguen existiendo infinitas medidas martingala que son coherentes con el mercado.

El código Python que sigue muestra que hay infinitas medidas martingala que son coherentes con los procesos de precios de equilibrio derivados en la sección anterior:

In [98]: qu = sy.Symbol('qu')  1
         qm = sy.Symbol('qm')  1

In [99]: eq = (qu * 20 + qm * 10 + (1 - qu - qm) * 5) / (1 + i) - S0  2

In [100]: eq  3
Out[100]: 3.55942780337942*qm + 10.6782834101383*qu - 3.60983102918587

In [101]: Q = sy.solve(eq, set=True)  4

In [102]: Q  5
Out[102]: ([qm], {(1.01416048550236 - 3.00000000000001*qu,)})
1

Definición de los símbolos qu y qm.

2

Formulación de la ecuación para qu y qm dada la condición de martingala.

3

La ecuación simplificada.

4

Esto resuelve la ecuación numéricamente, proporcionando como resultado un conjunto de soluciones; esto no tiene en cuenta las condiciones 0 q u , q d 1 .

5

La relación entre qu y qm como solución-indica infinitas soluciones.

Medida Martingala en Mercados Incompletos

La fijación de precios martingala es un enfoque cómodo y elegante en los mercados completos para valorar las reclamaciones contingentes. En los mercados incompletos, en general hay infinitas medidas martingala que son coherentes con el mercado. En la práctica, a menudo se resuelve este problema basándose en los precios de mercado observados públicamente para los derechos contingentes que se negocian con liquidez, como las opciones de compra o venta europeas plain vanilla. Estos precios se utilizan para calibrar los parámetros del modelo o la medida de martingala directamente para que sean coherentes con el mercado. Para más información de fondo y detalles sobre la calibración del modelo, véase Hilpisch (2015).

Precios de equilibrio

¿Qué acerca de la fijación del precio de los créditos contingentes? Si son alcanzables mediante carteras de réplica compuestas por activos financieros negociados, su precio puede fijarse mediante el argumento de arbitraje habitual. ¿Y si un derecho contingente no es alcanzable? En el escenario simple de mercado incompleto que se investiga actualmente, esto sólo puede significar que el vector de pagos es linealmente independiente de los dos vectores de precios futuros de los activos financieros negociados. Esto implica, a su vez, que la introducción de un derecho contingente con un vector de retribución de este tipo completa el mercado, porquetres vectores linealmente independientes forman en cualquier caso una base de 3 .

Considera la matriz de retribución de mercado de los dos primeros valores Arrow-Debreu, cada uno disponible con una oferta neta de uno:

= 1 0 0 1 0 0

Este mercado está obviamente incompleto porque los dos valores no abarcan 3 . Introduciendo un crédito contingente con una oferta neta de uno que paga una unidad de moneda en el d es decir, un derecho contingente que paga exactamente lo que pagaría el tercer valor de Arrow-Debreu, completa el mercado según la matriz de pagos resultante:

= 1 0 0 0 1 0 0 0 1

Los tres vectores de retribución forman ahora una base estándar del 3 .

Formalmente, el problema de optimización del agente representativo es el mismo que antes:

max ϕ 𝐄 P ( u ( - ϕ ) ) s.t. 0 - ϕ = w

Toma, 0 = γ u ,γ m ,γ d T como el vector de precios del estado y ϕ = (1,1,1) T como cartera de mercado.

En forma explícita, el problema de optimización sin restricciones según el Teorema de Lagrange es:

max ϕ u ,ϕ m ,ϕ d ,λ f ( ϕ u , ϕ m , ϕ d , λ ) = p u - u ϕ u + p m - u ϕ m + p d - u ϕ d - λ - γ u - ϕ u + γ m - ϕ m + γ d - ϕ d - w

Las cuatro condiciones de primer orden para el problema sin restricciones son:

f ϕ u = p u - u ' ( ϕ u ) - λ - γ u = 0 f ϕ m = p m - u ' ( ϕ m ) - λ - γ m = 0 f ϕ d = p d - u ' ( ϕ d ) - λ - γ d = 0 f λ = γ u - ϕ u + γ m - ϕ m + γ d - ϕ d - w = 0

Por los precios relativos, se obtiene:

γ u γ m = p u -u ' (ϕ u ) p m -u ' (ϕ m ) γ u γ d = p u -u ' (ϕ u ) p d -u ' (ϕ d )

A través de ellos, también se fija el tercer precio relativo. Con una utilidad logarítmica y una riqueza inicial fijada en w = 1 se llega finalmente, en este caso especial, a

γ u = p u γ m = p m γ d = p d

El vector de precios de equilibrio es 0 * = (p u ,p m ,p d ) T que es igual al vector que representa la medida de probabilidad. Esto implica, a su vez, que todos los procesos de precios descontados son martingales bajo la medida de probabilidad física.

Un ejemplo numérico (II)

Volviendo al ejemplo numérico de antes: supongamos la maximización de la utilidad esperada basada en la utilidad logarítmica para el agente representativo. Supongamos además procesos de precios para el bono sin riesgo de

B = B 0 , (11,11,11) T

y para las existencias de riesgo de

S = S 0 , (20,10,5) T

La matriz de retribución del mercado es

= 11 20 11 10 11 5

La medida de probabilidad física viene dada por P = p,p,p T con p = 1 3 . La oferta neta del bono sin riesgo es b = 1 y es s = 1 para la acción de riesgo. La riqueza inicial de que dispone el agente será w = 15 .

Se introduce un crédito contingente con una retribución C 1 = (5,0,0) T y una oferta neta de c = 1 .

En consecuencia, el problema del agente representativo es:

max ϕ,λ f ( ϕ , λ ) = 𝐄 P u ( - ϕ ) - λ - 0 - ϕ - w

o

max b,s,c,λ f ( b , s , λ ) = 𝐄 P u ( b - B 1 + s - S 1 + c - C 1 ) - λ - b - B 0 + s - S 0 + c - C 0 - w

Las cuatro condiciones de primer orden son:

f b = 𝐄 P B 1 - u ' ( b - B 1 + s - S 1 + c - C 1 ) - λ - B 0 = 0 f s = 𝐄 P S 1 - u ' ( b - B 1 + s - S 1 + c - C 1 ) - λ - S 0 = 0 f c = 𝐄 P C 1 - u ' ( b - B 1 + s - S 1 + c - C 1 ) - λ - C 0 = 0 f λ = b - B 0 + s - S 0 + c - C 0 - w = 0

Los precios relativos de los tres activos financieros se fijan mediante:

S 0 B 0 = 𝐄 P S 1 B 1 +S 1 +C 1 𝐄 P B 1 B 1 +S 1 +C 1 ζ 1 C 0 B 0 = 𝐄 P C 1 B 1 +S 1 +C 1 𝐄 P B 1 B 1 +S 1 +C 1 ζ 2

Añadiendo la restricción presupuestaria a la mezcla fija no sólo los precios relativos ζ 1 y ζ 2 sino también los niveles de precios absolutos:

B 0 + ζ 1 - B 0 + ζ 2 - B 0 = w B 0 = w 1+ζ 1 +ζ 2

Los ajustes en el código Python son menores en comparación con el caso de los mercados completos:

In [103]: p = 1 / 3  1

In [104]: P = np.array((p, p, p))  1

In [105]: B1 = np.array((11, 11, 11))  2

In [106]: S1 = np.array((20, 10, 5))  2

In [107]: C1 = np.array((5, 0, 0))  2

In [108]: zeta_1 = (np.dot(S1 / (B1 + S1 + C1), P) /
                    np.dot(B1 / (B1 + S1 + C1), P))  3

In [109]: zeta_1  3
Out[109]: 0.8862001308044474

In [110]: zeta_2 = (np.dot(C1 / (B1 + S1 + C1), P) /
                    np.dot(B1 / (B1 + S1 + C1), P))  4

In [111]: zeta_2  4
Out[111]: 0.09156311314584695

In [112]: w = 15  5

In [113]: B0 = w / (1 + zeta_1 + zeta_2)  6

In [114]: B0  6
Out[114]: 7.584325396825396

In [115]: S0 = zeta_1 * B0  7

In [116]: S0  7
Out[116]: 6.721230158730158

In [117]: C0 = zeta_2 * B0  8

In [118]: C0  8
Out[118]: 0.6944444444444443

In [119]: B0 + S0 + C0  9
Out[119]: 14.999999999999998

In [120]: i = B1.mean() / B0 - 1  10

In [121]: i  10
Out[121]: 0.45035971223021587

In [122]: muS = np.dot(S1, P) / S0 - 1  11

In [123]: muS  11
Out[123]: 0.7357933579335794

In [124]: muC = np.dot(C1, P) / C0 - 1  12

In [125]: muC  12
Out[125]: 1.4000000000000004
1

La medida de probabilidad.

2

Los vectores de retribución.

3

El primer precio relativo.

4

El segundo precio relativo.

5

La riqueza inicial...

6

...y el precio resultante para el bono sin riesgo.

7

El precio de equilibrio de la acción de riesgo.

8

El precio de equilibrio del derecho contingente.

9

La restricción presupuestaria es vinculante.

10

El tipo de interés sin riesgo.

11

La tasa de rendimiento esperada de equilibrio para la acción de riesgo.

12

La tasa de rendimiento esperada de equilibrio para el derecho contingente.

Que la introducción del derecho contingente -como un tercer activo financiero negociado- completa el mercado puede verse por el hecho de que ahora existe una única medida martingala:

In [126]: M = np.array((B1, S1, C1)).T  1

In [127]: M  1
Out[127]: array([[11, 20,  5],
                 [11, 10,  0],
                 [11,  5,  0]])

In [128]: M0 = np.array((B0, S0, C0))  2

In [129]: Q = np.linalg.solve(M.T / (1 + i), M0)  3

In [130]: Q  4
Out[130]: array([0.20144, 0.34532, 0.45324])

In [131]: sum(Q)  4
Out[131]: 1.0

In [132]: np.allclose(np.dot(M.T, Q), M0 * (1 + i))  5
Out[132]: True
1

La nueva matriz de retribución del mercado, incluido el derecho contingente.

2

El vector con los precios de los tres activos financieros/reclamos contingentes.

3

Esto resuelve el vector Q que representa la medida martingala Q (obsérvese el uso del operador de transposición .T).

4

El vector solución cuyas componentes suman 1.

5

Una última comprobación de si todos los procesos de precios descontados son efectivamente martingales.

Conclusiones

Este capítulo se ocupa de la modelización de los agentes y sus problemas de optimización, principalmente sobre la base del enfoque de maximización de la utilidad esperada. Se tratan dos temas centrales: la elección óptima de la cartera y la fijación del precio de equilibrio de los activos financieros y los créditos contingentes en mercados completos e incompletos. Mientras que en el primer caso los precios están dados y se eligen las cantidades de la cartera de inversión, en el segundo caso las cantidades que deben mantenerse en la cartera de inversión son fijas, y los precios se ajustan para que esto sea óptimo para el agente representativo. Python demuestra una vez más ser un potente ecosistema con paquetes útiles para modelizar y resolver los problemas de optimización relacionados.

Aunque las economías modelo de este capítulo y de los dos anteriores son ciertamente simplistas, las técnicas y métodos introducidos se aplican a las economías modelo estáticas generales, es decir, a las que tienen muchos más estados futuros -incluso contablemente infinitos- diferentes (en lugar de sólo dos o tres). Con algún formalismo adicional, incluso pueden aplicarse a economías dinámicas con muchos -potencialmente infinitos- puntos relevantes en el tiempo (en lugar de sólo dos).

Otros recursos

Libros citados en este capítulo:

1 La utilidad sólo debe entenderse en términos ordinales, es decir, en términos de poner los distintos planes en un orden determinado. La comparación de este valor numérico con el óptimo de antes no tiene ningún sentido, porque las funciones de utilidad son diferentes.

Get Teoría Financiera con Python now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.