Como elegir nuestros datos

  1. Seleccionar un instrumento financiero
  2. Identificar una fuente de datos adecuada
  3. Definir el rango temporal de interés
  4. Acceder y obtener datos
# APIs
library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
tseries<-get.hist.quote(instrument = "AAPL", start = "2010-01-01", end = "2023-01-01", quote = "AdjClose", provider = "yahoo", origin = "1970-01-01", retclass = "zoo")
## time series starts 2010-01-04
## time series ends   2022-12-30
library(quantmod)
## Cargando paquete requerido: xts
## Cargando paquete requerido: zoo
## 
## Adjuntando el paquete: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## Cargando paquete requerido: TTR
getSymbols("AAPL", src = "yahoo", from= "2010-01-01", to= "2023-01-01")
## [1] "AAPL"
library(tidyquant)
## Cargando paquete requerido: lubridate
## 
## Adjuntando el paquete: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
## Cargando paquete requerido: PerformanceAnalytics
## 
## Adjuntando el paquete: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
## 
##     legend
symbol<- "AAPL"
data<- tq_get(symbol, from= "2010-01-01", to= "2023-01-01")
 
#Manual
##Importar datos
library(readxl)
library(openxlsx)
Alfa<- read_excel("Alfa.xlsx")


#Recortar#
library(dplyr)
## 
## ######################### Warning from 'xts' package ##########################
## #                                                                             #
## # The dplyr lag() function breaks how base R's lag() function is supposed to  #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or       #
## # source() into this session won't work correctly.                            #
## #                                                                             #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop           #
## # dplyr from breaking base R's lag() function.                                #
## #                                                                             #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning.  #
## #                                                                             #
## ###############################################################################
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:xts':
## 
##     first, last
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
df<- Alfa[-c(2:4,6)]
summary(Alfa)
##     Fecha           ALFAA.MX.Open   ALFAA.MX.High    ALFAA.MX.Low  
##  Length:373         Min.   : 6.30   Min.   : 6.74   Min.   : 6.12  
##  Class :character   1st Qu.:12.01   1st Qu.:12.22   1st Qu.:11.80  
##  Mode  :character   Median :13.50   Median :13.75   Median :13.20  
##                     Mean   :13.07   Mean   :13.32   Mean   :12.79  
##                     3rd Qu.:14.36   3rd Qu.:14.62   3rd Qu.:14.11  
##                     Max.   :17.10   Max.   :17.49   Max.   :16.74  
##                                                                    
##  ALFAA.MX.Close  ALFAA.MX.Volume     ALFAA.MX.Adjusted     Dia           
##  Min.   : 6.40   Min.   :   348799   Min.   : 6.387    Length:373        
##  1st Qu.:12.03   1st Qu.:  5026148   1st Qu.:12.010    Class :character  
##  Median :13.47   Median :  7751798   Median :13.442    Mode  :character  
##  Mean   :13.06   Mean   : 11286706   Mean   :13.033                      
##  3rd Qu.:14.34   3rd Qu.: 11154689   3rd Qu.:14.336                      
##  Max.   :16.99   Max.   :538464233   Max.   :16.955                      
##  NA's   :3

#Variables, Tipos de Datos y Expresiones Basicas

edad<-25
nombre<-"Maria" #chr
salario<-50000 #double
es_empleado<-TRUE #logical

class(nombre)
## [1] "character"
typeof(salario)
## [1] "double"
class(es_empleado)
## [1] "logical"
str(Alfa)
## tibble [373 × 8] (S3: tbl_df/tbl/data.frame)
##  $ Fecha            : chr [1:373] "2020-01-02" "2020-01-03" "2020-01-06" "2020-01-07" ...
##  $ ALFAA.MX.Open    : num [1:373] 15.8 16.2 16.3 16.6 16.1 ...
##  $ ALFAA.MX.High    : num [1:373] 16.3 16.4 16.6 16.6 16.5 ...
##  $ ALFAA.MX.Low     : num [1:373] 15.8 16.1 16.3 16 16 ...
##  $ ALFAA.MX.Close   : num [1:373] 16.2 16.4 16.5 16.1 16.4 ...
##  $ ALFAA.MX.Volume  : num [1:373] 3605877 4177223 2999994 3496828 4687691 ...
##  $ ALFAA.MX.Adjusted: num [1:373] 16.1 16.3 16.5 16.1 16.4 ...
##  $ Dia              : chr [1:373] "Lunes" "Martes" "Miercoles" "Jueves" ...
suma <- 10 + salario
resta<- 10 - 5
division<- 10/5

x<- 30
y<- 50
suma_variables<- x + y

#Vectores, Matrices y Data frames Vector: Una secuencia de datos del mismo tipo

precios<- c(100,150,400,130, 180, 50)
retornos<- diff(log(precios))

matrix_precios<- matrix(c(100,150,400,130, 180, 50), nrow = , ncol = 3)
matrix_precios
##      [,1] [,2] [,3]
## [1,]  100  400  180
## [2,]  150  130   50
fecha<- c("2022-01-01", "2023-01-01", "2023-02-01" , "2023-04-01", "2023-05-01", "2023-04-01")
datos_financieros<- data.frame(Fechas= fecha, Precios = precios)

datos_financieros
##       Fechas Precios
## 1 2022-01-01     100
## 2 2023-01-01     150
## 3 2023-02-01     400
## 4 2023-04-01     130
## 5 2023-05-01     180
## 6 2023-04-01      50

#Serie de Tiempo

