Introducción

Un tema muy hablado los últimos meses y que casi todos han escuchado al menos una vez es la evolución de las criptomonedas, tales como Bitcoin o Ethereum. Respecto a la primera se sabe que su preció subió parabólicamente durante un largo período, lo que provocó que se comienze a hablar sobre “la moneda del futuro” y la gente empezó a plantearse que tal vez las criptomonedas acaben desplazando a las otras monedas en el mundo. Sea esto verdad o no, el propósito de este reporte es distinto, se desea ver cómo la evolución de las criptomonedas puede afectar en otro aspecto, específicamente, el precio de las tarjetas gráficas. Con la subida de popularidad de las criptomonedas, mucha gente comenzó a minar estas, y para ello, era necesario invertir en un computador de calidad que pudiese hacer el proceso de manera eficiente, de esta forma, la demanda por las tarjetas gráficas ha aumentado y esto ha afectado bastante en su precio. En este reporte se mostrará con más detalle esta evolución.

Datos Utilizados

Se utilizó un dataset de Kaggle llamado “Ethereum Effect impact on PC parts prices”. Este dataset contiene la información a lo largo del tiempo de más de 2000 tarjetas gráficas, cerca de 1600 procesadores y unas 3700 memorias RAM, además de 15 criptomonedas distintas.

La información de los modelos de GPUs se ve resumida en la siguiente tabla.

head(DIM_GPU_PROD)
##   Processor_Manufacturer    Processor GPU_Manufacturer Memory_Capacity
## 1                    AMD         C420           Matrox           2.000
## 2                    AMD         C680           Matrox           2.000
## 3                    AMD         C680           Matrox           4.000
## 4                    AMD         C900           Matrox           4.000
## 5                    AMD FireGL V3300              AMD           0.125
## 6                    AMD FireGL V3600              AMD           0.250
##   Memory_Type ProdId
## 1       GDDR5      1
## 2       GDDR5      2
## 3       GDDR5      3
## 4       GDDR5      4
## 5       GDDR2      5
## 6       GDDR2      6

Las distintas monedas utilizadas se ven aquí.

head(DIM_CRYPTO_DATA)
##   Id Code Currency_Name Is_Mineable
## 1  1  ADA       Cardano           0
## 2  2  BTC       Bitcoin           1
## 3  3 DASH          DASH           1
## 4  4 DOGE      Dogecoin           1
## 5  5  EOS           EOS           0
## 6  6  ETH      Ethereum           1

El tiempo está codificado de la siguiente manera:

head(DIM_TIME)
##         Id Year Month Day Week
## 1 20130322 2013     3  22   12
## 2 20130323 2013     3  23   12
## 3 20130326 2013     3  26   13
## 4 20130327 2013     3  27   13
## 5 20130328 2013     3  28   13
## 6 20130329 2013     3  29   13

El precio de las GPUs se muestra en la tabla siguiente, donde prodId es una tarjeta en específico, y su precio se muestra en distintas fechas, en distintas regiones y según distintos vendedores.

head(FACT_GPU_PRICE)
##   ProdId   TimeId RegionId MerchantId Price_USD Price_Original
## 1      1 20140917        4         32  601.7384         463.90
## 2      1 20140918        4         32  551.8853         425.87
## 3      1 20140919        4         32  548.0989         424.53
## 4      1 20140920        4         32  545.0939         424.53
## 5      1 20140921        4         32  544.6742         424.53
## 6      1 20140922        4         32  547.9331         427.07

Por último, las criptomonedas también tienen su precio según fecha, como se muestra aquí:

head(FACT_CRYPTO_RATE)
##   CodeId   TimeId     Open    Close     High      Low       Date
## 1      1 20171103 0.021418 0.022628 0.023213 0.019827 2017-11-03
## 2      1 20171104 0.022641 0.022022 0.023849 0.021970 2017-11-04
## 3      1 20171105 0.022054 0.020635 0.023006 0.020635 2017-11-05
## 4      1 20171106 0.020977 0.021881 0.023609 0.020534 2017-11-06
## 5      1 20171107 0.021846 0.022195 0.023347 0.021414 2017-11-07
## 6      1 20171108 0.021912 0.025186 0.026393 0.021660 2017-11-08

