La dernière fois a brièvement écrit la méthode d'apprentissage automatique implémentée dans scikit-learn, mais il semble qu'il y ait une certaine demande à partir d'aujourd'hui. Lors de l'écriture d'un exemple de code pour l'apprentissage automatique à l'aide de scikit-learn, j'aimerais aborder la compréhension et la pratique de la méthode.
Tout d'abord, je vais donner un exemple de clustering par la méthode de moyennage K, qui a également été fait dans Précédent.
La méthode de calcul de la moyenne K est l'une des méthodes de base du clustering, elle est simple et rapide, et elle est également idéale pour commencer. Je recommande d'expliquer l'opération à chaque fois, mais par ici est facile à comprendre.
Les données sur le cours des actions sont toujours utilisées comme cible pour le regroupement.
Données de cours de bourse
Il existe une relation étroite entre la performance des entreprises et le cours des actions. On dit qu'il y a en fait un écart d'environ six mois à trois ans entre les deux. C'est parce que les investisseurs investissent dans les performances futures.
En d'autres termes, les futurs résultats commerciaux ont déjà été pris en compte dans le cours de l'action. Par exemple, lors de la prévision de l'investissement informatique et de sa demande, vous pouvez penser à une stratégie de vente simple dans laquelle la demande informatique est également attendue dans les domaines où les performances de l'entreprise augmentent.
Cette fois, j'analyserai les données des entreprises suivantes. Les deux sont des entreprises proches de notre entreprise (DTS).
Marque | Nom de la compagnie |
---|---|
9682 | DTS |
9742 | Inès |
9613 | Données NTT |
2327 | Nippon Steel et Sumitomo Metal Solutions |
9640 | Systèmes d'information de saison |
3626 | Fonds informatiques |
2317 | Systema |
4684 | Obic |
9739 | NSW |
4726 | Technologie Softbank |
4307 | Institut de recherche Nomura |
9719 | SCSK |
4793 | Fujitsu BSC |
4812 | Service d'information international Dentsu |
8056 | Japon Unisys |
Le rendement dans le monde financier se réfère généralement à une variation en pourcentage du prix des actifs à partir d'un jour. Un simple index de retour peut être trouvé à l'aide de pandas comme suit:
returns = pd.Series(close).pct_change() #Trouvez le taux d'augmentation / diminution
ret_index = (1 + returns).cumprod() #Trouvez le produit cumulatif
ret_index[0] = 1 #Première valeur 1.Mettre à 0
Lorsqu'on se concentre sur plusieurs sociétés, l'indice de rendement est utilisé pour mesurer l'évolution de la valeur de l'actif, 1 étant fixé en fonction du prix d'un jour.
Par exemple, regardons l'indice de retour pour les 30 derniers jours à compter de la date de rédaction de cet article.
#Lire les données de séries chronologiques à partir d'un fichier csv
df = pd.read_csv(csvfile,
index_col=0, parse_dates=True)
df = df[-30:] #Les 30 derniers jours
#Liste pour l'index de retour
indexes = get_ret_index(df)['ret_index'].values.tolist()
#Afficher DTS
if stock == "9682":
ts = df.index.values
for t, v in zip(ts, indexes):
print(t,v)
#=>
# 2015-02-23 1.0
# 2015-02-24 1.010054844606947
# 2015-02-25 1.020109689213894
# 2015-02-26 1.0351919561243146
# 2015-02-27 1.0680987202925045
# ...
# 2015-04-01 1.0237659963436931
# 2015-04-02 1.0530164533820843
# 2015-04-03 1.040219378427788
Voilà pourquoi.
Cette fois, regroupons en utilisant les valeurs des 30 derniers jours comme premier. Autrement dit, ce qui précède devient un vecteur à 30 dimensions tel quel.
Ici, soit k = 4.
kmeans_model = KMeans(n_clusters=4, random_state=30).fit(features)
labels = kmeans_model.labels_
for label, name, feature in zip(labels, names, data):
print(label, name)
#=>
# 2 9742
# 1 9682
# 2 9613
# 1 2327
# 3 9640
# 1 3626
# 1 2317
# 2 4684
# 0 9739
# 0 4726
# 2 4307
# 1 9719
# 0 4793
# 0 4812
# 1 8056
Le numéro de cluster et le code de marque auquel vous appartenez sont affichés de cette manière.
Il est difficile de comprendre si ce n'est que cela, alors visualisons-le.
df = pd.DataFrame(df, index=ts)
plt.figure()
df.plot()
plt.subplots_adjust(bottom=0.20)
plt.legend(loc="best")
plt.savefig("cluster.png ")
plt.close()
Tout d'abord, il s'agit du cluster 0.
Si vous le visualisez, vous pouvez voir que les actions qui ont connu une forte baisse en mars se sont solidifiées.
Vient ensuite le cluster numéro 1.
Il s'agit d'un ensemble d'actions dont les prix ont été augmentés vers la fin de l'exercice, bien qu'il existe une certaine gamme de mouvements de prix.
Numéro de cluster 2.
Les entreprises qui ont augmenté leur valeur se rassemblent. On peut dire que la performance de ces quatre sociétés a été favorable.
Le cluster 3 semble avoir été sélectionné parmi une entreprise qui s'est comportée de manière quelque peu irrégulière.
Des grappes ont été formées pour chaque entreprise qui avait des mouvements de prix similaires. Voir le tableau ci-dessus pour la relation entre les actions et les noms de sociétés.
Cette fois, nous avons ciblé uniquement les actions SIer, mais si vous le souhaitez, vous pouvez dériver des actions similaires à partir des données de toutes les autres sociétés cotées.
Japan Exchange-Autres données statistiques http://www.jpx.co.jp/markets/statistics-equities/misc/01.html
Une liste de toutes les sociétés cotées peut être téléchargée à partir de ce qui précède. J'ai écrit sur l'acquisition de données boursières dans Précédent, donc je vais l'omettre.
Que pouvons-nous apprendre d'une telle analyse?
Une idée consiste à extraire des entreprises qui affichent des indicateurs similaires à partir de données dans un large éventail d'industries, par exemple, pour colorer le cycle en cas de négociation, ou pour estimer la demande d'investissement informatique caché s'il s'agit d'une stratégie commerciale. Peut être fait. Si nous pouvons regrouper mécaniquement pour toutes les industries, nous pouvons éviter les problèmes de jugement humain et de reprise.
Alternativement, cette fois, nous avons simplement utilisé l'indice de retour comme indice, mais en principe, n'importe quel indice peut être utilisé. Par exemple, le cours moyen de l'action Nikkei est calculé à partir de la moyenne de 225 entreprises, mais si vous souhaitez créer un indice similaire à celui-ci à partir de seulement 20 entreprises, vous pouvez utiliser l'apprentissage automatique.
En tout cas, il n'y a rien de moins qu'une analyse qui s'appuie sur l'intuition et l'expérience. Les humains ont des distorsions cognitives et prennent des décisions émotionnelles. Cette zone est [Behavioral Economics](http://ja.wikipedia.org/wiki/%E8%A1%8C%E5%8B%95%E7%B5%8C%E6%B8%88%E5%AD% Comme vous pouvez le voir sur A6), les humains ne prennent pas toujours des décisions rationnelles. Le support d'analyse mécanique est essentiel pour éliminer les émotions humaines et prendre des décisions rationnelles dans l'analyse des données financières.
Recommended Posts