[PYTHON] Une histoire de regroupement de données de séries chronologiques d'échange

Résumé de cet article

Environnement de développement

Préparation des données

En utilisant USD / JPY de 2018.01 à 2019.04, Le point d'entrée de la croix d'or de la ligne moyenne mobile en 5 minutes a été utilisé comme exemple de données. (2482 données)

étiquetage

L'étiquetage a été effectué selon les règles suivantes.

Result Label
Profit 1
Loss -1
Règlement par temps d'attente 0

Cette fois, nous définissons les lignes de réduction des pertes et de prise de bénéfices de manière à ce qu'elles soient grossièrement divisées en trois parties égales.

Clustering

Résultat attendu

Comme le montre le graphique ci-dessous, je m'attendais à ce que la «prise de profit» / «la réduction des pertes» / «le règlement par temps de détention» soit séparée pour chaque grappe.

2002_1_hoped.png

Avec cela, dans le cas du cluster 2, on peut juger qu'il n'est pas bon et le commerce peut être oublié.

résultat

Nous avons regroupé en utilisant TimeSeriesKMeans de scikit-learn, illustré le pourcentage d'étiquettes dans chaque cluster et trié par taux de réussite.

2002_2_OHLC_and_RSI.png

Pas assez bon. .. Le taux de victoire le plus élevé était de 45% et le taux de victoire le plus bas était de 22%. Comme l'original est presque divisé en 3 parties égales (33%), il semble qu'il puisse être un peu divisé, mais j'aimerais qu'il soit divisé un peu plus joliment.

Ajouter le haut de la jambe

Dans le but d'améliorer, nous avons décidé d'ajouter les informations de période plus longue suivantes à la quantité de fonctionnalités.

Le résultat est ci-dessous. 2002_3_with_long_term_indicator.png

Le taux de victoire le plus élevé était de 63% et le taux de victoire le plus bas était de 14%. En ajoutant les informations sur le haut des jambes, cela s'est beaucoup amélioré. Je pense que c'était bien car j'ai pu confirmer à nouveau que les informations sur le haut des jambes étaient utiles. Avec un tel résultat, il semble difficile d'éviter les dégâts, mais j'ai personnellement pensé qu'il pourrait être utilisé pour ajuster la quantité de positions.

Merci d'avoir lu l'article.

référence

Recommended Posts

Une histoire de regroupement de données de séries chronologiques d'échange
À propos des données de séries chronologiques et du surentraînement
Différenciation des données de séries chronologiques (discrètes)
Analyse des séries chronologiques 3 Prétraitement des données des séries chronologiques
Acquisition de données chronologiques (quotidiennes) des cours des actions
Lissage des séries temporelles et des données de forme d'onde 3 méthodes (lissage)
Histoire de l'analyse de données par apprentissage automatique
Une histoire de prédiction du taux de change avec Deep Learning
Détection d'anomalies des données de séries chronologiques par LSTM (Keras)
Une histoire sur la difficulté à traiter en boucle 3 millions de données d'identification
Une histoire sur le changement du nom principal de BlueZ
Une histoire sur l'amélioration du programme pour le remplissage partiel des données d'image binarisées 3D
À propos de la gestion des données d'Anvil-App-Server
Comment extraire des fonctionnalités de données de séries chronologiques avec les bases de PySpark
Comparaison de la prédiction des données de séries chronologiques entre le modèle SARIMA et le modèle Prophet
[numpy] Créer une matrice de fenêtre mobile à partir de données de séries chronologiques multidimensionnelles
<Pandas> Comment gérer les données de séries chronologiques dans le tableau croisé dynamique
Lors du traçage des données de séries chronologiques et de l'obtention d'une erreur de débordement matplotlib
Calcul de la fidélité des clients dans les séries chronologiques
Une histoire rafraîchissante sur Slice en Python
Python: analyse des séries chronologiques: prétraitement des données des séries chronologiques
Une histoire de mauvaise humeur sur Slice en Python
L'histoire de l'utilisation de la réduction de Python
L'histoire de l'exportation d'un programme
[Pour les débutants] Script dans les 10 lignes (5. Rééchantillonnage des données de séries chronologiques à l'aide de pandas)
Puissance des méthodes de prédiction dans l'analyse de données chronologiques Semi-optimisation (SARIMA) [Memo]
Une histoire sur l'adoption de Django au lieu de Rails dans une jeune startup
Une histoire sur ma nouvelle étude de Python après 3 ans d'expérience MATLAB
L'histoire d'une personne qui a commencé à viser un data scientist depuis un débutant
Tracer CSV de données de séries temporelles avec une valeur unixtime en Python (matplotlib)
Une note sur les fonctions de la bibliothèque Linux standard qui gère le temps
[Kaggle] J'ai essayé l'ingénierie de quantité de caractéristiques de données de séries chronologiques multidimensionnelles à l'aide de tsfresh
Prédiction des données de séries chronologiques par projection simplex
Prédire les données de séries chronologiques avec un réseau neuronal
Une histoire sur l'apprentissage automatique avec Kyasuket
Mémorandum sur le QueryDict de Django
[Python] Accélère le chargement du fichier CSV de séries chronologiques
Analyse des séries chronologiques 4 Construction du modèle SARIMA
Détection d'anomalies de données chronologiques pour les débutants
Conversion des données de temps en notation 25 heures
L'histoire du traitement A du blackjack (python)
Comment gérer les données de séries chronologiques (mise en œuvre)
Lecture des données de séries chronologiques OpenFOAM et des ensembles de données
Un mémorandum de problème lors du formatage des données
Une histoire sur l'obtention d'un taux de récupération des courses de chevaux de plus de 100% grâce à l'apprentissage automatique
Extraire les périodes qui correspondent à un modèle spécifique des données qualitatives de séries chronologiques de pandas