Los valores de algunas de las principales criptomonedas minables se ven en los siguientes gráficos. Se puede ver que todos ellos tienen un alza a finales de 2017 y comienzo de 2018.

Se puede observar que todos estos gráficos tienen una característica en común: a mediados de 2017 tuvieron un alza leve, luego continuaron más o menos constantes y a comienzos de 2018 el gráfico se dispara en un peak mucho más alto que en cualquier otro tiempo. Todas estas criptomonedas son minables con tarjetas gráficas.

A través de un poco de investigación se logra adquirir información sobre las GPUs más utilizadas para minar criptomonedas, obteniendo como principales productos los siguientes: NVIDIA Geforce 1060, NVIDIA Geforce 1070, AMD Radeon 570 y AMD Radeon 580. Teniendo esto, se procede a graficar los precios de estas tarjetas en el tiempo, obteniendo los siguientes resultados:

Se puede ver que todos estos gráficos siguen un patrón similar al de las criptomonedas, donde en mitad de 2017 tienen un alza, para luego tener un gran peak a principios de 2018. Esto queda aún más evidenciado al superponer los gráficos de la Geforce 1060 con Ethereum.

Aquí se observa que el gráfico de la Geforce 1060 pareciera ser muy similar al de la criptomoneda, pero desplazado ligeramente hacia la derecha.

Métodos estadísticos

Para mostrar mejor la relación entre estas variables, se utilizan algunos métodos estadísticos: primero se realiza una matriz de correlación entre las tarjetas gráficas que se encontraron anteriormente y dos de las critpomonedas más minadas.

## corrplot 0.84 loaded
corrplot.mixed(correlation_GTX)

corrplot.mixed(correlation_RX)

En general tenían todas correlación bastante alta y, en particualar, todas tienen sobre 0,7 con Ethereum. Sin embargo, no se puede concluir mucho con tomar sólo la correlación de estas tarjetas. Es por eso que se decidió calcular la correlación de todas las tarjetas disponibles que tuviesen más de 150 datos con Ethereum y a esta información aplicarle un k-means de 4 clusters. El resultado se observa en el siguiente gráfico:

Primero se nota que casi todas las tarjetas con suficientes datos tienen una correlación positiva y un gran número supera el 0.7. De este gráfico se plantea tomar el cluster de más a la derecha y analizar las tarjetas que pertenezcan a él:

high_correlation
##    ProdId correlation size Processor_Manufacturer       Processor
## 1     881   0.7170499  191                    AMD   Radeon RX 480
## 2     924   0.7354206  160                    AMD   Radeon RX 580
## 3     928   0.6398726  153                    AMD   Radeon RX 580
## 4     996   0.6843883  327                 NVidia    GeForce 1050
## 5     999   0.6521984  177                 NVidia    GeForce 1050
## 6    1008   0.7523829  372                 NVidia GeForce 1050 Ti
## 7    1011   0.7639053  305                 NVidia GeForce 1050 Ti
## 8    1015   0.6935375  298                 NVidia GeForce 1050 Ti
## 9    1018   0.6183120  224                 NVidia GeForce 1050 Ti
## 10   1020   0.6221499  163                 NVidia    GeForce 1060
## 11   1022   0.6339439  339                 NVidia    GeForce 1060
## 12   1023   0.6858863  417                 NVidia    GeForce 1060
## 13   1028   0.7613996  234                 NVidia    GeForce 1060
## 14   1029   0.7162084  360                 NVidia    GeForce 1060
## 15   1038   0.6998861  381                 NVidia    GeForce 1060
## 16   1043   0.7267087  262                 NVidia    GeForce 1060
## 17   1045   0.6492558  237                 NVidia    GeForce 1060
## 18   1047   0.7019315  382                 NVidia    GeForce 1070
## 19   1048   0.6932990  513                 NVidia    GeForce 1070
## 20   1051   0.6401135  282                 NVidia    GeForce 1070
## 21   1054   0.7056560  382                 NVidia    GeForce 1070
## 22   1090   0.6704854  227                 NVidia GeForce 1080 Ti
## 23   1093   0.6921080  273                 NVidia GeForce 1080 Ti
## 24   1102   0.6549090  247                 NVidia GeForce 1080 Ti
##    GPU_Manufacturer Memory_Capacity Memory_Type
## 1               XFX               8       GDDR5
## 2               MSI               8       GDDR5
## 3          Sapphire               8       GDDR5
## 4              EVGA               2       GDDR5
## 5          Gigabyte               2       GDDR5
## 6              EVGA               4       GDDR5
## 7          Gigabyte               4       GDDR5
## 8               MSI               4       GDDR5
## 9             Zotac               4       GDDR5
## 10             Asus               3       GDDR5
## 11             EVGA               3       GDDR5
## 12             EVGA               6       GDDR5
## 13         Gigabyte               3       GDDR5
## 14         Gigabyte               6       GDDR5
## 15              MSI               6       GDDR5
## 16              PNY               6       GDDR5
## 17            Zotac               6       GDDR5
## 18             Asus               8       GDDR5
## 19             EVGA               8       GDDR5
## 20         Gigabyte               8       GDDR5
## 21              MSI               8       GDDR5
## 22             Asus              11      GDDR5X
## 23             EVGA              11      GDDR5X
## 24              MSI              11      GDDR5X

