#Este script se puede dividir en 9 partes principales:
#Configuración Inicial: Carga de paquetes necesarios
#Descarga y Exploración: Obtención y análisis inicial de datos
#Selección Temporal: Diferentes formas de seleccionar períodos
#Análisis de Periodicidad: Conversión entre diferentes frecuencias
#Análisis por Períodos: Estudio de momentos específicos
#Cálculo de Rentabilidades: Diferentes métricas de rendimiento
#Visualización: Gráficos de precios y rentabilidades
#Exportación/Importación: Manejo de archivos
#Análisis Comparativo: Estudio de otro activo (Inditex)
#Aspectos destacables:
#Uso de quantmod para datos financieros
#Manejo de series temporales con xts
#Cálculo de diferentes tipos de rentabilidades
#Análisis estadístico básico
# PARTE 1: CONFIGURACIÓN INICIAL
# Carga de paquetes necesarios para análisis financiero
library(quantmod) # Para datos financieros
## 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
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(xts) # Para series temporales
library(zoo) # Para objetos ordenados
library(fBasics) # Para estadísticas básicas financieras
##
## Adjuntando el paquete: 'fBasics'
## The following object is masked from 'package:TTR':
##
## volatility
# PARTE 2: DESCARGA Y EXPLORACIÓN DE DATOS
# Descarga de datos de Apple
apple <- getSymbols("AAPL",
from="2020-01-01",
to=Sys.Date(),
auto.assign=FALSE)
# Exploración básica de datos
head(apple) # Primeros registros
## AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
## 2020-01-02 74.0600 75.1500 73.7975 75.0875 135480400 72.87610
## 2020-01-03 74.2875 75.1450 74.1250 74.3575 146322800 72.16761
## 2020-01-06 73.4475 74.9900 73.1875 74.9500 118387200 72.74265
## 2020-01-07 74.9600 75.2250 74.3700 74.5975 108872000 72.40054
## 2020-01-08 74.2900 76.1100 74.2900 75.7975 132079200 73.56519
## 2020-01-09 76.8100 77.6075 76.5500 77.4075 170108400 75.12778
tail(apple) # Últimos registros
## AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
## 2024-10-01 229.52 229.65 223.74 226.21 63285000 226.21
## 2024-10-02 225.89 227.37 223.02 226.78 32880600 226.78
## 2024-10-03 225.14 226.81 223.32 225.67 34044200 225.67
## 2024-10-04 227.90 228.00 224.13 226.80 37245100 226.80
## 2024-10-07 224.50 225.69 221.33 221.69 39505400 221.69
## 2024-10-08 224.30 225.98 223.25 225.77 31634500 225.77
class(apple) # Tipo de objeto
## [1] "xts" "zoo"
any(is.na(apple)) # Verificar valores faltantes
## [1] FALSE
# Extracción de precios específicos
open <- Op(apple) # Precio de apertura
close <- Cl(apple) # Precio de cierre
seriesHi(apple) # Máximos
## AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
## 2024-07-15 236.48 237.23 233.09 234.4 62631300 234.129
seriesLo(apple) # Mínimos
## AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
## 2020-03-23 57.02 57.125 53.1525 56.0925 336752800 54.56973
OpCl(apple) # Diferencia apertura-cierre
## OpCl.apple
## 2020-01-02 0.0138739401
## 2020-01-03 0.0009422810
## 2020-01-06 0.0204567176
## 2020-01-07 -0.0048358515
## 2020-01-08 0.0202920942
## 2020-01-09 0.0077789830
## 2020-01-10 -0.0008693481
## 2020-01-13 0.0170709041
## 2020-01-14 -0.0126934619
## 2020-01-15 -0.0016354329
## ...
## 2024-09-25 0.0064020028
## 2024-09-26 0.0009678892
## 2024-09-27 -0.0029327384
## 2024-09-30 0.0128673570
## 2024-10-01 -0.0144213903
## 2024-10-02 0.0039399681
## 2024-10-03 0.0023540854
## 2024-10-04 -0.0048266383
## 2024-10-07 -0.0125166929
## 2024-10-08 0.0065537280
# PARTE 3: SELECCIÓN TEMPORAL DE DATOS
# Diferentes formas de seleccionar períodos
apple23 <- apple["2023"] # Datos de 2023
apple["2023::"] # Desde 2023 hasta el final
## AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
## 2023-01-03 130.28 130.90 124.17 125.07 112117500 123.9046
## 2023-01-04 126.89 128.66 125.08 126.36 89113600 125.1826
## 2023-01-05 127.13 127.77 124.76 125.02 80962700 123.8551
## 2023-01-06 126.01 130.29 124.89 129.62 87754700 128.4122
## 2023-01-09 130.47 133.41 129.89 130.15 70790800 128.9373
## 2023-01-10 130.26 131.26 128.12 130.73 63896200 129.5119
## 2023-01-11 131.25 133.51 130.46 133.49 69458900 132.2462
## 2023-01-12 133.88 134.26 131.44 133.41 71379600 132.1669
## 2023-01-13 132.03 134.92 131.66 134.76 57809700 133.5043
## 2023-01-17 134.83 137.29 134.13 135.94 63646600 134.6733
## ...
## 2024-09-25 224.93 227.29 224.02 226.37 42308700 226.3700
## 2024-09-26 227.30 228.50 225.41 227.52 36636700 227.5200
## 2024-09-27 228.46 229.52 227.30 227.79 34026000 227.7900
## 2024-09-30 230.04 233.00 229.65 233.00 54541900 233.0000
## 2024-10-01 229.52 229.65 223.74 226.21 63285000 226.2100
## 2024-10-02 225.89 227.37 223.02 226.78 32880600 226.7800
## 2024-10-03 225.14 226.81 223.32 225.67 34044200 225.6700
## 2024-10-04 227.90 228.00 224.13 226.80 37245100 226.8000
## 2024-10-07 224.50 225.69 221.33 221.69 39505400 221.6900
## 2024-10-08 224.30 225.98 223.25 225.77 31634500 225.7700
apple[c("2020-02","2021-02","2022-02", # Meses específicos
"2023-02","2024-02")]
## AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
## 2020-02-03 76.0750 78.3725 75.5550 77.1650 173788400 74.89242
## 2020-02-04 78.8275 79.9100 78.4075 79.7125 136616400 77.36491
## 2020-02-05 80.8800 81.1900 79.7375 80.3625 118826800 77.99577
## 2020-02-06 80.6425 81.3050 80.0650 81.3025 105425600 78.90808
## 2020-02-07 80.5925 80.8500 79.5000 80.0075 117684000 77.83550
## 2020-02-10 78.5450 80.3875 78.4625 80.3875 109348800 78.20517
## 2020-02-11 80.9000 80.9750 79.6775 79.9025 94323200 77.73335
## 2020-02-12 80.3675 81.8050 80.3675 81.8000 113730400 79.57934
## 2020-02-13 81.0475 81.5550 80.8375 81.2175 94747600 79.01265
## 2020-02-14 81.1850 81.4950 80.7125 81.2375 80113600 79.03210
## 2020-02-18 78.8400 79.9375 78.6525 79.7500 152531200 77.58499
## 2020-02-19 80.0000 81.1425 80.0000 80.9050 93984000 78.70864
## 2020-02-20 80.6575 81.1625 79.5525 80.0750 100566000 77.90116
## 2020-02-21 79.6550 80.1125 77.6250 78.2625 129554000 76.13787
## 2020-02-24 74.3150 76.0450 72.3075 74.5450 222195200 72.52129
## 2020-02-25 75.2375 75.6325 71.5325 72.0200 230673600 70.06483
## 2020-02-26 71.6325 74.4700 71.6250 73.1625 198054800 71.17632
## 2020-02-27 70.2750 71.5000 68.2400 68.3800 320605600 66.52367
## 2020-02-28 64.3150 69.6025 64.0925 68.3400 426510000 66.48475
## 2021-02-01 133.7500 135.3800 130.9300 134.1400 106239800 131.31381
## 2021-02-02 135.7300 136.3100 134.6100 134.9900 83305400 132.14589
## 2021-02-03 135.7600 135.7700 133.6100 133.9400 89880900 131.11798
## 2021-02-04 136.3000 137.4000 134.5900 137.3900 84183100 134.49532
## 2021-02-05 137.3500 137.4200 135.8600 136.7600 75693800 134.07864
## 2021-02-08 136.0300 136.9600 134.9200 136.9100 71297200 134.22569
## 2021-02-09 136.6200 137.8800 135.8500 136.0100 76774200 133.34334
## 2021-02-10 136.4800 136.9900 134.4000 135.3900 73046600 132.73552
## 2021-02-11 135.9000 136.3900 133.7700 135.1300 64280000 132.48059
## 2021-02-12 134.3500 135.5300 133.6900 135.3700 60145100 132.71588
## 2021-02-16 135.4900 136.0100 132.7900 133.1900 80576300 130.57863
## 2021-02-17 131.2500 132.2200 129.4700 130.8400 97918500 128.27472
## 2021-02-18 129.2000 130.0000 127.4100 129.7100 96856700 127.16686
## 2021-02-19 130.2400 130.7100 128.8000 129.8700 87668800 127.32372
## 2021-02-22 128.0100 129.7200 125.6000 126.0000 103916400 123.52960
## 2021-02-23 123.7600 126.7100 118.3900 125.8600 158273000 123.39234
## 2021-02-24 124.9400 125.5600 122.2300 125.3500 111039900 122.89234
## 2021-02-25 124.6800 126.4600 120.5400 120.9900 148199500 118.61784
## 2021-02-26 122.5900 124.8500 121.2000 121.2600 164560400 118.88255
## 2022-02-01 174.0100 174.8400 172.3100 174.6100 86213900 171.98488
## 2022-02-02 174.7500 175.8800 173.3300 175.8400 84914300 173.19637
## 2022-02-03 174.4800 176.2400 172.1200 172.9000 89418100 170.30055
## 2022-02-04 171.6800 174.1000 170.6800 172.3900 82465400 170.01459
## 2022-02-07 172.8600 173.9500 170.9500 171.6600 77251200 169.29465
## 2022-02-08 171.7300 175.3500 171.4300 174.8300 74829200 172.42093
## 2022-02-09 176.0500 176.6500 174.9000 176.2800 71285000 173.85098
## 2022-02-10 174.1400 175.4800 171.5500 172.1200 90865900 169.74831
## 2022-02-11 172.3300 173.0800 168.0400 168.6400 98670700 166.31624
## 2022-02-14 167.3700 169.5800 166.5600 168.8800 86185500 166.55295
## 2022-02-15 170.9700 172.9500 170.2500 172.7900 62527400 170.40904
## 2022-02-16 171.8500 173.3400 170.0500 172.5500 61177400 170.17236
## 2022-02-17 171.0300 171.9100 168.4700 168.8800 69589300 166.55295
## 2022-02-18 169.8200 170.5400 166.1900 167.3000 82772700 164.99471
## 2022-02-22 164.9800 166.6900 162.1500 164.3200 91162800 162.05579
## 2022-02-23 165.5400 166.1500 159.7500 160.0700 90009200 157.86435
## 2022-02-24 152.5800 162.8500 152.0000 162.7400 141147500 160.49753
## 2022-02-25 163.8400 165.1200 160.8700 164.8500 91974200 162.57845
## 2022-02-28 163.0600 165.4200 162.4300 165.1200 95056600 162.84474
## 2023-02-01 143.9700 146.6100 141.3200 145.4300 77663600 144.07492
## 2023-02-02 148.9000 151.1800 148.1700 150.8200 118339000 149.41470
## 2023-02-03 148.0300 157.3800 147.8300 154.5000 154357300 153.06042
## 2023-02-06 152.5700 153.1000 150.7800 151.7300 69858300 150.31621
## 2023-02-07 150.6400 155.2300 150.6400 154.6500 83322600 153.20901
## 2023-02-08 153.8800 154.5800 151.1700 151.9200 64120100 150.50446
## 2023-02-09 153.7800 154.3300 150.4200 150.8700 56007100 149.46423
## 2023-02-10 149.4600 151.3400 149.2200 151.0100 57450700 149.83133
## 2023-02-13 150.9500 154.2600 150.9200 153.8500 62199000 152.64920
## 2023-02-14 152.1200 153.7700 150.8600 153.2000 61707600 152.00424
## 2023-02-15 153.1100 155.5000 152.8800 155.3300 65573800 154.11761
## 2023-02-16 153.5100 156.3300 153.3500 153.7100 68167900 152.51027
## 2023-02-17 152.3500 153.0000 150.8500 152.5500 59144100 151.35931
## 2023-02-21 150.2000 151.3000 148.4100 148.4800 58867200 147.32111
## 2023-02-22 148.8700 149.9500 147.1600 148.9100 51011300 147.74774
## 2023-02-23 150.0900 150.3400 147.2400 149.4000 48394200 148.23392
## 2023-02-24 147.1100 147.1900 145.7200 146.7100 55469600 145.56493
## 2023-02-27 147.7100 149.1700 147.4500 147.9200 44998500 146.76546
## 2023-02-28 147.0500 149.0800 146.8300 147.4100 50547000 146.25946
## 2024-02-01 183.9900 186.9500 183.8200 186.8600 64885400 186.15363
## 2024-02-02 179.8600 187.3300 179.2500 185.8500 102518000 185.14743
## 2024-02-05 188.1500 189.2500 185.8400 187.6800 69668800 186.97050
## 2024-02-06 186.8600 189.3100 186.7700 189.3000 43490800 188.58438
## 2024-02-07 190.6400 191.0500 188.6100 189.4100 53439000 188.69397
## 2024-02-08 189.3900 189.5400 187.3500 188.3200 40962000 187.60809
## 2024-02-09 188.6500 189.9900 188.0000 188.8500 45155200 188.37616
## 2024-02-12 188.4200 188.6700 186.7900 187.1500 41781900 186.68042
## 2024-02-13 185.7700 186.2100 183.5100 185.0400 56529500 184.57571
## 2024-02-14 185.3200 185.5300 182.4400 184.1500 54630500 183.68794
## 2024-02-15 183.5500 184.4900 181.3500 183.8600 65434500 183.39868
## 2024-02-16 183.4200 184.8500 181.6700 182.3100 49701400 181.85255
## 2024-02-20 181.7900 182.4300 180.0000 181.5600 53665600 181.10445
## 2024-02-21 181.9400 182.8900 180.6600 182.3200 41529700 181.86255
## 2024-02-22 183.4800 184.9600 182.4600 184.3700 52292200 183.90738
## 2024-02-23 185.0100 185.0400 182.2300 182.5200 45119700 182.06206
## 2024-02-26 182.2400 182.7600 180.6500 181.1600 40867400 180.70546
## 2024-02-27 181.1000 183.9200 179.5600 182.6300 54318900 182.17177
## 2024-02-28 182.5100 183.1200 180.1300 181.4200 48953900 180.96480
## 2024-02-29 181.2700 182.5700 179.5300 180.7500 136682600 180.29648
# Funciones de selección temporal
last(apple, "3 weeks") # Últimas 3 semanas
## AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
## 2024-09-23 227.34 229.45 225.81 226.47 54146000 226.47
## 2024-09-24 228.65 229.35 225.73 227.37 43556100 227.37
## 2024-09-25 224.93 227.29 224.02 226.37 42308700 226.37
## 2024-09-26 227.30 228.50 225.41 227.52 36636700 227.52
## 2024-09-27 228.46 229.52 227.30 227.79 34026000 227.79
## 2024-09-30 230.04 233.00 229.65 233.00 54541900 233.00
## 2024-10-01 229.52 229.65 223.74 226.21 63285000 226.21
## 2024-10-02 225.89 227.37 223.02 226.78 32880600 226.78
## 2024-10-03 225.14 226.81 223.32 225.67 34044200 225.67
## 2024-10-04 227.90 228.00 224.13 226.80 37245100 226.80
## 2024-10-07 224.50 225.69 221.33 221.69 39505400 221.69
## 2024-10-08 224.30 225.98 223.25 225.77 31634500 225.77
first(last(apple,"3 weeks"), "2 days") # Primeros 2 días de las últimas 3 semanas
## AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
## 2024-09-23 227.34 229.45 225.81 226.47 54146000 226.47
## 2024-09-24 228.65 229.35 225.73 227.37 43556100 227.37
# PARTE 4: ANÁLISIS DE PERIODICIDAD
periodicity(apple) # Periodicidad de los datos
## Daily periodicity from 2020-01-02 to 2024-10-08
apple_week <- to.weekly(apple) # Conversión a semanal
apple_month <- to.monthly(apple) # Conversión a mensual
apple_year <- to.yearly(apple) # Conversión a anual
# Identificación de puntos finales
endpoints(apple, on="months") # Fin de cada mes
## [1] 0 21 40 62 83 103 125 147 168 189 211 231 253 272 291
## [16] 314 335 355 377 398 420 441 462 483 505 525 544 567 587 608
## [31] 629 649 672 693 714 735 756 776 795 818 837 859 880 900 923
## [46] 943 965 986 1006 1027 1047 1067 1089 1111 1130 1152 1174 1194 1200
endpoints(apple, on="weeks") # Fin de cada semana
## [1] 0 2 7 12 16 21 26 31 35 40 45 50 55 60 65
## [16] 69 74 79 84 89 94 99 103 108 113 118 123 127 132 137
## [31] 142 147 152 157 162 167 172 176 181 186 191 196 201 206 211
## [46] 216 221 226 230 235 240 245 249 253 258 263 267 272 277 282
## [61] 286 291 296 301 306 311 315 320 325 330 335 340 345 350 355
## [76] 359 364 369 374 379 383 388 393 398 403 408 413 418 423 427
## [91] 432 437 442 447 452 457 462 467 472 477 481 486 491 496 500
## [106] 505 510 515 519 524 529 534 539 543 548 553 558 563 568 573
## [121] 577 582 587 592 597 602 607 611 616 621 625 630 634 639 644
## [136] 649 654 659 664 669 674 678 683 688 693 698 703 708 713 718
## [151] 723 728 732 737 742 747 752 756 760 765 769 774 779 784 789
## [166] 793 798 803 808 813 818 822 827 832 837 842 847 852 857 861
## [181] 866 871 875 880 884 889 894 899 904 909 914 919 924 928 933
## [196] 938 943 948 953 958 963 968 973 978 982 987 992 997 1002 1006
## [211] 1010 1015 1019 1024 1029 1034 1039 1043 1048 1053 1058 1063 1067 1072 1077
## [226] 1082 1087 1092 1097 1102 1107 1111 1116 1121 1125 1130 1134 1139 1144 1149
## [241] 1154 1159 1164 1169 1174 1178 1183 1188 1193 1198 1200
endpoints(apple, on="quarters") # Fin de cada trimestre
## [1] 0 62 125 189 253 314 377 441 505 567 629 693 756 818 880
## [16] 943 1006 1067 1130 1194 1200
# PARTE 5: ANÁLISIS POR PERÍODOS ESPECÍFICOS
# Análisis por mes
precio_enero <- apple$AAPL.Adjusted[.indexmon(apple)==0] # Precios de enero
precio_lunes <- apple$AAPL.Adjusted[.indexwday(apple)==1] # Precios de lunes
# PARTE 6: CÁLCULO DE RENTABILIDADES
# Diferentes tipos de rentabilidades
rend <- 100*dailyReturn(apple, type="log") # Rentabilidad diaria
rend_mensual <- 100*monthlyReturn(apple,type="log") # Rentabilidad mensual
# PARTE 7: VISUALIZACIÓN
par(mfrow=c(2,1)) # División de la ventana gráfica
chart_Series(apple$AAPL.Adjusted) # Gráfico de precios
chart_Series(rend) # Gráfico de rentabilidades

# PARTE 8: EXPORTACIÓN E IMPORTACIÓN DE DATOS
write.zoo(rend, "./datos/rendApple.csv") # Exportar datos
rendApple <- read.zoo("./datos/rendApple.csv",
header=TRUE,
format="%Y-%m-%d") # Importar datos
# PARTE 9: ANÁLISIS DE OTRO ACTIVO (INDITEX)
inditex <- getSymbols("ITX.MC",
from="2023-01-01",
to="2023-12-31",
auto.assign=FALSE)
# Cálculo de rentabilidades y estadísticos
rend_inditex <- 100*dailyReturn(inditex, type="log")
rend_medio_mensual <- apply.monthly(rend_inditex,
FUN=function(x) mean(x))
estadisticos <- basicStats(rend_inditex)