Vous êtes sur la page 1sur 25

Computación Científica Actuarial

Creación de Funciones y Estructuras de Control


mediante

Septiembre de 2018

Rodrigo Del Rosso

1
Creación de Funciones

Las funciones se crean mediante el argumento function()y se almacenan como objetos en


R. Por ejemplo:

Importante: las funciones pueden ser inputs como argumentos de otras funciones, pueden
ser anidadas (es decir, se puede definir una función dentro de otra función). El argumento
“return” es la última expresión del cuerpo de la función.

Las funciones poseen argumentos con nombres que potencialmente tienen valores por
defecto. Asimismo:

1. Los argumentos formales son los incluidos en la definición de la función


2. La función formals() devuelve una lista con todos los argumentos que posee una
función
3. No todas las funciones en R utilizan exhaustivamente todos sus argumentos
formales
4. Los argumentos de una función pueden ser omitidos o pueden tener valores por
defecto

2
Creación de Funciones

Los argumentos de las funciones pueden machear ya sea por orden o por nombre.
Los siguientes códigos para llamar a sd son idénticos:

Uno puede mezclar concordancia posicional con macheo por nombre. Cuando un argumento
es igualado por su nombre, éste se “extrae” de la lista de argumentos y los argumentos
restantes “sin nombres” se corresponden en el orden en que aparecen en la definición de la
función.

3
Creación de Funciones

4
Operadores
Estructurales

Permiten controlar el flujo de ejecución de un programa, dependiendo de las


condiciones de tiempo de ejecución. Los más comunes son:

• if, else: testea una condición

• for: ejecuta un loop mediante un número fijo de veces

• while: ejecuta un loop mientras se mantenga una condición

• repeat: ejecuta un loop infinito

• break: interrumpe la ejecución de un loop

• next: escapa a la interacción de un loop

• return: sale de una función

5
Operador “if”

6
Operador “if” dentro de una función
Ejemplo

Desarrollamos una pequeña función, priceCalculator(), que calcula el precio que se


cobra a un cliente basado en las horas de trabajo.

La función debe tener el número de horas (hours) y el precio por hora (ppc) como
entrada:

Imaginemos que tenemos algunos grandes clientes a los que se le aplica un


descuento por más de 100 horas de trabajo.

Reescriban la función teniendo en cuenta esta condición.

7
Operador “if” dentro de una función
Ejemplo

8
Operador “while”
Ejemplo

El while loops comienza probando una condición. Si ésta es cierta, se ejecuta el


cuerpo del bucle.

Una vez ejecutado el cuerpo del bucle, la condición es testeada de nuevo, y así
sucesivamente.

Tenemos que tener cuidado con este operador dado que los while loops pueden
resultar en procesos infinitos.

9
Operador “while”
Ejemplo

El siguiente código evalúa si un número entero es par o impar.

10
Operador “while”
Ejemplo

Se simula la tirada de una moneda (“0” o “1”)

𝑻𝒂𝒃𝒍𝒂𝒔 𝒅𝒆 𝑽𝒆𝒓𝒅𝒂𝒅
p q p and q p or q
True True True True
True False False True
False True False True
False False False False

11
Operador “while”
Ejemplo

12
Operador “while”
Ejemplo

Se repite
esta parte
del código

13
Operador “while”
Ejemplo

14
Ejemplo

Simular aleatoriamente 100.000 lanzamientos de:

a) una moneda con una probabilidad de 40% de que salga cara. Almacenar los
resultados en una variable A. Nota: Podría utilizar la función rbinom(100000, 1, .4)

b) una moneda con una probabilidad de 20% de que salga cara. Almacenar los
resultados en una variable B.

c) Use el operador & para combinar las variables A y B para estimar la probabilidad de
que tanto en A como en B se obtenga una cara.

15
Ejemplo
Simulación de Monte Carlo

Simular la probabilidad de obtener 3 caras en un experimento aleatorio que


consiste en lanzar 3 veces una moneda equilibrada (generar 10.000 replicaciones
del experimento)

16
Tarea

Se lanzan dos dados.

¿Cuál es la probabilidad de que la cara del primer dado sea un 2 si la suma de la


cara de dos dados es 7?

Resuelva mediante una simulación de Monte Carlo y compruebe analíticamente


su resultado

17
Algoritmos recursivos

La solución a un problema depende de la solución a instancias de menor tamaño del


mismo problema.

18
Algoritmos iterativos vs recursivos

La recursividad algorítmica es una herramienta poderosa para encontrar algoritmos


para problemas no triviales. Los pasos son,
1. Resolver el problema para los casos base.

2. Suponiendo que se tiene resuelto el problema para instancias de menor tamaño,


modificar dichas soluciones para obtener una solución al problema original.

La recursión ofrece otra forma de ciclar o repetir código. Ejemplo: Sumar desde 0 hasta
x
Suma Iterativa Suma Recursiva
𝑠 𝑥 = 0 + 1 + 2 + ⋯+ 𝑥 − 1 + 𝑥 𝑠 𝑥 =𝑠 𝑥−1 +𝑥

19
Algoritmos iterativos vs recursivos
Ejemplo – Sucesión de Fibonacci

La sucesión de Fibonacci se define como 𝐹1 = 1, 𝐹2 = 1, 𝐹𝑛 = 𝐹𝑛−1 + 𝐹𝑛−2 para n


>=3. Comienza así: 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

20
Objetos creados

21
Tarea

1. Definir una función recursiva factorial que calcule el producto de los primeros n
números naturales. Por ejemplo 4! = 4 * 3 * 2 * 1 = 24. Por convención, 0! = 1

2. Definir una función recursiva sumaRec que calcule la suma de un vector de


enteros

3. Escribir dos funciones producto y potencia que dados 𝑛, 𝑚 ∈ ℕ calculen 𝑛 ∗ 𝑚


y 𝑛𝑚 respectivamente en forma iterativa. No usar el operador “*”.

4. Definir una función recursiva producto que calcule el producto de dos números
naturales. No usar el operador “*” de R. Ayuda: considerar la propiedad n * m = (n
– 1) * m + m

5. Escribir una función iterativa FibIterativa que calcule la sucesión de Fibonacci

6. Escribir una función que dado como inputs un flujo de fondos y una tasa de
descuento (la cual suponemos constante), devuelva el valor actual neto

7. Escribir una función que devuelva el precio teórico de un Call Option mediante el
modelo de Black & Scholes (& Merton) – BSM -
22
Tarea
Fórmula de Black Scholes

23
Conclusiones

R/RStudio es un software ampliamente utilizado en el ámbito académico de


distintas Universidades.

Es importante la utilización de distintos lenguajes de programación para


automatizar Rutinas, tales como algoritmos de trading, arbitraje estadístico,
pricing de Derivados Financieros, etc.

Los algoritmos se pueden complejizar y adecuar a la realidad. Permite la


posibilidad de simular diversas trayectorias.

Sería de vital importancia incorporarlo en el proceso de aprendizaje de los


contenidos de las distintas materias de las carreras en Ciencias Económicas.

24
Bibliografía recomendada

25

Vous aimerez peut-être aussi