En este cluster se encontraron 24 GPUs, de ellas, 2 corresponden a la Radeon RX 580 (con distintos fabricantes), 8 corresponden a la Geforce 1060 y 4 corresponden a la Geforce 1070. Dejando un total de 14 tarjetas que corresponden a las más utilizadas para minar. Además, 3 son de Geforce 1080 Ti y 4 de la Geforce 1050 Ti, que también son usadas frecuentemente para este fin. Cabe mencionar que la Radeon RX 570 no se encuentra en el primer cluster, sin embargo, se verificó que ninguna de las versiones de esta tarjeta tenía más de 150 datos, por lo que fue filtrada antes del clustering.

Finalmente se quizo hacer un clasificador para intentar predecir los precios de las GPUs en base al precio de las criptomonedas. Se tomó una GPU en específico y se clasificaron los precios en rangos. A esto se le aplicó un decision tree y se obtuvo lo siguiente:

#from sklearn.tree import DecisionTreeClassifier
#from sklearn.metrics import accuracy_score
#from sklearn.metrics import classification_report
#from sklearn.model_selection import train_test_split

#df = Datosxfinal
#df1 = Datosyfinal

#X=df
#Y=df1

#X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=.33, random_state=37, stratify=Y)

#clf = DecisionTreeClassifier()
#clf.fit(X_train, y_train)    ## Entrenamos con X_train y clases y_train

#y_pred = clf.predict(X_test)   ## Predecimos con nuevos datos (los de test X_test)
#print("Accuracy en test set:", accuracy_score(y_test, y_pred))   ## Evaluam
clase precision recall f1score support
0 0.9 0.95 0.93 106
1 0.68 0.5 0.58 26
2 0.5 0.6 0.55 5
3 0.5 0.5 0.5 2
avg/total 0.84 0.85 0.84 139

Estos resultados no fueron tan satisfactorios comos se esperaba. Lo primero que se nota es que los estadísticos de las clases 2 y 3 son bastante bajos. Esto se podría deber a que la cantidad de datos no era suficiente, pues el support de estas dos clases también es muy inferior a lo que se esperaría de un clasificador.

Conclusiones

Se puede notar que las criptomonedas afectaron al precio de las GPUs con bastante seguridad, gracias a los diferentes métodos que se realizaron en el proyecto. Primero que todo se pudo ver una alta correlación entre los GPUs y las criptomonedas a partir de la matriz de correlación de las tarjetas gráficas vs las diferentes GPUs. Además, tras realizar clustering con las Gpus que contenían más datos, se obtiene que las Gpus pertenecientes al clúster de precios más altos son de las GPUs que más se utilizan para minar. No obstante, el predictor del precio de las GPUs no es tan efectivo, debido principalmente a que no hay datos suficientes para realizar un buen clasificador. Finalmente, se puede decir que efectivamente hay una correlación importante entre el mercado de las criptomonedas y las GPUs, lo que demuestra que la hipótesis planteada por el proyecto (basándose en los experimentos) es un fenómeno real.