[PYTHON] Lisez les données de marque de la tyrolienne à partir du fichier csv et effectuez un test arrière

1 Et cet article?

Lors de la lecture des données de marque avec la tyrolienne et de l'exécution de backtest, il existe une méthode pour créer un «bundle» sur tyrolienne et y gérer les données de marque, mais il existe également une méthode de lecture des données de marque directement à partir du fichier csv et d'effectuer des backtest. Dans cet article, j'écrirai comment lire les données boursières directement à partir d'un fichier csv et effectuer un backtesting.

2 Sommaire

2-1 Installation du calendrier de trading

Tout d'abord, installez le calendrier de trading pour chaque échange.

python


(python355) C:\Users\***\anaconda3>conda install -c quantopian trading-calendars

2-2 Installation du calendrier de trading

Exécutez le code ci-dessous. Les fichiers csv des marques n1570 et n7752 utilisés lors de l'exécution du code ci-dessous Obtenez-le ici

python


from zipline.api import order, record, symbol,set_benchmark
import pandas as pd
from datetime import datetime
import zipline
import pytz  #paramètres de fuseau horaire https://narito.ninja/blog/detail/81/
from trading_calendars import get_calendar #Importez le calendrier de chaque échange
from collections import OrderedDict

HDIR="xxxxxxxxxxxxxx" #fichier csv (données de marque)Spécifiez le répertoire à mettre
 
data=OrderedDict() #Donnez de l'ordre au dictionnaire ordonné.
tickers=["n1570","n7752"] #Spécifiez ici le nom du fichier csv correspondant à la marque à lire.

#Lire le cours d'une action à partir d'un fichier csv
for ticker in tickers:
    DIR=HDIR + ticker +".csv" #Marque à lire(fichier csv)Spécifier.
    data[ticker]= pd.read_csv(DIR, index_col=0,parse_dates=True) #Lisez le fichier csv.

panel=pd.Panel(data)  #Placez les données de marque dans le panneau de matrice 3D.
panel.major_axis=panel.major_axis.tz_localize(pytz.utc) #Réglez l'heure sur la zone UTC.(Si vous ne le définissez pas sur la zone UTC pour plus de commodité, une erreur se produira.)

def initialize(contect):
    set_benchmark(symbol("n1570")) #Désignez le stock n1570 comme référence.

def handle_data(context,data):
    order(symbol("n1570"),1) #Achetez une part chaque jour à la clôture.
    record(N1570=data.current(symbol("n1570"),"price")) #Enregistrez la valeur de clôture de l'émission n1570.

    
#Exécutez un backtest.(Achetez une part de la marque n1570 à la clôture chaque jour.)
perf=zipline.run_algorithm(start=datetime(2020,1,4,0,0,0,0,pytz.utc),
                            end=datetime(2020,3,4,0,0,0,0,pytz.utc),
                            initialize=initialize,
                            capital_base=1000000, #Spécifiez l'actif au début.
                            handle_data= handle_data,
                            data=panel,
                            trading_calendar=get_calendar('XTKS') #Lire le calendrier de la Bourse de Tokyo
                           )

perf.to_csv("********") #Ecrire le résultat de l'exécution du backtest dans le fichier csv

print(perf.head())

★ Supplément ・ OrderedDict () # Donner l'ordre au dictionnaire commandé ・ ・ ・ [Cliquez ici pour l'explication](# https://note.nkmk.me/python-collections-ordereddict/) ・ Créez un tableau Panel 3D ... Cliquez ici pour l'explication ・ Réglage du fuseau horaire pytz ・ ・ ・ Cliquez ici pour l'explication

Voici le résultat de l'exécution.

python


                           N1570  algo_volatility  algorithm_period_return  \
2020-01-06 06:00:00+00:00  21510              NaN                 0.000000   
2020-01-07 06:00:00+00:00  22200         0.000125                -0.000011   
2020-01-08 06:00:00+00:00  21530         0.006189                -0.000692   
2020-01-09 06:00:00+00:00  22480         0.017575                 0.001197   
2020-01-10 06:00:00+00:00  22730         0.015535                 0.001936   

                              alpha  benchmark_period_return  \
