#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)