```python
%matplotlib inline
```

```python
####### FINAL GRADE 24/25 #########
```

# 592B Fall 2019 Problem Set 2 due Thurs 09/19 11.59PM

```python
import numpy as np
import matplotlib.pyplot as plt
import scipy.io.wavfile as wavfile

from scipy import signal
from ipywidgets import interactive
from IPython.display import Audio, display

print("Import complete.")
```

    Import complete.

The audio file in the directory that this notebook is in, `Fa50.wav`, comes from [Sameer ud Dowla Khan](http://www.reed.edu/linguistics/khan/index.html) at Reed College. It is an utterance of Bengali illustrating how Bengali intonational events chunk utterances into prosodic phrases. See page 101 of Khan's [dissertation on Bengali intonation](http://www.reed.edu/linguistics/khan/assets/Khan%202008%20disseration%20Intonational%20phonology%20and%20focus%20prosody%20of%20Bengali.pdf).

Here's an annotated f0 contour of `Fa50.wav` from that page.

You will be doing some work with this audio file in this problem set.

```python
b_fs, bengali = wavfile.read("Fa50.wav")

print("Fs: " + str(b_fs))
```

    Fs: 16000

## Problem 1: converting from samples to time

Write a function that:
- plots the audio data from `t_start` to `t_stop`, with time in seconds on the x-axis
- creates an Audio object you can play, playing the audio data from `t_start` to `t_stop`.
- if you like, you can generate an interactive "widget" like we saw in the Class 2.2 notebook, where you can manipulate sliders and then see the plot and have the audio change.

You can take a look at the sample code for converting from samples to time in Class 2.2's notebook, but remember that there are problems with that code. You can do way better!

```python
# PROBLEM 1: 7/7. But please explain how your code improves on the sample code from class
```

```python
#Problem 1
def plot_t(y, t_start, t_stop, fs, debug=False):
    if t_start == t_stop or t_start > t_stop:
        print("Error: start and stop times are the same, or t_start is greater than t_stop.")
    n_start = int(np.floor(t_start*fs))
    n_stop = int(np.floor(t_stop*fs)) + 1
    if debug:
        print("n_start:" + str(n_start))
        print("n_stop:" + str(n_stop))
        print("len(data)" + str(len(y)))

    if n_stop > len(y):
        print("Error: stop time invalid.")
        return None

    try:
        y_itvl = y[n_start:n_stop]
    except IndexError:
        print("Error: start time invalid.")
        return None

    x_itvl = np.linspace(t_start, t_stop, len(y_itvl))

    plt.plot(x_itvl, y_itvl)
    return Audio(data=y_itvl, rate=fs)

print("If you get to this line, there's nothing wrong with your syntax!")
```

    If you get to this line, there's nothing wrong with your syntax!

Below is me testing:

```python
fs = 44000
x = np.linspace(0, 5, 5*fs+1) # 5 seconds of 44000 Hz sampling
y = np.sin(2*np.pi*440*x) # 440 Hz tone

#plt.plot(y)

plot_t(y, 0.11, 0.12, fs, True)
```

## Problem 2: resampling audio data and writing it to file

The purpose of this problem is to:
- introduce you to [`scipy.signal`](https://docs.scipy.org/doc/scipy/reference/signal.html), which we will be continuing to use during the course.
- have you figure out how to write data to audio files
- give you experience with figuring out how to use unfamiliar functions own your own
- get you thinking more about the effect of sampling rates on representing signals

*n.b. in my past experience, people have sometimes had problems using `scipy.signal`'s resampling function on their machine. If that ends up being the case for you, you might try instead [`librosa`](https://librosa.github.io/librosa/)'s sampling function.*

1. Resample the bengali audio data using `scipy.signal.resample`, plot the resampled data, and also create a playable Audio object of the resampled data. Do this for two sampling rates: two times the original sampling rate of the file, and half of the original sampling rate of the file. Note: you may need to use `round()` and `int()` to coerce the number of samples to be an integer.
2. Try to explain why the audio sounds the way it does for the upsampled and downsampled audio.
3. Write the re-sampled audio to WAV files in the current directory using `scipy.io.wavfile.write`.
4. Use `scipy.io.wavfile.read` to read in your re-sampled files and check that the sampling rate is what you expect.

```python
## Grading Notes: 6/7
# 1. missing plots, otherwise correct 1/2
# 2. correct 2/2
# 3. correct 2/2
# 4. correct 1/1
```

```python
#Problem 2
#help(signal.resample)

#1
bengali_2x = signal.resample(bengali, len(bengali)*2)
bengali_halfx = signal.resample(bengali, int(len(bengali)/2))

#help(wavfile.write)

#3
wavfile.write("Fa2x.wav", b_fs*2, bengali_2x)
wavfile.write("Fahalfx.wav", int(b_fs/2), bengali_halfx)

#sanity check on sampling rates (step 4)
print(wavfile.read("Fa2x.wav")[0])
print(wavfile.read("Fahalfx.wav")[0])

#step 2
Audio(data = bengali_2x, rate=b_fs*2)
Audio(data = bengali_halfx, rate = b_fs/2)
Audio(data = bengali, rate = b_fs)
```

    32000
    8000

<audio  controls="controls" >
    <source src="data:audio/wav;base64,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" type="audio/wav" />
    Your browser does not support the audio element.
</audio>

#### Step 2

The upsampled audio sounds clearer, while the downsampled audio sounds more muffled. This is most likely because the upsampled audio has more precision with its data points with respect to time. The opposite is true of the downsampled audio, where the sampling rate will miss the differences in points between samples, causing only lower-frequency audio to pass through.

## Problem 3: Fourier series of a square wave

We will be going over the introductory material you need for this on Tuesday 09/17, so feel free to wait until then to get started on this problem if you like.

### Define a square wave.
1. Define a function for a [square wave](http://mathworld.wolfram.com/SquareWave.html) with a period of 1, with y = 1 from x = 0 to 0.5, and y = 0 from x = 0.5 to 1. You might see if there are any functions in `scipy.signal` that could help.
2. Make a plot of your square wave showing 5 periods.

### Reconstruct the square wave using a Fourier series.
1. Calculate the Fourier coefficients for a square wave.  Note: there are an infinite number of
coefficients, so just calculate the first six. Try to find a
pattern for the coefficient values of the infinite series.
2. Plot the individual Fourier series terms, i.e., make plots of each of the following:
\begin{align}
      a_0\\
      a_1\cos(2\pi nt) + b_1\sin(2\pi nt)\\
      a_2\cos(2\pi nt) + b_2\sin(2\pi nt)\\
      a_3\cos(2\pi nt) + b_3\sin(2\pi nt)\\
      a_4\cos(2\pi nt) + b_4\sin(2\pi nt)\\
      a_5\cos(2\pi nt) + b_5\sin(2\pi nt)
\end{align}

3. Plot the reconstruction of the square wave as you add in successive terms in the Fourier series, i.e., make plots of each of the following (I am subsuming $a_0$ as a term in the sum by having the sum start from $n=0$):

\begin{align}
      \displaystyle\sum\limits_{n=0}^0 \left(a_n\cos(2\pi nt) + b_n\sin(2\pi nt)\right)\\
       \displaystyle\sum\limits_{n=0}^1 \left(a_n\cos(2\pi nt) + b_n\sin(2\pi nt)\right)\\
        \displaystyle\sum\limits_{n=0}^2 \left(a_n\cos(2\pi nt) + b_n\sin(2\pi nt)\right)\\
         \displaystyle\sum\limits_{n=0}^3 \left(a_n\cos(2\pi nt) + b_n\sin(2\pi nt)\right)\\
          \displaystyle\sum\limits_{n=0}^4 \left(a_n\cos(2\pi nt) + b_n\sin(2\pi nt)\right)\\
           \displaystyle\sum\limits_{n=0}^5 \left(a_n\cos(2\pi nt) + b_n\sin(2\pi nt)\right)\\
\end{align}

```python
## Grading notes: 12/12
# Define the square wave
# 1. correct 2/2
# 2. correct 1/1

# Reconstruct using fourier series: very nice!
# 1. correct 3/3
# 2. correct 3/3
# 3. correct 3/3
```

## Defining a square wave and calculating the coefficients:

```python
# Defining a square wave.
fs = 500
t = np.linspace(0, 5, 5*fs + 1)
y = 0.5 * signal.square(2 * np.pi * t) + 0.5

plt.plot(t, y)
```

We don't even need Python to calculate $a_0$ for us; the fact that we're using a square wave mes it easy enough.

\begin{align}
\displaystyle a_0 &= \frac{1}{T}\int_0^Tf(t)dt & \\
&= \frac{1}{1}\int_0^1f(t)dt & \text{$T=1$} \\
&= \int_0^1f(t)dt & \frac{1}{1}=1\\
&= \int_0^1H(t)dt & \text{$f(t) = H(t)$ (the step function)}\\
&= \int_0^{1/2}1dt + \int_{1/2}^10dt & \text{Split D.I. over each part of sq. wv.}\\
&= \int_0^{1/2}1dt & \text{int of 0dt is 0}\\
&= 1/2
\end{align}

This plots as such:

```python
# Determining coefficients
import sympy as sym
```

\begin{align}
a_n &= \frac{2}{T}\int_0^T f(t)\cos 2\pi ntdt\\
&= 2\int_0^1 f(t)\cos 2\pi ntdt\\
&= 2(\int_0^{1/2} 1\cos 2\pi ntdt + \int_{1/2}^1 -1\cos 2\pi ntdt)\\
&= 2\int_0^{1/2}\cos 2\pi ntdt + \int_{1/2}^1 -\cos 2\pi ntdt)\\
\end{align}

Similarly, for $b_n$:
\begin{equation}
\label{eq:bn}
b_n = 2(\int_0^{1/2}\sin 2\pi ntdt + \int_{1/2}^1 -\sin 2\pi ntdt)\\
\end{equation}

```python
x = sym.Symbol('x')
a_coeff = []
b_coeff = []
for n in np.arange(1, 6):
    a_coeff.append(2*(sym.integrate(sym.cos(2*sym.pi*n*x), (x, 0, 1/2))))
    b_coeff.append(2*(sym.integrate(sym.sin(2*sym.pi*n*x), (x, 0, 1/2))))

print(a_coeff)
print(b_coeff)
```

    [0, 0, 0, 0, 0]
    [2/pi, 0, 2/(3*pi), 0, 2/(5*pi)]

All of the $a$ coefficients are 0, because the cosine doesn't contribute to this fourier series. The sin coefficients, for the odd-numbered harmonics, take a value of $4/n\pi$

### Plotting the component waves

```python
plt.plot(t, [0 for n in t])
plt.ylim(-1,1)
plt.title("a0")
```

$a_0$ is constant, and 0, so its plot is just the x-axis. Let's plot each of the other component waves:

```python
signals = []
for n in np.arange(1, 6):
    signals.append(float(b_coeff[n-1]) * np.sin(2*np.pi*n*t))

pltsignals, (p1, p2, p3, p4, p5) = plt.subplots(5, sharex=True, sharey=True)
p1.plot(t, signals[0])
p2.plot(t, signals[1])
p3.plot(t, signals[2])
p4.plot(t, signals[3])
p5.plot(t, signals[4])
```

Now, let's add 'em all together! (only plotting the odd-numbered harmonics for more clarity)

### Summing it all together

```python
sumplots, (p0, p1, p2, p3) = plt.subplots(4, sharex = True, sharey = True)
a0 = [1/2 for x in t]
p0.plot(t, y)
p0.plot(t, a0)
p1.plot(t, y)
p1.plot(t, a0+signals[0])
p2.plot(t,y)
p2.plot(t, a0+signals[0]+signals[2])
p3.plot(t,y)
p3.plot(t, a0+signals[0]+signals[2]+signals[4])

```

As we add more and more terms, the fourier series reconstruction looks more and more like the square wave, as expected!


# Selección óptima de portafolios II

Entonces, tenemos que:
- La LAC describe las posibles selecciones de riesgo-rendimiento entre un activo libre de riesgo y un activo riesgoso.
- Su pendiente es igual al radio de Sharpe del activo riesgoso.
- La asignación óptima de capital para cualquier inversionista es el punto tangente de la curva de indiferencia del inversionista con la LAC.

Para todo lo anterior, supusimos que ya teníamos el portafolio óptimo (activo riesgoso).

En la clase pasada aprendimos a hallar este portafolio óptimo si el conjunto de activos riesgosos estaba conformado únicamente por dos activos:

$$w_{1,EMV}=\frac{(E[r_1]-r_f)\sigma_2^2-(E[r_2]-r_f)\sigma_{12}}{(E[r_2]-r_f)\sigma_1^2+(E[r_1]-r_f)\sigma_2^2-((E[r_1]-r_f)+(E[r_2]-r_f))\sigma_{12}}.$$

- Sin embargo, la complejidad del problema crece considerablemente con el número de variables, y la solución analítica deja de ser viable cuando mencionamos que un portafolio bien diversificado consta aproximadamente de 50-60 activos.
- En esos casos, este problema se soluciona con rutinas numéricas que hagan la optimización por nosotros, porque son una solución viable y escalable a más variables.

**Objetivos:**
- ¿Cuál es el portafolio óptimo de activos riesgosos cuando tenemos más de dos activos?
 - ¿Cómo construir la frontera de mínima varianza cuando tenemos más de dos activos?

*Referencia:*
- Notas del curso "Portfolio Selection and Risk Management", Rice University, disponible en Coursera.
___

## 1. Maximizando el radio de Sharpe

### ¿Qué pasa si tenemos más de dos activos riesgosos?

En realidad es algo muy similar a lo que teníamos con dos activos.
- Para dos activos, construir la frontera de mínima varianza es trivial: todas las posibles combinaciones.
- Con más de dos activos, recordar la definición: la frontera de mínima varianza es el lugar geométrico de los portafolios que proveen el mínimo riesgo para un nivel de rendimiento dado.

 Ver en el tablero.

Analíticamente:
- $n$ activos,
- caracterizados por $(\sigma_i,E[r_i])$,
- cada uno con peso $w_i$, con $i=1,2,\dots,n$.

Entonces, buscamos los pesos tales que

\begin{align}
\min_{w_1,\dots,w_n} & \quad \sum_{i=1}^{n}w_i^2\sigma_i^2+\sum_{i=1}^{n}\sum_{j=1,j\neq i}^{n}w_iw_j\sigma_{ij}\\
\text{s.a.}          & \quad \sum_{i=1}^{n}w_i=1, w_i\geq0\\
                     & \quad \sum_{i=1}^{n}w_iE[r_i]=\bar{\mu},
\end{align}

donde $\bar{\mu}$ corresponde a un nivel de rendimiento objetivo.

**Obviamente, tendríamos que resolver este problema para muchos niveles de rendimiento objetivo.**

-  Explicar relación con gráfica.

-  Recordar clase 10.

Lo anterior se puede escribir vectorialmente como:

\begin{align}
\min_{\boldsymbol{w}} & \quad \boldsymbol{w}^T\Sigma\boldsymbol{w}\\
\text{s.a.}          & \quad \boldsymbol{1}^T\boldsymbol{w}=1, \boldsymbol{w}\geq0\\
                     & \quad E[\boldsymbol{r}^T]\boldsymbol{w}=\bar{\mu},
\end{align}

donde:
- $\boldsymbol{w}=\left[w_1,\dots,w_n\right]^T$ es el vector de pesos,
- $\boldsymbol{1}=\left[1,\dots,1\right]^T$ es un vector de unos,
- $E[\boldsymbol{r}]=\left[E[r_1],\dots,E[r_n]\right]^T$ es el vector de rendimientos esperados, y
- $\Sigma=\left[\begin{array}{cccc}\sigma_{1}^2 & \sigma_{12}  & \dots  & \sigma_{1n} \\
                                   \sigma_{21}  & \sigma_{2}^2 & \dots  & \sigma_{2n} \\
                                   \vdots       & \vdots       & \ddots & \vdots      \\
                                   \sigma_{n1}  & \sigma_{n2}  & \dots  & \sigma_{n}^2\end{array}\right]$ es la matriz de varianza-covarianza.

**Esta última forma es la que comúnmente usamos al programar, por ser eficiente y escalable a problemas de N variables.**

### Entonces, ¿para cuántos niveles de rendimiento objetivo tendríamos que resolver el anterior problema con el fin de graficar la frontera de mínima varianza?
- Observar que el problema puede volverse muy pesado a medida que incrementamos el número de activos en nuestro portafolio...
- Una tarea bastante compleja.

### Sucede que, en realidad, sólo necesitamos conocer dos portafolios que estén sobre la *frontera de mínima varianza*.
- Si logramos encontrar dos portafolios sobre la frontera, entonces podemos a la vez encontrar todas las posibles combinaciones de estos dos portafolios para trazar la frontera de mínima varianza.
- Ver el caso de dos activos.

### ¿Qué portafolios usar?
Hasta ahora, hemos estudiando profundamente como hallar dos portafolios muy importantes que de hecho yacen sobre la frontera de mínima varianza:
1. Portafolio de EMV: máximo SR.
2. Portafolio de mínima varianza: básicamente, el mismo problema anterior, sin la restricción de rendimiento objetivo.

Luego, tomar todas las posibles combinaciones de dichos portafolios usando las fórmulas para dos activos de medias y varianzas:
- w: peso para el portafolio EMV,
- 1-w: peso para le portafolio de mínima varianza.

## 2. Ejemplo ilustrativo.

Retomamos el ejemplo de mercados de acciones en los países integrantes del $G5$: EU, RU, Francia, Alemania y Japón.

```python
# Importamos pandas y numpy
import pandas as pd
import numpy as np
```

```python
# Resumen en base anual de rendimientos esperados y volatilidades
annual_ret_summ = pd.DataFrame(columns=['EU', 'RU', 'Francia', 'Alemania', 'Japon'], index=['Media', 'Volatilidad'])
annual_ret_summ.loc['Media'] = np.array([0.1355, 0.1589, 0.1519, 0.1435, 0.1497])
annual_ret_summ.loc['Volatilidad'] = np.array([0.1535, 0.2430, 0.2324, 0.2038, 0.2298])

annual_ret_summ.round(4)
```

      EU
      RU
      Francia
      Alemania
      Japon

      Media
      0.1355
      0.1589
      0.1519
      0.1435
      0.1497

      Volatilidad
      0.1535
      0.243
      0.2324
      0.2038
      0.2298

```python
# Matriz de correlación
corr = pd.DataFrame(data= np.array([[1.0000, 0.5003, 0.4398, 0.3681, 0.2663],
                                    [0.5003, 1.0000, 0.5420, 0.4265, 0.3581],
                                    [0.4398, 0.5420, 1.0000, 0.6032, 0.3923],
                                    [0.3681, 0.4265, 0.6032, 1.0000, 0.3663],
                                    [0.2663, 0.3581, 0.3923, 0.3663, 1.0000]]),
                    columns=annual_ret_summ.columns, index=annual_ret_summ.columns)
corr.round(4)
```

      EU
      RU
      Francia
      Alemania
      Japon

      EU
      1.0000
      0.5003
      0.4398
      0.3681
      0.2663

      RU
      0.5003
      1.0000
      0.5420
      0.4265
      0.3581

      Francia
      0.4398
      0.5420
      1.0000
      0.6032
      0.3923

      Alemania
      0.3681
      0.4265
      0.6032
      1.0000
      0.3663

      Japon
      0.2663
      0.3581
      0.3923
      0.3663
      1.0000

```python
# Tasa libre de riesgo
rf = 0.05
```

Esta vez, supondremos que tenemos disponibles todos los mercados de acciones y el activo libre de riesgo.

#### 1. Construir la frontera de mínima varianza

##### 1.1. Encontrar portafolio de mínima varianza

```python
# Importamos funcion minimize del modulo optimize de scipy
from scipy.optimize import minimize
```

```python
## Construcción de parámetros
# 1. Sigma: matriz de varianza-covarianza Sigma = S.dot(corr).dot(S)
S = np.diag(annual_ret_summ.loc['Volatilidad'].values)
Sigma = S.dot(corr).dot(S)
# 2. Eind: rendimientos esperados activos individuales
Eind = annual_ret_summ.loc['Media'].values
```

```python
# Función objetivo
def var(w, Sigma):
    return w.T.dot(Sigma).dot(w)
```

```python
# Número de activos
N = len(Eind)
# Dato inicial
w0 = np.ones(N) / N
# Cotas de las variables
bnds = ((0, 1), ) * N
# Restricciones
cons = {'type': 'eq', 'fun': lambda w: w.sum() - 1}
```

```python
# Portafolio de mínima varianza
minvar = minimize(fun=var,
                  x0=w0,
                  args=(Sigma,),
                  bounds=bnds,
                  constraints=cons)
```

```python
minvar
```

         fun: 0.01861776391061502
         jac: array([0.03718246, 0.03881475, 0.03859101, 0.03755156, 0.0370423 ])
     message: 'Optimization terminated successfully.'
        nfev: 49
         nit: 7
        njev: 7
      status: 0
     success: True
           x: array([6.17797049e-01, 3.46944695e-18, 0.00000000e+00, 2.09394358e-01,
           1.72808594e-01])

```python
# Pesos, rendimiento y riesgo del portafolio de mínima varianza
w_minvar = minvar.x
E_minvar = Eind.T.dot(w_minvar)
s_minvar = var(w_minvar, Sigma)**0.5
RS_minvar = (E_minvar - rf) / s_minvar
w_minvar, E_minvar, s_minvar, RS_minvar
```

    (array([6.17797049e-01, 3.46944695e-18, 0.00000000e+00, 2.09394358e-01,
            1.72808594e-01]),
     0.13962903688859557,
     0.13644692708381168,
     0.6568783834431207)

```python
annual_ret_summ.columns
```

    Index(['EU', 'RU', 'Francia', 'Alemania', 'Japon'], dtype='object')

##### 1.2. Encontrar portafolio EMV

```python
# Función objetivo
def menos_RS(w, Eind, rf, Sigma):
    E_port = Eind.T.dot(w)
    s_port = var(w, Sigma)**0.5
    RS = (E_port - rf) / s_port
    return -RS
```

```python
# Número de activos
N = len(Eind)
# Dato inicial
w0 = np.ones(N) / N
# Cotas de las variables
bnds = ((0, 1), ) * N
# Restricciones
cons = {'type': 'eq', 'fun': lambda w: w.sum() - 1}
```

```python
# Portafolio EMV
emv = minimize(fun=menos_RS,
               x0=w0,
               args=(Eind, rf, Sigma),
               bounds=bnds,
               constraints=cons)
```

```python
emv
```

         fun: -0.6644372965632436
         jac: array([-0.36088951, -0.36076408, -0.36036385, -0.36108153, -0.36062376])
     message: 'Optimization terminated successfully.'
        nfev: 35
         nit: 5
        njev: 5
      status: 0
     success: True
           x: array([0.50714174, 0.07470888, 0.02471533, 0.18943972, 0.20399434])

```python
# Pesos, rendimiento y riesgo del portafolio EMV
w_emv = emv.x
E_emv = Eind.T.dot(w_emv)
s_emv = var(w_emv, Sigma)**0.5
RS_emv = (E_emv - rf) / s_emv
w_emv, E_emv, s_emv, RS_emv
```

    (array([0.50714174, 0.07470888, 0.02471533, 0.18943972, 0.20399434]),
     0.1420657564717856,
     0.13856199365687238,
     0.6644372965632436)

```python
w_minvar, E_minvar, s_minvar, RS_minvar
```

    (array([6.17797049e-01, 3.46944695e-18, 0.00000000e+00, 2.09394358e-01,
            1.72808594e-01]),
     0.13962903688859557,
     0.13644692708381168,
     0.6568783834431207)

```python
annual_ret_summ.columns
```

    Index(['EU', 'RU', 'Francia', 'Alemania', 'Japon'], dtype='object')

##### 1.3. Construir frontera de mínima varianza

También debemos encontrar la covarianza (o correlación) entre estos dos portafolios:

```python
# Covarianza entre los portafolios
cov_emv_minvar = w_emv.T.dot(Sigma).dot(w_minvar)
cov_emv_minvar
```

    0.018690275386034134

```python
# Correlación entre los portafolios
corr_emv_minvar = cov_emv_minvar / (s_emv * s_minvar)
corr_emv_minvar
```

    0.9885708894197612

```python
# Vector de w
w_p = np.linspace(0, 5)
```

```python
# DataFrame de portafolios:
# 1. Índice: i
# 2. Columnas 1-2: w, 1-w
# 3. Columnas 3-4: E[r], sigma
# 4. Columna 5: Sharpe ratio
frontera = pd.DataFrame(data={'Media': w_p * E_emv + (1 - w_p) * E_minvar,
                              'Vol': ((w_p * s_emv)**2 + ((1 - w_p) * s_minvar)**2 + 2 * w_p * (1 - w_p) * cov_emv_minvar)**0.5})
frontera['RS'] = (frontera['Media'] - rf) / frontera['Vol']
frontera.head()
```

      Media
      Vol
      RS

      0
      0.139629
      0.136447
      0.656878

      1
      0.139878
      0.136518
      0.658359

      2
      0.140126
      0.136622
      0.659677

      3
      0.140375
      0.136759
      0.660833

      4
      0.140624
      0.136930
      0.661827

```python
# Importar librerías de gráficos
from matplotlib import pyplot as plt
%matplotlib inline
```

```python
# Gráfica de dispersión de puntos coloreando
# de acuerdo a SR, los activos individuales
# y los portafolios hallados
plt.figure(figsize=(10, 6))
# Frontera
plt.scatter(frontera['Vol'], frontera['Media'], c=frontera['RS'], cmap='RdYlBu', label='Frontera de mínima varianza')
plt.colorbar()
# Activos ind
for activo in list(annual_ret_summ.columns):
    plt.plot(annual_ret_summ.loc['Volatilidad', activo],
             annual_ret_summ.loc['Media', activo],
             'o',
             ms=5,
             label=activo)
# Port. óptimos
plt.plot(s_minvar, E_minvar, '*g', ms=10, label='Portafolio de mínima varianza')
plt.plot(s_emv, E_emv, '*r', ms=10, label='Portafolio eficiente en media varianza')
plt.xlabel('Volatilidad $\sigma$')
plt.ylabel('Rendimiento esperado $E[r]$')
plt.grid()
plt.legend(loc='best')
```

**A partir de lo anterior, solo restaría construir la LAC y elegir la distribución de capital de acuerdo a las preferencias (aversión al riesgo).**
___

## 3. Comentarios finales

### 3.1. Restricciones adicionales

Los inversionistas pueden tener restricciones adicionales:
1. Restricciones en posiciones cortas.
2. Pueden requerir un rendimiento mínimo.
3. Inversión socialmente responsable: prescinden de inversiones en negocios o paises considerados éticamente o políticamente indeseables.

Todo lo anterior se puede incluir como restricciones en el problema de optimización, y puede ser llevado a cabo a costa de un cociente de Sharpe menor.

### 3.2. Críticas a la optimización media varianza
1. Solo importan medias y varianzas: recordar que la varianza subestima el riesgo en algunos casos.
2. Preferencias media-varianza tratan las ganancias y pérdidas simétricamente: el sentimiento de insatisfacción de una perdida es mayor al sentimiento de satisfacción de una ganancia (aversión a pérdidas).
3. La aversión al riesgo es constante: la actitud frente al riesgo puede cambiar, por ejemplo con el estado de la economía.
4. Horizonte corto (un periodo).
5. Basura entra - basura sale: la optimización media varianza es supremamente sensible a las entradas: estimaciones de rendimientos esperados y varianzas.
___

# Anuncios parroquiales

## 1. Quiz la próxima clase (clases 12, 13, y 14).
## 2. Revisar archivo Tarea 6. Martes, 27 de Octubre.
## 3. [Nota interesante](http://yetanothermathprogrammingconsultant.blogspot.com/2016/08/portfolio-optimization-maximize-sharpe.html)
## 4. Martes 3 y Viernes 6 de Noviembre, ¡NO HAY CLASE!
## 5. Clase de repaso módulo 3 - Jueves 22 de Octubre 16:00-18:00.
## 7. Clases de repaso módulos 3 y 4 - Jueves 12 de Noviembre.
## 8. Examen final: Viernes 13 de Noviembre.

Created with Jupyter by Esteban Jiménez Rodríguez.