2020-01-06 06:00:00+00:00       NaN                -0.042724   
2020-01-07 06:00:00+00:00 -0.001598                -0.012016   
2020-01-08 06:00:00+00:00 -0.046605                -0.041834   
2020-01-09 06:00:00+00:00  0.071751                 0.000445   
2020-01-10 06:00:00+00:00  0.084250                 0.011571   

                           benchmark_volatility      beta  capital_used  \
2020-01-06 06:00:00+00:00                   NaN       NaN         0.000   
2020-01-07 06:00:00+00:00              0.839647 -0.000148    -22211.101   
2020-01-08 06:00:00+00:00              0.635930  0.003357    -21540.766   
2020-01-09 06:00:00+00:00              0.692524  0.017970    -22491.241   
2020-01-10 06:00:00+00:00              0.604182  0.018330    -22741.366   

                           ending_cash  ending_exposure  \
2020-01-06 06:00:00+00:00  1000000.000              0.0   
2020-01-07 06:00:00+00:00   977788.899          22200.0   
2020-01-08 06:00:00+00:00   956248.133          43060.0   
2020-01-09 06:00:00+00:00   933756.892          67440.0   
2020-01-10 06:00:00+00:00   911015.526          90920.0   

                                   ...            short_exposure  short_value  \
2020-01-06 06:00:00+00:00          ...                       0.0          0.0   
2020-01-07 06:00:00+00:00          ...                       0.0          0.0   
2020-01-08 06:00:00+00:00          ...                       0.0          0.0   
2020-01-09 06:00:00+00:00          ...                       0.0          0.0   
2020-01-10 06:00:00+00:00          ...                       0.0          0.0   

                           shorts_count    sortino  starting_cash  \
2020-01-06 06:00:00+00:00             0        NaN    1000000.000   
2020-01-07 06:00:00+00:00             0 -11.224972    1000000.000   
2020-01-08 06:00:00+00:00             0  -9.313364     977788.899   
2020-01-09 06:00:00+00:00             0  13.968067     956248.133   
2020-01-10 06:00:00+00:00             0  20.185869     933756.892   

                           starting_exposure  starting_value  trading_days  \
2020-01-06 06:00:00+00:00                0.0             0.0             1   
2020-01-07 06:00:00+00:00                0.0             0.0             2   
2020-01-08 06:00:00+00:00            22200.0         22200.0             3   
2020-01-09 06:00:00+00:00            43060.0         43060.0             4   
2020-01-10 06:00:00+00:00            67440.0         67440.0             5   

                                                                transactions  \
2020-01-06 06:00:00+00:00                                                 []   
2020-01-07 06:00:00+00:00  [{'amount': 1, 'sid': Equity(0 [N1570]), 'orde...   
2020-01-08 06:00:00+00:00  [{'amount': 1, 'sid': Equity(0 [N1570]), 'orde...   
2020-01-09 06:00:00+00:00  [{'amount': 1, 'sid': Equity(0 [N1570]), 'orde...   
2020-01-10 06:00:00+00:00  [{'amount': 1, 'sid': Equity(0 [N1570]), 'orde...   

                          treasury_period_return  
2020-01-06 06:00:00+00:00                    0.0  
2020-01-07 06:00:00+00:00                    0.0  
2020-01-08 06:00:00+00:00                    0.0  
2020-01-09 06:00:00+00:00                    0.0  
2020-01-10 06:00:00+00:00                    0.0  

Recommended Posts

Lisez les données de marque de la tyrolienne à partir du fichier csv et effectuez un test arrière
Lire et écrire un fichier csv
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Python --Lisez les données d'un fichier de données numériques et recherchez la ligne de régression multiple.
Python --Lire les données d'un fichier de données numériques et calculer la covariance
Lisez le fichier csv et affichez-le dans le navigateur
Lire le fichier CSV: pandas
Lire le fichier csv Python
Python --Lisez des données à partir d'un fichier de données numériques pour trouver des matrices, des valeurs propres et des vecteurs propres distribués co-distribués
[Python] Lisez le fichier csv et affichez la figure avec matplotlib
Lire et écrire des fichiers
Écrire et lire des fichiers
Extraire les données csv et calculer
[Python] Lire un fichier csv avec une grande taille de données à l'aide d'un générateur
Lire et utiliser des fichiers Python à partir de Python
Lecture et écriture de fichiers CSV Python
Lire et formater des fichiers csv mélangés avec des tabulations de virgule avec des pandas Python
Lisez le fichier CSV avec Python et convertissez-le en DataFrame tel quel