Quantitative Daten – Laden Sie Bestandsdaten kostenlos mit BaoStock herunter

Einführung

baostock ist eine kostenlose Open-Source-Plattform für Wertpapierdaten, für die keine Registrierung erforderlich ist. Wertpapierdaten können über die Python-API abgerufen werden. Das zurückgegebene Datenformat ist der Pandas-DataFrame-Typ, der sich sehr gut für Datenoperationen eignet.

  • Vorteile: Kostenlos, keine Registrierung erforderlich, inklusive A-Aktien, Indexdaten und Finanzdaten

  • Nachteile: Die aktuellen Daten sind unvollständig und es fehlen Finanzdaten wie Aktien, Futures, Devisen und Fonds in Hongkong.

Beschreibung des Datenzeitbereichs:

  • Bestandsdaten: einschließlich täglicher, wöchentlicher und monatlicher K-Linien-Daten, Zeitbereich: 19.12.1990 bis heute; 5-, 15-, 30- und 60-minütige K-Linien-Daten, Zeitbereich: 26.07.1999 bis heute gegenwärtig

  • Indexdaten: einschließlich täglicher, wöchentlicher und monatlicher K-Line-Daten, einschließlich Indizes: umfassender Index, Größenindex, primärer Branchenindex, sekundärer Branchenindex, Strategieindex, Wachstumsindex, Wertindex, Themenindex, Fondsindex, Anleihenindex, Zeit Bereich: 01.01.2006 bis heute

  • Vierteljährliche Finanzdaten: Zu den Finanzdaten gehören: Vermögens- und Verbindlichkeitsinformationen einiger börsennotierter Unternehmen, Cashflow-Informationen börsennotierter Unternehmen, Gewinninformationen börsennotierter Unternehmen, DuPont-Indikatorinformationen börsennotierter Unternehmen. Zeitraum: 2007 bis heute

  • Vierteljährliche Unternehmensberichte: Informationen zur Leistungsprognose börsennotierter Unternehmen, Zeitraum: 2003 bis heute; Express-Leistungsinformationen börsennotierter Unternehmen, Zeitraum: 2006 bis heute

Täglich aktuellste Datenaktualisierungszeit:

  • Um 17:30 Uhr des aktuellen Handelstages werden die täglichen K-Line-Daten in die Datenbank eingegeben;

  • Um 20:30 Uhr des aktuellen Handelstages werden die Minutendaten der K-Linie vervollständigt und in die Datenbank eingegeben;

  • Um 1:30 Uhr des nächsten natürlichen Tages werden die „sonstigen Finanzberichtsdaten“ des vorherigen Handelstages in die Datenbank eingegeben.

Installieren

pip install baostock -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn

Führen Sie nach der Installation Folgendes über die Befehlszeile aus:

python -c "import baostock as bs; bs.login()"

Die Ausgabe „Login Success!“ zeigt an, dass die Installation erfolgreich war.

Beschreibung häufig verwendeter Funktionen

Es gibt drei häufig verwendete Funktionen: login(), query_all_stock() und query_history_k_data_plus(). Weitere vierteljährliche Finanzdaten, Unternehmensberichtsinformationen, makroökonomische Daten usw. können über die API abgerufen werden. Einzelheiten finden Sie auf der offiziellen Website.

  1. login()-Funktion

Anmeldesystem. Stellen Sie eine Verbindung zum Server her und melden Sie sich ohne Registrierung an. Es ist zu beachten, dass die API-Anfrage abläuft, wenn nach der Anmeldung eine Zeit lang kein Vorgang erfolgt und Sie sich erneut anmelden müssen, um mit dem Herunterladen der Daten fortzufahren.

import baostock as bs
bs.login()

bs.logout()Sie können die Funktion aktiv aufrufen, um die Verbindung zum Server zu trennen, wenn sie nicht mehr benötigt wird .

  1. query_all_stock()-Funktion

Erhalten Sie eine Liste aller Aktien an einem bestimmten Handelstag. Sie können die Daten eines bestimmten Tages über den Parameter Tag abrufen. Wenn der Parameter leer ist, bedeutet dies, dass standardmäßig die Daten dieses Tages abgerufen werden. Der Rückgabetyp ist ein von baostock angepasster Datentyp. Daten vom Typ Pandas DataFrame können über die Funktion get_data() abgerufen werden.

In [10]: date = "2022-05-27"
    ...: stock_df = bs.query_all_stock(date).get_data()
    ...: stock_df
Out[10]:
           code tradeStatus   code_name
0     bj.430047           1
1     bj.430090           1
2     bj.430198           1
3     bj.430418           1
4     bj.430489           1
...         ...         ...         ...
5315  sz.399994           1  中证信息安全主题指数
5316  sz.399995           1    中证基建工程指数
5317  sz.399996           1    中证智能家居指数
5318  sz.399997           1      中证白酒指数
5319  sz.399998           1      中证煤炭指数

[5320 rows x 3 columns]

Wenn es sich bei einem Tag um einen handelsfreien Tag handelt, ist der von get_data() zurückgegebene DataFrame leer. Beispielsweise ist der 28.05.2022 ein Samstag ohne Handel, dann ist len(bs.query_all_stock('2022-05-28') .get_data()) Gibt 0 zurück, wie unten gezeigt:

