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 |
|
Maximización de la utilidad |
Función objetivo, restricción presupuestaria, Teorema de Lagrange |
|
Curvas de indiferencia, línea presupuestaria |
Función |
|
Utilidad logarítmica |
Logaritmo natural |
|
Utilidad aditiva al tiempo |
Función de utilidad |
|
utilidad esperada (aditiva al tiempo) |
Medida de probabilidad, Teorema de Lagrange |
|
Cartera de inversión óptima |
Teorema de Lagrange, condiciones de primer orden |
|
Precios de equilibrio, agente representativo |
Teorema de Lagrange, condiciones de primer orden |
|
Medidas martingala en mercados incompletos |
Conjunto de medidas de probabilidad |
|
Finalización del mercado por reclamaciones contingentes |
Teorema de Lagrange, condiciones de primer orden |
|
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,El agente puede decidir qué parte de esta riqueza gastará hoy, 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, y dentro de un año según la función de utilidad:
Como ejemplo, supongamos -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:
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:
Las condiciones necesarias de primer orden para la optimalidad son:
A partir de ellas, se deduce fácilmente como plan óptimo de ahorro de consumo.
Este problema de optimización puede modelarse y resolverse en Python numéricamente, para lo cual se cumplirá:
In
[
1
]
:
def
u
(
c
)
:
return
-
c
[
0
]
*
c
[
1
]
In
[
2
]
:
w
=
10
In
[
3
]
:
from
scipy.optimize
import
minimize
In
[
4
]
:
cons
=
(
{
'
type
'
:
'
eq
'
,
'
fun
'
:
lambda
c
:
c
[
0
]
+
c
[
1
]
-
w
}
)
In
[
5
]
:
opt
=
minimize
(
u
,
(
1
,
1
)
,
constraints
=
cons
)
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
'
]
Out
[
7
]
:
array
(
[
5.
,
5.
]
)
In
[
8
]
:
-
opt
[
'
fun
'
]
Out
[
8
]
:
24.999999999999996
La función de utilidad con signo negativo para lograr una maximización a través de una minimización.
La riqueza inicial del agente a distribuir entre el presente y el futuro.
La restricción presupuestaria como restricción de igualdad para la función
minimize
.La optimización con conjetura inicial y restricción presupuestaria.
El plan óptimo de ahorro de consumo.
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 que dan la misma utilidad . La ecuación que describe dicha curva en es el espacio:
La ecuación que describe la línea que representa la restricción presupuestaria es:
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 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
In
[
10
]
:
def
c1
(
c0
)
:
return
w
-
c0
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
)
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
)
;
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ónque se supone que cumple tres condiciones:
-
es dos veces diferenciable
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 . Para ello, se obtiene
-
para
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
)
In
[
16
]
:
x
[
:
5
]
Out
[
16
]
:
array
(
[
0.5
,
0.69388
,
0.88776
,
1.08163
,
1.27551
]
)
In
[
17
]
:
u
=
np
.
log
(
x
)
In
[
18
]
:
u1
=
1
/
x
In
[
19
]
:
u2
=
-
1
/
x
*
*
2
In
[
20
]
:
plt
.
figure
(
figsize
=
(
10
,
6
)
)
plt
.
plot
(
x
,
u
,
label
=
'
$u$
'
)
plt
.
plot
(
x
,
u1
,
'
--
'
,
label
=
'
$du/dx$
'
)
plt
.
plot
(
x
,
u2
,
'
-.
'
,
label
=
'
$d^2u/dx^2$
'
)
plt
.
legend
(
loc
=
0
)
;
Crea un objeto
ndarray
con números en coma flotante entre 0,5 y 10 y un espaciado homogéneo para obtener 50 valores.Muestra una selección de los números resultantes.
Calcula los valores de la función de utilidad.
Y por su primera derivada, así como...
...por su segunda derivada.
Crea un nuevo lienzo para trazar y proporciona parámetros de tamaño.
Traza la función de utilidad.
Traza la primera derivada.
Traza la segunda derivada.
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 puede describirse como una función aditiva al tiempo de la forma siguiente:
se supone que toma los valores 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 y .
Si el agente tiene una riqueza inicial de su problema de optimización restringida es
o
Las condiciones necesarias de primer orden para la optimalidad son:
De ellas se obtiene:
El plan óptimo de ahorro de consumo refleja ahora la preferencia temporal en que el consumo en un año se fija en . También se cumple
y
La restricción presupuestaria es vinculante:
El código siguiente resuelve numéricamente el problema de optimización para . 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
]
)
)
In
[
25
]
:
w
=
10
In
[
26
]
:
cons
=
(
{
'
type
'
:
'
eq
'
,
'
fun
'
:
lambda
c
:
c
[
0
]
+
c
[
1
]
-
w
}
)
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
'
]
Out
[
29
]
:
array
(
[
5.23811
,
4.76189
]
)
In
[
30
]
:
-
opt
[
'
fun
'
]
Out
[
30
]
:
3.0747286083026886
La función de utilidad con signo negativo para lograr una maximización a través de una minimización.
La restricción presupuestaria como restricción de igualdad para la función
minimize
.El plan óptimo de ahorro de consumo, que refleja la preferencia temporal en que es mayor que -exactamente en un 10%.
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 inicial, 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
y una acción de riesgo con un proceso de precios
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 . La función de utilidad esperada viene dada por:
Con el vector precio , el agente puede distribuir su riqueza inicial según
donde 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:
¿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:
Esto conduce a
o
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:
o después de sustituir
Según el Teorema de Lagrange, se puede transformar este problema en un problema de optimización sin restricciones de la forma
donde el agente elige y 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:
o
y
con la notación habitual así como
Supongamos una utilidad logarítmica y para los procesos de precios de los dos activos financieros negociados y respectivamente. Con se cumple 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
)
)
In
[
32
]
:
S
=
(
10
,
(
20
,
5
)
)
In
[
33
]
:
M0
=
np
.
array
(
(
B
[
0
]
,
S
[
0
]
)
)
In
[
34
]
:
M
=
np
.
array
(
(
B
[
1
]
,
S
[
1
]
)
)
.
T
In
[
35
]
:
p
=
0.5
In
[
36
]
:
P
=
np
.
array
(
(
p
,
1
-
p
)
)
In
[
37
]
:
def
U
(
phi
)
:
c1
=
np
.
dot
(
M
,
phi
)
return
-
np
.
dot
(
P
,
np
.
log
(
c1
)
)
In
[
38
]
:
-
U
(
(
1
,
0
)
)
Out
[
38
]
:
2.3978952727983707
In
[
39
]
:
-
U
(
(
0
,
1
)
)
Out
[
39
]
:
2.3025850929940455
In
[
40
]
:
-
U
(
(
0.5
,
0.5
)
)
Out
[
40
]
:
2.410140782802518
In
[
41
]
:
w
=
10
In
[
42
]
:
cons
=
(
{
'
type
'
:
'
eq
'
,
'
fun
'
:
lambda
phi
:
np
.
dot
(
M0
,
phi
)
-
w
}
)
In
[
43
]
:
opt
=
minimize
(
U
,
(
1
,
1
)
,
constraints
=
cons
)
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
'
]
Out
[
45
]
:
array
(
[
0.69442
,
0.30558
]
)
In
[
46
]
:
-
opt
[
'
fun
'
]
Out
[
46
]
:
2.4183062699261972
In
[
47
]
:
-
U
(
opt
[
'
x
'
]
)
Out
[
47
]
:
2.4183062699261972
In
[
48
]
:
np
.
dot
(
M
,
opt
[
'
x
'
]
)
Out
[
48
]
:
array
(
[
13.75022
,
9.16652
]
)
El proceso del precio de los bonos y...
...el proceso de cotización de las acciones.
El vector de precios de los dos activos financieros negociados.
La matriz de pagos de mercado de los dos activos financieros negociados.
La medida de probabilidad física de la economía.
La función de utilidad esperada con utilidad logarítmica.
Algunos valores de ejemplo para las ponderaciones totales de la cartera de 1-la diversificación merece la pena.
La restricción presupuestaria basada en el producto punto de losvectores precio y cartera.
El problema de maximización de la utilidad esperada como minimización.
La asignación óptima entre el bono y la acción.
El valor óptimo de utilidad esperada.
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:
Con la riqueza inicial el problema de optimización sin restricciones pasa a ser
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
]
)
)
In
[
50
]
:
kappa
=
10
/
11
In
[
51
]
:
def
U
(
phi
)
:
c0
=
phi
[
0
]
c1
=
np
.
dot
(
M
,
phi
[
1
:
]
)
return
-
(
np
.
log
(
c0
)
+
kappa
*
np
.
dot
(
P
,
np
.
log
(
c1
)
)
)
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
]
Out
[
55
]
:
5.23898714830318
In
[
56
]
:
np
.
dot
(
M
,
opt
[
'
x
'
]
[
1
:
]
)
Out
[
56
]
:
array
(
[
6.54422
,
4.36571
]
)
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 y la matriz de retribución del mercado es
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:
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 el problema del agente representativo maximizador de la utilidad esperada es
o
Debido a la matriz especial de retribución del mercado, esto se traduce en
y
Las tres condiciones de primer orden para el problema sin restricciones son:
Qué consecuencias para los precios se derivan de estas condiciones de optimalidad? La primera es con respecto a el precio relativo de los dos valores Arrow-Debreu:
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 debe cumplirse, el precio relativo viene determinado únicamente por la medida de probabilidad:
Con esta condición adicional, también se obtiene:
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 por ejemplo, fija los precios mediante
para llegar finalmente a los precios de equilibrio de
o el vector de precios de equilibrio .
Precios de arbitraje
Lo que sobre los precios de arbitraje de los créditos contingentes dado el vector de precios de equilibrio ? En los mercados completos, en los que toda demanda contingente es alcanzable, el precio de toda demanda contingente alcanzable viene dada entonces por:
Esto se debe a que la cartera de réplica es simplemente el propio pago contingente de estado 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 es que hace que todos los procesos de precios descontados de los activos financieros negociados sean una martingala. En forma matricial, las condiciones son:
Más explícitamente, se obtiene:
De estos, y también . 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 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
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 . El precio de arbitraje de este activo financiero es
lo que implica un tipo de interés sin riesgo de . Cualquier otro precio 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
y para las existencias de riesgo de
En consecuencia, la matriz de retribución del mercado es
La medida de probabilidad física viene dada por con . La oferta neta del bono sin riesgo es y es para la acción de riesgo. La riqueza inicial de que dispone el agente será .
El problema del agente representativo es
o
Las tres condiciones de primer orden son:
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:
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 :
En Python, estas consideraciones se traducen en sencillas operaciones vectorizadas utilizando NumPy
:
In
[
57
]
:
p
=
1
/
3
In
[
58
]
:
P
=
np
.
array
(
(
p
,
(
1
-
p
)
)
)
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
)
In
[
62
]
:
zeta
Out
[
62
]
:
0.7342657342657343
In
[
63
]
:
w
=
15
In
[
64
]
:
B0
=
w
/
(
1
+
zeta
)
In
[
65
]
:
B0
Out
[
65
]
:
8.649193548387098
In
[
66
]
:
S0
=
zeta
*
B0
In
[
67
]
:
S0
Out
[
67
]
:
6.350806451612904
In
[
68
]
:
B0
+
S0
Out
[
68
]
:
15.000000000000002
In
[
69
]
:
i
=
B1
.
mean
(
)
/
B0
-
1
In
[
70
]
:
i
Out
[
70
]
:
0.2717948717948717
In
[
71
]
:
mu
=
np
.
dot
(
S1
,
P
)
/
S0
-
1
In
[
72
]
:
mu
Out
[
72
]
:
0.5746031746031743
La medida de probabilidad.
La relación de precios
zeta
dadas las condiciones de optimalidad.La riqueza inicial.
El nivel de precios de equilibrio del bono sin riesgo dada la relación de precios
zeta
y la riqueza inicialw
.El nivel de precios de equilibrio resultante del stock de riesgo.
La restricción presupuestaria es vinculante.
El tipo de interés de equilibrio dado el nivel de precios del bono sin riesgo.
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
In
[
74
]
:
q
=
sy
.
Symbol
(
'
q
'
)
In
[
75
]
:
eq
=
(
q
*
20
+
(
1
-
q
)
*
5
)
/
(
1
+
i
)
-
S0
In
[
76
]
:
eq
Out
[
76
]
:
11.7943548387097
*
q
-
2.41935483870968
In
[
77
]
:
q
=
sy
.
solve
(
eq
)
[
0
]
In
[
78
]
:
q
Out
[
78
]
:
0.205128205128205
In
[
79
]
:
Q
=
np
.
array
(
(
q
,
1
-
q
)
)
In
[
80
]
:
np
.
dot
(
B1
,
Q
)
/
(
1
+
i
)
Out
[
80
]
:
8.64919354838710
In
[
81
]
:
np
.
dot
(
S1
,
Q
)
/
(
1
+
i
)
Out
[
81
]
:
6.35080645161290
Importa el paquete de cálculo simbólico
SymPy
.Definición del símbolo
q
.Formulación de la ecuación para
q
dada la condición de martingala.La ecuación simplificada.
Así se resuelve numéricamente la ecuación.
La medida martingala resultante.
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
y una acción de riesgo con un proceso de precios
se negocian. La medida de probabilidad física es con . Todo lo demás será como en la sección anterior.
Formalmente, el problema de optimización del agente representativo no cambia:
Tampoco cambia la fórmula del precio relativo:
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
In
[
83
]
:
P
=
np
.
array
(
(
p
,
p
,
p
)
)
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
)
In
[
87
]
:
zeta
Out
[
87
]
:
0.9155274934101636
In
[
88
]
:
w
=
15
In
[
89
]
:
B0
=
w
/
(
1
+
zeta
)
In
[
90
]
:
B0
Out
[
90
]
:
7.8307411674347165
In
[
91
]
:
S0
=
zeta
*
B0
In
[
92
]
:
S0
Out
[
92
]
:
7.169258832565284
In
[
93
]
:
B0
+
S0
Out
[
93
]
:
15.0
In
[
94
]
:
i
=
B1
.
mean
(
)
/
B0
-
1
In
[
95
]
:
i
Out
[
95
]
:
0.40472016183411985
In
[
96
]
:
mu
=
np
.
dot
(
S1
,
P
)
/
S0
-
1
In
[
97
]
:
mu
Out
[
97
]
:
0.6273183796451287
La medida de probabilidad.
El precio relativo
zeta
dadas las condiciones de optimalidad.La riqueza inicial.
El nivel de precios de equilibrio del bono sin riesgo dada la relación de precios
zeta
y la riqueza inicialw
.El nivel de precios de equilibrio resultante del stock de riesgo.
La restricción presupuestaria es vinculante.
El tipo de interés de equilibrio dado el nivel de precios del bono sin riesgo.
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
'
)
qm
=
sy
.
Symbol
(
'
qm
'
)
In
[
99
]
:
eq
=
(
qu
*
20
+
qm
*
10
+
(
1
-
qu
-
qm
)
*
5
)
/
(
1
+
i
)
-
S0
In
[
100
]
:
eq
Out
[
100
]
:
3.55942780337942
*
qm
+
10.6782834101383
*
qu
-
3.60983102918587
In
[
101
]
:
Q
=
sy
.
solve
(
eq
,
set
=
True
)
In
[
102
]
:
Q
Out
[
102
]
:
(
[
qm
]
,
{
(
1.01416048550236
-
3.00000000000001
*
qu
,
)
}
)
Definición de los símbolos
qu
yqm
.Formulación de la ecuación para
qu
yqm
dada la condición de martingala.La ecuación simplificada.
Esto resuelve la ecuación numéricamente, proporcionando como resultado un conjunto de soluciones; esto no tiene en cuenta las condiciones .
La relación entre
qu
yqm
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 .
Considera la matriz de retribución de mercado de los dos primeros valores Arrow-Debreu, cada uno disponible con una oferta neta de uno:
Este mercado está obviamente incompleto porque los dos valores no abarcan . Introduciendo un crédito contingente con una oferta neta de uno que paga una unidad de moneda en el 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:
Los tres vectores de retribución forman ahora una base estándar del .
Formalmente, el problema de optimización del agente representativo es el mismo que antes:
Toma, como el vector de precios del estado y como cartera de mercado.
En forma explícita, el problema de optimización sin restricciones según el Teorema de Lagrange es:
Las cuatro condiciones de primer orden para el problema sin restricciones son:
Por los precios relativos, se obtiene:
A través de ellos, también se fija el tercer precio relativo. Con una utilidad logarítmica y una riqueza inicial fijada en se llega finalmente, en este caso especial, a
El vector de precios de equilibrio es 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
y para las existencias de riesgo de
La matriz de retribución del mercado es
La medida de probabilidad física viene dada por con . La oferta neta del bono sin riesgo es y es para la acción de riesgo. La riqueza inicial de que dispone el agente será .
Se introduce un crédito contingente con una retribución y una oferta neta de .
En consecuencia, el problema del agente representativo es:
o
Las cuatro condiciones de primer orden son:
Los precios relativos de los tres activos financieros se fijan mediante:
Añadiendo la restricción presupuestaria a la mezcla fija no sólo los precios relativos y sino también los niveles de precios absolutos:
Los ajustes en el código Python son menores en comparación con el caso de los mercados completos:
In
[
103
]
:
p
=
1
/
3
In
[
104
]
:
P
=
np
.
array
(
(
p
,
p
,
p
)
)
In
[
105
]
:
B1
=
np
.
array
(
(
11
,
11
,
11
)
)
In
[
106
]
:
S1
=
np
.
array
(
(
20
,
10
,
5
)
)
In
[
107
]
:
C1
=
np
.
array
(
(
5
,
0
,
0
)
)
In
[
108
]
:
zeta_1
=
(
np
.
dot
(
S1
/
(
B1
+
S1
+
C1
)
,
P
)
/
np
.
dot
(
B1
/
(
B1
+
S1
+
C1
)
,
P
)
)
In
[
109
]
:
zeta_1
Out
[
109
]
:
0.8862001308044474
In
[
110
]
:
zeta_2
=
(
np
.
dot
(
C1
/
(
B1
+
S1
+
C1
)
,
P
)
/
np
.
dot
(
B1
/
(
B1
+
S1
+
C1
)
,
P
)
)
In
[
111
]
:
zeta_2
Out
[
111
]
:
0.09156311314584695
In
[
112
]
:
w
=
15
In
[
113
]
:
B0
=
w
/
(
1
+
zeta_1
+
zeta_2
)
In
[
114
]
:
B0
Out
[
114
]
:
7.584325396825396
In
[
115
]
:
S0
=
zeta_1
*
B0
In
[
116
]
:
S0
Out
[
116
]
:
6.721230158730158
In
[
117
]
:
C0
=
zeta_2
*
B0
In
[
118
]
:
C0
Out
[
118
]
:
0.6944444444444443
In
[
119
]
:
B0
+
S0
+
C0
Out
[
119
]
:
14.999999999999998
In
[
120
]
:
i
=
B1
.
mean
(
)
/
B0
-
1
In
[
121
]
:
i
Out
[
121
]
:
0.45035971223021587
In
[
122
]
:
muS
=
np
.
dot
(
S1
,
P
)
/
S0
-
1
In
[
123
]
:
muS
Out
[
123
]
:
0.7357933579335794
In
[
124
]
:
muC
=
np
.
dot
(
C1
,
P
)
/
C0
-
1
In
[
125
]
:
muC
Out
[
125
]
:
1.4000000000000004
La medida de probabilidad.
Los vectores de retribución.
El primer precio relativo.
El segundo precio relativo.
La riqueza inicial...
...y el precio resultante para el bono sin riesgo.
El precio de equilibrio de la acción de riesgo.
El precio de equilibrio del derecho contingente.
La restricción presupuestaria es vinculante.
El tipo de interés sin riesgo.
La tasa de rendimiento esperada de equilibrio para la acción de riesgo.
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
In
[
127
]
:
M
Out
[
127
]
:
array
(
[
[
11
,
20
,
5
]
,
[
11
,
10
,
0
]
,
[
11
,
5
,
0
]
]
)
In
[
128
]
:
M0
=
np
.
array
(
(
B0
,
S0
,
C0
)
)
In
[
129
]
:
Q
=
np
.
linalg
.
solve
(
M
.
T
/
(
1
+
i
)
,
M0
)
In
[
130
]
:
Q
Out
[
130
]
:
array
(
[
0.20144
,
0.34532
,
0.45324
]
)
In
[
131
]
:
sum
(
Q
)
Out
[
131
]
:
1.0
In
[
132
]
:
np
.
allclose
(
np
.
dot
(
M
.
T
,
Q
)
,
M0
*
(
1
+
i
)
)
Out
[
132
]
:
True
La nueva matriz de retribución del mercado, incluido el derecho contingente.
El vector con los precios de los tres activos financieros/reclamos contingentes.
Esto resuelve el vector
Q
que representa la medida martingala (obsérvese el uso del operador de transposición.T
).El vector solución cuyas componentes suman 1.
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.