serie_temporal<- ts(retornos, start = c(2022, 1), frequency = 1)
serie_temporal
## Time Series:
## Start = 2022 
## End = 2026 
## Frequency = 1 
## [1]  0.4054651  0.9808293 -1.1239301  0.3254224 -1.2809338
plot(serie_temporal, main="Serie tiempo", xlab= "Fecha", ylab= "Valor")

#Datos Faltantes ##IMputación o sustitución por la media 1. Estimamos una base de datos sin NAs 2. Estimar el promedio de la variable sin los datos faltantes 3. Sustituir

df
## # A tibble: 373 × 4
##    Fecha      ALFAA.MX.Close ALFAA.MX.Adjusted Dia      
##    <chr>               <dbl>             <dbl> <chr>    
##  1 2020-01-02           16.2              16.1 Lunes    
##  2 2020-01-03           16.4              16.3 Martes   
##  3 2020-01-06           16.5              16.5 Miercoles
##  4 2020-01-07           16.1              16.1 Jueves   
##  5 2020-01-08           16.4              16.4 Viernes  
##  6 2020-01-09           16.4              16.3 Lunes    
##  7 2020-01-10           16.0              16.0 Martes   
##  8 2020-01-13           16.1              16.0 Miercoles
##  9 2020-01-14           NA                15.8 Jueves   
## 10 2020-01-15           NA                15.2 Viernes  
## # ℹ 363 more rows
summary(df)
##     Fecha           ALFAA.MX.Close  ALFAA.MX.Adjusted     Dia           
##  Length:373         Min.   : 6.40   Min.   : 6.387    Length:373        
##  Class :character   1st Qu.:12.03   1st Qu.:12.010    Class :character  
##  Mode  :character   Median :13.47   Median :13.442    Mode  :character  
##                     Mean   :13.06   Mean   :13.033                      
##                     3rd Qu.:14.34   3rd Qu.:14.336                      
##                     Max.   :16.99   Max.   :16.955                      
##                     NA's   :3
Alfa_SNA<- na.omit(df)

Media_Precio_Alfa = mean(Alfa_SNA$ALFAA.MX.Close)

summary(Alfa)
##     Fecha           ALFAA.MX.Open   ALFAA.MX.High    ALFAA.MX.Low  
##  Length:373         Min.   : 6.30   Min.   : 6.74   Min.   : 6.12  
##  Class :character   1st Qu.:12.01   1st Qu.:12.22   1st Qu.:11.80  
##  Mode  :character   Median :13.50   Median :13.75   Median :13.20  
##                     Mean   :13.07   Mean   :13.32   Mean   :12.79  
##                     3rd Qu.:14.36   3rd Qu.:14.62   3rd Qu.:14.11  
##                     Max.   :17.10   Max.   :17.49   Max.   :16.74  
##                                                                    
##  ALFAA.MX.Close  ALFAA.MX.Volume     ALFAA.MX.Adjusted     Dia           
##  Min.   : 6.40   Min.   :   348799   Min.   : 6.387    Length:373        
##  1st Qu.:12.03   1st Qu.:  5026148   1st Qu.:12.010    Class :character  
##  Median :13.47   Median :  7751798   Median :13.442    Mode  :character  
##  Mean   :13.06   Mean   : 11286706   Mean   :13.033                      
##  3rd Qu.:14.34   3rd Qu.: 11154689   3rd Qu.:14.336                      
##  Max.   :16.99   Max.   :538464233   Max.   :16.955                      
##  NA's   :3

Conclusión

Lo que aprendí durante este ejercicio es un poco sobre la forma en como podemos seleccionar datos dentro de este programa para realizar alguna programación, también como podemos sustituir los datos que faltan y lo que son los vectores y matrices junto con los Data Frames, por otro lado, me gustó la forma en como se desarrolló la gráfica de la series de tiempo. Lo que más se me dificultó al principio fue la forma la redacción del código, ya que, cometó muchos errores, sin embargo, después se me fue dificultando más identficar los errores por los que no corrían mis códigos.

Quiz:

1.- Describe cómo usarías quantmod para analizar datos financieros. El paquete quantmod facilita la obtención y el análisis de datos financieros. Permite descargar datos de fuentes como Yahoo Finance, visualizar gráficos, y añadir indicadores técnicos como medias móviles.

2.- ¿Por qué es crucial entender los tipos de datos en R para el análisis financiero?

Entender los tipos de datos es crucial para asegurar la precisión en los cálculos, optimizar el rendimiento y utilizar correctamente las funciones específicas de R. Esto es esencial para evitar errores y mejorar la eficiencia en el análisis financiero.

3.- Explica cómo manejarías los datos faltantes en una serie de tiempo financiera.

Para manejar datos faltantes en series de tiempo financieras, se pueden eliminar los datos faltantes, interpolar valores, o rellenar con valores previos o siguientes.

4.- ¿Qué estructura de datos en R prefieres para series de tiempo y por qué?

La verdad desconozco muy bien de qué se trata como tal, sin embargo, tenfo entendido que la estructura de datos preferida para series de tiempo en R es xts o zoo, debido a su eficiencia en la manipulación de datos temporales, compatibilidad con otros paquetes y funciones avanzadas para la alineación y agregación de datos.

5.- ¿Cómo eliges la fuente de datos adecuada para análisis de series de tiempo financieras?

Elegir la fuente de datos adecuada depende de la fiabilidad, exactitud, frecuencia de actualización y facilidad de acceso. Fuentes como Yahoo Finance y Bloomberg son confiables y precisas, y la elección específica depende del tipo de datos necesarios (históricos o en tiempo real) y la disponibilidad de APIs para acceder a ellos.