In [11]: len(bs.query_all_stock('2022-05-27').get_data())
Out[11]: 5320

In [12]: len(bs.query_all_stock('2022-05-28').get_data())
Out[12]: 0

Rufen Sie die Aktienliste über die Funktion tolist() ab:

stock_list = stock_df['code'].tolist()
  1. Funktion query_history_k_data_plus()

Erhalten Sie historische Transaktionsdaten zu A-Aktien. Über Parametereinstellungen können Sie tägliche K-Linien, wöchentliche K-Linien, monatliche K-Linien sowie 5-Minuten-, 15-Minuten-, 30-Minuten- und 60-Minuten-K-Liniendaten erhalten. Sie können die Nicht-K-Liniendaten abfragen. Re-Righting-, Pre-Re-Righting- und Post-Re-Righting-Daten, die für die Verwendung mit gleitenden Durchschnittsdaten geeignet sind. Aktienauswahl und -analyse. Der Rückgabetyp ist ein von baostock angepasster Datentyp. Daten vom Typ Pandas DataFrame können über die Funktion get_data() abgerufen werden.

Die Parameterbeschreibung lautet wie folgt:

  • Der Code-Parameter ist der Lagerbestandscode

  • Der Fields-Parameter unterstützt mehrere durch Kommas getrennte Indikatoreingaben, und der Inhalt wird als Rückgabetypspalte ausgefüllt. Unter diesen stellt pctChg den Anstieg oder Rückgang (Prozentsatz) dar, peTTM stellt das rollierende Kurs-Gewinn-Verhältnis dar und psTTM stellt das rollierende Kurs-Umsatz-Verhältnis dar.

  • Häufigkeit: Datentyp, Standard ist d, tägliche k-Linie; d=tägliche k-Linie, w=Woche, m=Monat, 5=5 Minuten, 15=15 Minuten, 30=30 Minuten, 60=60-Minuten-k -Zeilendaten, Groß- und Kleinschreibung wird nicht beachtet; der Index verfügt nicht über Minutenliniendaten; die Wochenlinie kann nur am letzten Handelstag jeder Woche abgerufen werden, und die Monatslinie kann nur am letzten Handelstag jeder Woche abgerufen werden Monat.

  • Adjustflag-Parameter: Wiederherstellungstyp, standardmäßig keine Wiederherstellung der Rechte; 1: Wiederherstellung der Rechte später; 2: Wiederherstellung der Rechte vorher; 3: Keine Wiederherstellung der Rechte.

Der Beispielcode lautet wie folgt:

code = "sz.399994"
data_fields = "date,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,peTTM,pbMRQ, psTTM,pcfNcfTTM,isST"
start_date = "2022-05-21"
end_date = "2022-05-28"
adjustflag = "2"

kdata_df = bs.query_history_k_data_plus(code, 
       data_fields, 
       start_date=start_date, 
       end_date=end_date,
              frequency='d', 
       adjustflag=adjustflag).get_data()

In [14]: kdata_df
Out[14]:
         date       open       high        low      close   preclose  ...     pctChg     peTTM     pbMRQ     psTTM pcfNcfTTM isST
0  2022-05-23  1333.9767  1339.3266  1323.2326  1339.0444  1323.8745  ...   1.145871  0.000000  0.000000  0.000000  0.000000    0
1  2022-05-24  1338.0567  1340.5022  1270.4979  1270.4979  1339.0444  ...  -5.119061  0.000000  0.000000  0.000000  0.000000    0
2  2022-05-25  1273.4179  1290.6949  1273.4179  1288.6189  1270.4979  ...   1.426291  0.000000  0.000000  0.000000  0.000000    0
3  2022-05-26  1287.7710  1306.6983  1264.3422  1299.1283  1288.6189  ...   0.815555  0.000000  0.000000  0.000000  0.000000    0
4  2022-05-27  1312.1094  1320.1226  1287.6731  1297.4858  1299.1283  ...  -0.126431  0.000000  0.000000  0.000000  0.000000    0

Während des Backtesting-Prozesses möchten Sie normalerweise nicht, dass die Aussetzungsdaten das Backtesting beeinträchtigen, und Sie können die Aussetzungsdaten löschen.

if kdata_df.shape[0]:
    kdata_df = kdata_df[(kdata_df['volume'] != '0') & (kdata_df['volume'] != '')]

Nutzen & kommunizieren

Folgen Sie dem offiziellen Konto für weitere Inhalte. Gleichzeitig können Sie auch eine Einladung zur Teilnahme an der WeChat-Gruppe für quantitative Investmentseminare erhalten, um mit vielen quantitativen Praktikern und Enthusiasten zu kommunizieren und zu diskutieren und die neuesten Branchenentwicklungen und technologischen Fortschritte nicht zu verpassen.

Öffentliches WeChat-Konto: Zhuge Talk

Das Schreiben von Artikeln ist nicht einfach. Wenn Sie glauben, dass dieser Artikel für Sie hilfreich ist, klicken Sie bitte darauf und lesen Sie ihn.

Referenz

Supongo que te gusta

Origin blog.csdn.net/richardzhutalk/article/details/125027067
Recomendado
Clasificación