Investieren Sie alle sofort? Wenn ja, welche Art von Investition tätigen Sie?
Es gibt verschiedene Anlageziele auf der Welt und es gibt verschiedene Anlagemethoden. Informationen über Investitionen sind weltweit reichlich vorhanden. Es ist vielleicht besser zu sagen, dass es überflutet. Am Beispiel von Büchern gibt es eine Reihe leichter Einführungsbücher, die Investitionen mit süßen Worten in spezialisierte Finanzbücher fördern. Blogs und SNS sind ebenfalls wichtige Informationsquellen, und es scheint, dass YouTube für Investitionen heutzutage ebenfalls an Beliebtheit gewinnt.
Trotz der Vielzahl von Informationsquellen kann nur eine Handvoll erfolgreich investieren. Es ist ein bisschen altmodisch, aber laut Nomura Securities 'Einzelinvestor-Research im Jahr 2015 beträgt der Prozentsatz der Einzelinvestoren, die einen Gesamtgewinn erzielen, 9,3%. Warum geraten Sie in eine solche Situation? Lassen Sie mich einige Beispiele für den Ansatz geben, den Anfänger im Investmentbereich verfolgen.
――Springen Sie zum steigenden Preis trendiger Themenaktien und holen Sie sich den hohen Preis
Einige Menschen können enttäuscht sein, den nicht realisierten Verlust jedes Mal zu sehen, wenn die Mittagspause der Arbeitszeit kommt, weil sie eine solche Methode schluckend handeln. Warum landen wir wieder in dieser Situation? Das liegt daran, dass ** Anfänger überhaupt nicht wissen, welche Handelsstile von Natur aus überlegen sind **.
In diesem Artikel habe ich bedacht, dass dies der Investitionssicht von Anfängern sowohl beim Kaninchen als auch in der Ecke ein völlig neues Bewusstsein verleihen wird. Handel ist Wissenschaft. Wissenschaftlicher Handel ist mit anderen Worten quantitativer und empirischer Handel.
In diesem Artikel zeigen wir Ihnen, welche Handelsstile auf der Grundlage statistischer Überlegungen dominieren. In dem Artikel habe ich Begriffe ausgewählt, die so einfach wie möglich zu verstehen sind, damit Anfänger sie leicht lesen können, und ich habe versucht, schwierige Formeln und technische Überlegungen so weit wie möglich wegzulassen.
Außerdem lernen Sie spezifische Techniken, um den wissenschaftlichen Handel in die Praxis umzusetzen. Die Programmierung ist für den quantitativen und empirischen Handel unerlässlich. In diesem Artikel habe ich ein Programm geschrieben, um die minimal erforderliche Überprüfung in der Sprache Python durchzuführen. Viele Leute werden es als Programmierung betrachten, aber es ist eine gute Idee, diese Gelegenheit zu nutzen, um mit dem Studium zu beginnen. Das Arbeiten mit Sinn ist der schnellste Weg, um sich zu verbessern.
Zu Beginn des Artikels möchte ich die bisherige Wertentwicklung meiner Investition vorstellen. Plötzlich denken Sie vielleicht, es sei hässlich, über das Geld zu sprechen, das Sie verdient haben, aber es ist nicht überzeugend, jemandem etwas zu sagen, der keine Ergebnisse erzielt hat. Eine Sache, die hinzugefügt werden muss, ist, dass das wichtigste beim Investieren das Prozessmanagement ist, nicht die Ergebnisse. Dies liegt daran, dass, wie wir später sehen werden, die Anlageperformance in hohem Maße vom Glück abhängt und Entscheidungen, die ausschließlich auf Ergebnissen beruhen, häufig zu falschen Schlussfolgerungen führen.
Ursprünglich habe ich neben einem professionellen Ingenieur investiert, aber 2014 habe ich mit dem umfassenden Asset Management begonnen. Der Startup-Fonds betrug zu dieser Zeit 50 Millionen Yen. Im Jahr 2016 haben wir das Betriebssystem entwickelt, das derzeit die Hauptstütze darstellt. Dieses Betriebssystem ist unser Flaggschiff, das seit Inbetriebnahme bis heute rund 140 Millionen Yen verdient hat. Die Investition zielt auf große Aktien ab, die als TOPIX500 japanischer Aktien bezeichnet werden, und die durchschnittliche Rendite der letzten vier Jahre lag bei rund 40%.
Jetzt werde ich erklären, warum der eingangs erwähnte Anfängeransatz nicht erfolgreich sein kann und was das Problem ist. Erfolg bedeutet hier, die gewünschte Rendite kontinuierlich und stabil ohne Rückschläge während des Investitionszeitraums von mindestens 5 Jahren zu erzielen.
Lassen Sie uns zunächst überlegen, ob die Methode am Anfang einen Gewinn bringt oder nicht. Erwägen Sie beispielsweise, in eine Aktie zu investieren, die als billig und von hoher Qualität gilt. Bei der Auswahl einzelner Aktien werden Sie höchstwahrscheinlich Tools von Wertpapierfirmen verwenden, um nach Aktien zu suchen. Werfen wir einen Blick auf die Wertentwicklung, wenn Sie einen Monat lang in eine Aktie mit einem PER von 10 oder weniger und einem ROE von 10% oder mehr investieren.
Der Aggregationszeitraum reicht von April 2017 bis Oktober 2020, und der Gewinn wird erzielt, wenn die gescreenten Aktien zu Monatsbeginn gekauft werden (genauer gesagt zum Schlusskurs des Vormonats gekauft) und zum Schlusskurs des Monatsendes abgerechnet werden. Es ist eine Verbreitungskarte (Diaphragma). Zu diesem Zeitpunkt wird die Marktrendite von der Rendite der einzelnen Aktien abgezogen. Wenn Sie dies nicht tun, werden Sie vom starken Anstieg des Nikkei-Durchschnitts betroffen sein, und Sie können nicht unterscheiden, ob die von Ihnen erzielten Gewinne von Ihren Fähigkeiten zur Aktienauswahl abhängen oder ob Sie das Glück haben, vom Anstieg des Marktes zu profitieren.
Ist diese Anlagemethode rentabel?
Zusammenfassend kann es rentabel sein oder nicht. Die Aktie, in die Sie investiert haben, befindet sich möglicherweise ganz rechts (dh in der Aktie, die einen Gewinn erzielt hat) in der oben gezeigten Ausschüttung. Es kann auch der am weitesten links stehende Teil der Verteilung sein (dh die Aktie, die Geld verloren hat). Alle in der oben gezeigten Verteilung enthaltenen Bestände sind nach Ihren Maßstäben "billige und qualitativ hochwertige" Bestände. Es ist nicht die Tatsache, dass "billig und von hoher Qualität" den endgültigen Gewinn oder Verlust daraus bestimmt, aber es kann gesagt werden, dass es Ihr sogenannter Fingersatz ist, der die Marke unter den vielen Zielmarken zu dieser Zeit aufgegriffen hat. Ich werde. Zum Beispiel mochte ich zufällig den Namen des Unternehmens, er erschien oben auf dem Screening, ich las eine Zeitschrift und dachte plötzlich daran, zu investieren, oder so etwas. Machen wir das.
Das Ergebnis Ihrer Investition hängt von Ihrem Glück ab. Vielmehr wird es hauptsächlich durch Glück bestimmt. Das Glück bedeutet hier die Wahrscheinlichkeitsverteilung wie in der obigen Abbildung gezeigt. Wie Sie dem obigen Beispiel entnehmen können, können Sie niemals beurteilen, ob die Investition selbst erfolgreich war, wenn Sie sich nur auf das Ergebnis der Investition konzentrieren. Es macht keinen Sinn, ob das Ergebnis Ihres Handels ein Produkt Ihrer eigenen Fähigkeiten oder ein Zufall ist.
Die Unfähigkeit, die Ergebnisse auf diese Weise richtig zu beurteilen, bedeutet, dass wir nicht wissen, ob wir uns auf die Methode verlassen können. Mit anderen Worten, es ist nicht möglich, den Prozess der Verbesserung des Geschäfts zu durchlaufen. Bei einem Ansatz wie dem am Anfang fehlt die Idee, den Verbesserungsprozess umzukehren. Um den Verbesserungsprozess durchführen zu können, benötigen wir einen Mechanismus, um quantitative Ergebnisse in kurzer Zeit zu erhalten.
Wenn Sie den Verbesserungsprozess nicht durchlaufen können, werden sich Ihre Anlagefähigkeiten in Zukunft nie verbessern. Dies ist dasselbe wie das Drehen einer Gacha, deren Inhalt unbekannt ist. Sie wiederholen nur den kargen Akt, mehrmals im Jahr ein paar Gachas aus der oben genannten Emissionsverteilung herauszuziehen, sich zu freuen, wenn die Ergebnisse gut sind, und zu entmutigen, wenn die Ergebnisse schlecht sind.
Gibt es also eine Möglichkeit, diese Gacha einzufangen? Die Antwort lautet natürlich "JA".
Es gibt gute und schlechte Dinge im Gacha-Stand. Ein Tisch mit vielen Treffern ist ein guter Tisch, und ein Tisch mit nur Schrott ist ein schlechter Tisch. Wie sieht es aus, wenn man diese Plattformen im Hinblick auf die Emissionsverteilung betrachtet? Hier sind drei Beispiele:
Wie wäre es zunächst mit dem Stand ganz links? Das Zentrum der Emissionsverteilung dieser Plattform ist fast 0. Das heißt, der erwartete Wert dieses Standes ist 0. Egal wie viel Sie Gacha auf dieser Plattform zeichnen, Ihr Vermögen wird nicht wachsen. Selbst wenn Sie einen vorübergehenden Gewinn erzielen, kommt es nur vor, dass Ihre Leistung eine Outperformance erzielt. Auf lange Sicht wird der durchschnittliche Gewinn und Verlust immer gegen Null gehen.
Wie wäre es dann mit der mittleren Plattform? Wenn Sie sich die Emissionsverteilung dieser Plattform genau ansehen, können Sie feststellen, dass sie sich leicht nach rechts verschoben hat (Plus-Seite). Dies ist der Zustand, in dem der erwartete Wert positiv ist. Im Handel verwenden wir Ausdrücke wie "einen Vorteil haben" und "Alpha haben (übermäßiges Einkommen)". Indem Sie die Gacha weiter ziehen, können Sie Ihr Vermögen auf dieser Plattform erweitern. Das Auf und Ab der Vermögenswerte auf dem Weg ist jedoch volatil, und Sie können auf halbem Weg anhalten.
Schließlich ist es der am weitesten rechts stehende Stand. Die Emissionsverteilung dieser Plattform ist ähnlich wie bei der Plattform in der Mitte leicht nach rechts verschoben. Und wenn Sie genauer hinschauen, können Sie sehen, dass die Variation (Ausbreitung von der Mitte) im Vergleich zur Plattform in der Mitte in einem kleinen Bereich liegt. Der erwartete Wert ist positiv und die Abweichung ist gering, dh es handelt sich um eine Plattform mit einem hohen "scharfen Verhältnis". Sie können einen solchen Gacha-Ständer finden, und wenn Sie ihn weiter ziehen, wird Ihr Erfolg solide sein.
Es ist nicht möglich, die Tendenz zu erfassen, wie der Inhalt des Gacha-Ständers aussieht, indem man ein- oder zweimal an der Gacha zieht. Wenn Sie also die Tendenz des Inhalts wirklich erfassen möchten, müssen Sie ihn immer wieder umdrehen. Das Wichtigste dabei ist, immer nur eine Gacha zu drehen, ohne sich zur Seite zu drehen. Sie können die Tendenz nicht erfassen, selbst wenn es ein Leben lang dauert, indem Sie sie zur Hälfte ziehen und zu dieser Gacha wechseln, da diese Gacha anscheinend nicht viele Treffer erhält.
Mit anderen Worten, beim Handel müssen Sie den Handel konsequent fortsetzen, basierend auf nur einer Methode. Das reicht 10 mal oder 100 mal nicht aus. Es muss viele Male gemacht werden, mehr als 1000 Mal. Wechseln Sie nicht von einer zur nächsten zu Anlagemethoden wie Zeitschriften. Der einzige Weg, um die Unsicherheit von Investitionen zu bekämpfen, besteht darin, Versuche zu verdienen. Die einzige Waffe, die wir haben, ist das Gesetz der Mehrheit.
Daher ist ** eine dominante Handelsstrategie eine „überschaubare“ Strategie **. Diejenigen mit einer monatlichen Spanne oder mehr sind nicht für den Handel mit einzelnen Anlegern geeignet. Zumindest sollte der Handel täglich erfolgen. Das Beste davon ist Scalping. Je kürzer die Handelsperiode ist, desto weniger unsicher ist die Preisbewegung und desto leichter ist es, den Trend zu erfassen (insbesondere ist die Investitionsunsicherheit proportional zur Quadratwurzel der Investitionsperiode).
Selbstverständlich benötigen Sie jedoch Geld, um eine Gacha zu zeichnen. Je mehr Sie ziehen, desto mehr Geld verschwindet aus Ihrer Brieftasche. Dies gilt auch für den Handel. Im Handel kostet eine Transaktion immer Geld. Wenn es sich um eine Aktie handelt, zahlen Sie beim Kauf der Aktie die Gebühr und den Kreditzinssatz. Wenn es sich um FX handelt, zahlen Sie den Spread in einem Trade an den Händler. Wenn Sie viele Male handeln, wird Ihr Geld in kürzester Zeit ausgehen.
Es lohnt sich ehrlich gesagt überhaupt nicht, die Tendenz des Inhalts der Gacha beim Werfen von lebenden Kugeln abzuschätzen. Anstatt dies zu tun, gibt es eine Möglichkeit, einen guten Gacha-Stand im Voraus zu erreichen.
In der Investmentwelt können wir einige der Daten sammeln, die auf dem Gacha-Stand vorverwendet werden. Und Sie können diese Daten verwenden, um zu überprüfen, welche Art von Gacha-Stand gut ist, dh auf welche Art von Handelsstrategie Sie setzen sollten, bevor Sie Gacha ziehen. Dies ist eine Handelsmethode, die als quantitativ und empirisch bezeichnet wird. Die Datenanalyse wird verwendet, um den erwarteten Wert zu ermitteln, mit dem die Transaktionskosten überwunden werden können.
Die Forschung zum quantitativen und empirischen Handel wird seit vielen Jahren durchgeführt. Besonders in jüngster Zeit gibt es viele Fälle, in denen maschinelles Lernen dafür eingesetzt wird. Maschinelles Lernen ist nicht nur sehr nützlich, um die statistische Signifikanz von Daten zu bestätigen, sondern auch, um verborgene Marktmerkmale zu extrahieren, die niemand kennt. Die Programmierbibliothek ist umfangreich und APIs zum Herunterladen von Daten werden entwickelt. Auch einzelne Anleger können die Daten vollständig analysieren.
Im tatsächlichen Betrieb ist es notwendig, die Bedingungen so weit wie möglich auf der Grundlage des Überprüfungsergebnisses festzulegen und den Handel mechanisch durchzuführen. Setzen Sie keine menschlichen Gefühle ein. Und wenn Sie viele Trades mechanisch wiederholen, gibt es keinen Grund, dies nicht zu automatisieren. Ein solcher Handelsstil wird auch kollektiv als "Systemhandel" bezeichnet.
In der Praxis besteht ein erfolgreicher Investitionsansatz darin, den Verbesserungsprozess zu durchlaufen und gleichzeitig die Vorverifizierung (dh das Backtesting) mit der tatsächlichen Betriebsleistung zu vergleichen. Für diejenigen, die noch nie eine Datenanalyse durchgeführt haben, zeigen die folgenden Kapitel, wie Sie Daten mit Python analysieren.
Lassen Sie uns nun zuerst die Daten sammeln. Die Daten werden mithilfe der Yahoo Finance-API erfasst. Zu diesem Zeitpunkt wird eine Bibliothek namens yfinance verwendet. Installieren Sie sie daher zuerst. Weitere Informationen zu yfinance finden Sie unter hier.
pip install yfinance
(Ergänzung) Über den Fehler von yfinance Es gibt einen Fehler in yfinance, dass Sie standardmäßig keine Finanzdaten abrufen können. Sie können es erhalten, indem Sie die Datei yfinance base.py wie folgt ändern.
# base.py In der Nähe der Linie 353
# get fundamentals
# data = utils.get_json(url+'/financials', proxy)← Standardprogramm. Maske
url = "{}/{}/financials".format(self._scrape_url, self.ticker) #hinzufügen
data = utils.get_json(url, proxy) #hinzufügen
Laden wir zunächst die Kursdaten für die Aktien an der japanischen Börse herunter.
Durch Ausführen des folgenden Codes können Sie die historischen Daten des 7203 Toyota Motor sofort abrufen. Da das Tickersymbol einer Aktie auf dem japanischen Markt durch den Wertpapiercode + ".T" dargestellt wird, können Sie die Daten fast aller Aktien problemlos abrufen, ohne das Symbol von Yahoo Finance nachschlagen zu müssen.
import yfinance as yf
ticker = yf.Ticker("7203.T")
hist = ticker.history(period="max")
print(hist)
Ausführungsbildschirm
Open High Low Close Volume Dividends Stock Splits
Date
1999-05-06 2259.74 2337.44 2233.84 2337.44 3115000 0.0 0
1999-05-07 2324.49 2330.96 2233.84 2253.27 3033000 0.0 0
1999-05-10 2253.27 2279.16 2233.84 2246.79 1261000 0.0 0
1999-05-11 2266.22 2279.17 2227.37 2227.37 1686000 0.0 0
1999-05-12 2227.37 2266.21 2227.37 2266.21 2596000 0.0 0
... ... ... ... ... ... ... ...
2020-11-02 6866.00 7016.00 6850.00 6949.00 5721200 0.0 0
2020-11-04 7024.00 7054.00 6976.00 6976.00 6278100 0.0 0
2020-11-05 6955.00 7032.00 6923.00 6984.00 5643400 0.0 0
2020-11-06 7070.00 7152.00 7015.00 7019.00 11092900 0.0 0
2020-11-09 7159.00 7242.00 7119.00 7173.00 7838600 0.0 0
[5324 rows x 7 columns]
Schauen wir uns als nächstes die Finanzdaten an. Zunächst aus der Gewinn- und Verlustrechnung.
Die Gewinn- und Verlustrechnung der letzten 3 Jahre können Sie dem folgenden Code entnehmen. Die wichtigsten davon sind der Gesamtumsatz (Umsatz), das Betriebsergebnis (Betriebsergebnis) und das Nettoergebnis (Nettoergebnis).
financials = ticker.financials
print(financials)
Ausführungsbildschirm
2020-03-31 2019-03-31 2018-03-31 2017-03-31
Research Development None None None None
Effect Of Accounting Charges None None None None
Income Before Tax 2.82576e+12 2.64553e+12 3.09051e+12 2.55588e+12
Minority Interest 6.77064e+11 7.18985e+11 6.9412e+11 6.68264e+11
Net Income 2.07618e+12 1.88287e+12 2.49398e+12 1.83111e+12
Selling General Administrative 2.97317e+12 2.9867e+12 3.0905e+12 2.86848e+12
Gross Profit 5.40763e+12 5.4439e+12 5.49036e+12 4.86286e+12
Ebit 2.43446e+12 2.4572e+12 2.39986e+12 1.99437e+12
Operating Income 2.43446e+12 2.4572e+12 2.39986e+12 1.99437e+12
Other Operating Expenses None None None None
Interest Expense -3.2217e+10 -2.8078e+10 -2.7586e+10 -2.9353e+10
Extraordinary Items None None None None
Non Recurring None None None None
Other Items None None None None
Income Tax Expense 6.8343e+11 6.59944e+11 5.04406e+11 6.289e+11
Total Revenue 2.993e+13 3.02257e+13 2.93795e+13 2.75972e+13
Total Operating Expenses 2.74955e+13 2.77685e+13 2.69796e+13 2.56028e+13
Cost Of Revenue 2.45224e+13 2.47818e+13 2.38892e+13 2.27343e+13
Total Other Income Expense Net 3.91297e+11 1.8833e+11 6.9065e+11 5.61513e+11
Discontinued Operations None None None None
Net Income From Continuing Ops 2.14233e+12 1.98559e+12 2.58611e+12 1.92698e+12
Net Income Applicable To Common Shares 2.0589e+12 1.86808e+12 2.48169e+12 1.82131e+12
Als nächstes kommt die Bilanz.
Sie können die Bilanz der letzten 3 Jahre aus dem folgenden Code abrufen. Von diesen sind die wichtigsten Vermögenswerte das Gesamtvermögen, das Gesamtvermögen und das gesamte Eigenkapital.
balance_sheet = ticker.balance_sheet
print(balance_sheet)
Ausführungsbildschirm
2020-03-31 2019-03-31 2018-03-31 2017-03-31
Capital Surplus 4.893340e+11 4.871620e+11 4.875020e+11 4.840130e+11
Total Liab 3.194275e+13 3.186981e+13 3.087815e+13 3.056711e+13
Total Stockholder Equity 2.006062e+13 1.934815e+13 1.873598e+13 1.751481e+13
Minority Interest 6.770640e+11 7.189850e+11 6.941200e+11 6.682640e+11
Other Current Liab 4.102642e+12 4.479344e+12 4.399669e+12 3.979935e+12
Total Assets 5.268044e+13 5.193695e+13 5.030825e+13 4.875019e+13
Common Stock 3.970500e+11 3.970500e+11 3.970500e+11 3.970500e+11
Other Current Assets 2.469880e+11 1.425310e+11 2.022920e+11 1.235700e+10
Retained Earnings 2.342761e+13 2.198752e+13 1.947346e+13 1.760107e+13
Other Liab 2.746823e+12 2.887743e+12 2.902003e+12 3.163780e+12
Treasury Stock -4.253379e+12 -3.523575e+12 -1.622034e+12 -9.673210e+11
Other Assets 8.905140e+11 1.182809e+12 1.067759e+12 1.012639e+12
Cash 2.774498e+12 2.790212e+12 2.390524e+12 2.257064e+12
Total Current Liabilities 1.790238e+13 1.822694e+13 1.779689e+13 1.731896e+13
Deferred Long Term Asset Charges 3.547850e+11 5.018720e+11 4.941200e+11 5.039850e+11
Short Long Term Debt 1.418710e+11 1.560380e+11 1.674550e+11 2.285990e+11
Other Stockholder Equity -1.166273e+12 -9.166500e+11 4.356990e+11 6.409220e+11
Property Plant Equipment 1.087864e+13 1.068549e+13 1.026767e+13 1.019711e+13
Total Current Assets 1.864253e+13 1.887924e+13 1.815266e+13 1.783370e+13
Long Term Investments 1.184489e+13 1.090829e+13 1.133854e+13 1.069452e+13
Net Tangible Assets 2.006062e+13 1.934815e+13 1.873598e+13 1.751481e+13
Short Term Investments 1.477202e+12 2.234892e+12 2.447703e+12 2.522598e+12
Net Receivables 2.659748e+12 2.940890e+12 2.708900e+12 2.552805e+12
Long Term Debt 1.029678e+12 7.655860e+11 5.910860e+11 5.784750e+11
Inventory 2.434918e+12 2.656396e+12 2.539789e+12 2.388617e+12
Accounts Payable 2.434180e+12 2.645984e+12 2.586657e+12 2.566382e+12
Am Ende des Abschlusses steht die Kapitalflussrechnung.
Die Kapitalflussrechnung der letzten 3 Jahre können Sie dem folgenden Code entnehmen. Von diesen sind die wichtigsten Cashflows aus betrieblicher Tätigkeit, die gesamten Cashflows aus Finanzierungstätigkeiten und die gesamten Cashflows aus Investitionstätigkeit am wichtigsten.
cashflow = ticker.cashflow
print(cashflow)
Ausführungsbildschirm
2020-03-31 2019-03-31 2018-03-31 2017-03-31
Investments 2.334300e+11 6.166420e+11 -3.322730e+11 6.950000e+08
Change To Liabilities -7.641000e+10 9.488700e+10 4.664800e+10 1.459570e+11
Total Cashflows From Investing Activities -3.150861e+12 -2.697241e+12 -3.660092e+12 -2.969939e+12
Net Borrowings 1.558199e+12 7.229710e+11 6.893390e+11 1.030929e+12
Total Cash From Financing Activities 3.971380e+11 -5.408390e+11 -4.491350e+11 -3.751650e+11
Change To Operating Activities -2.703900e+11 4.084000e+11 4.857250e+11 7.724320e+11
Net Income 2.076183e+12 1.882873e+12 2.493983e+12 1.831109e+12
Change In Cash 7.056750e+11 4.868760e+11 7.031300e+10 2.098980e+11
Repurchase Of Stock -4.761290e+11 -5.496370e+11 -4.478180e+11 -7.039860e+11
Effect Of Exchange Rate -1.312450e+11 -4.164100e+10 -4.358800e+10 -1.348600e+10
Total Cash From Operating Activities 3.590643e+12 3.766597e+12 4.223128e+12 3.568488e+12
Depreciation 1.605383e+12 1.792375e+12 1.734033e+12 1.610950e+12
Dividends Paid -6.299870e+11 -6.448060e+11 -6.268920e+11 -6.381720e+11
Change To Inventory -1.140960e+11 -1.669020e+11 -1.711480e+11 -2.463260e+11
Change To Account Receivables 2.488950e+11 -2.468450e+11 -1.054350e+11 -2.647840e+11
Other Cashflows From Financing Activities -5.494500e+10 -6.936700e+10 -6.376400e+10 -6.393600e+10
Change To Netincome 2.228170e+11 1.431380e+11 -4.994310e+11 -1.598180e+11
Capital Expenditures -3.595131e+12 -3.738887e+12 -3.598707e+12 -3.541437e+12
Schließlich, wie man eine Zusammenfassung der Bestände erhält.
Die grundlegenden Informationen zum Bestand erhalten Sie aus dem folgenden Code. Die wichtigsten davon sind MarketCap (Marktwert), SharingOutstanding (Anzahl der ausgegebenen Aktien), ForwardPE (Prognose PER), Dividendenrendite (Dividendenrendite), ProfitMargins (Nettogewinnquote) und mehr.
info = ticker.info
print(info)
Ausführungsbildschirm
Wird weggelassen, da es sich um einen Wörterbuchtyp handelt
Wenn Sie mehrere Bestände gleichzeitig erhalten möchten, verwenden Sie die Tickers-Klasse und trennen Sie die Argumente durch ein Leerzeichen.
tickers = yf.Tickers("7203.T 9984.T 6861.T")
hists = []
for i in range(len(tickers.tickers)):
hists.append(tickers.tickers[i].history())
print(hists[0])
Ausführungsbildschirm
Open High Low Close Volume Dividends Stock Splits
Date
2020-10-09 7026.0 7029.0 6947.0 6967.0 3395900 0 0
2020-10-12 6932.0 6945.0 6900.0 6911.0 2638200 0 0
2020-10-13 6977.0 7030.0 6946.0 7030.0 3667700 0 0
2020-10-14 6962.0 6970.0 6919.0 6935.0 3065400 0 0
2020-10-15 6898.0 6933.0 6895.0 6915.0 2844800 0 0
2020-10-16 6940.0 6944.0 6825.0 6829.0 3770200 0 0
2020-10-19 6874.0 6948.0 6870.0 6945.0 3047000 0 0
2020-10-20 6926.0 6945.0 6889.0 6897.0 2342400 0 0
2020-10-21 6962.0 7052.0 6956.0 7009.0 4795000 0 0
2020-10-22 6967.0 6984.0 6941.0 6966.0 3207500 0 0
2020-10-23 7009.0 7010.0 6944.0 6973.0 3963300 0 0
2020-10-26 6970.0 7003.0 6955.0 6990.0 2675000 0 0
2020-10-27 6970.0 6993.0 6924.0 6961.0 3234300 0 0
2020-10-28 6888.0 6927.0 6845.0 6895.0 3760200 0 0
2020-10-29 6795.0 6924.0 6780.0 6893.0 4099900 0 0
2020-10-30 6848.0 6878.0 6803.0 6803.0 5207800 0 0
2020-11-02 6866.0 7016.0 6850.0 6949.0 5721200 0 0
2020-11-04 7024.0 7054.0 6976.0 6976.0 6278100 0 0
2020-11-05 6955.0 7032.0 6923.0 6984.0 5643400 0 0
2020-11-06 7070.0 7152.0 7015.0 7019.0 11092900 0 0
2020-11-09 7159.0 7242.0 7119.0 7173.0 7838600 0 0
Wenn Sie ein Ticker sind, der in Yahoo Finance vorhanden ist, können Sie Daten abrufen, auch wenn es sich nicht um eine Aktienemission handelt. Lassen Sie uns die Austauschdaten als Beispiel nehmen.
import pandas as pd
fxs = ["JPY=X", "EURUSD=X", "GBPUSD=X"]
tickers = yf.Tickers(" ".join(fxs))
closes = []
for i in range(len(tickers.tickers)):
closes.append(tickers.tickers[i].history(period="max").Close)
df = pd.DataFrame(closes).T
df.columns = fxs
print(df)
Ausführungsergebnis
JPY=X EURUSD=X GBPUSD=X
Date
1996-10-30 114.180 NaN NaN
1996-11-01 113.500 NaN NaN
1996-11-04 113.880 NaN NaN
1996-11-05 114.250 NaN NaN
1996-11-06 113.950 NaN NaN
... ... ... ...
2020-11-03 104.725 1.1643 1.2924
2020-11-04 104.546 1.1762 1.3122
2020-11-05 104.438 1.1733 1.2967
2020-11-06 103.603 1.1818 1.3139
2020-11-09 104.871 1.1910 1.3193
[6243 rows x 3 columns]
Im Folgenden erfahren Sie, wie Sie die wichtigsten Aktienindizes der Welt erhalten. Es gibt andere Indikatoren als die hier aufgeführten. Wir empfehlen Ihnen, selbst bei Yahoo Finance danach zu suchen.
indices = ["^N225", "^DJI", "^GSPC", "^IXIC", "^GDAXI", "^FTSE", "^FCHI", "^HSI", "^SSEC", "^BVSP", "^KOSPI"]
#Unten weggelassen
Anschließend werden wir anhand des Programms erläutern, wie Sie die Rendite überprüfen können, wenn Sie in Aktien investieren, die als billig und von hoher Qualität angesehen werden (PER beträgt das 10-fache oder weniger, der ROE beträgt 10% oder mehr). Dies wurde in dem in diesem Artikel angesprochenen Problem erwähnt. Ich werde erklären. Die Programmierfähigkeit des Autors ist geringer als die der Schüler, daher denke ich, dass es einige unschöne Beschreibungen gibt. Wenn Sie Vorschläge zur Codierung haben, kommentieren Sie diese bitte.
Bereiten Sie zunächst die TSE-Markenliste im CSV-Format vor. Eine Liste der an der TSE gelisteten Aktien erhalten Sie unter hier. Wählen Sie daher die Aktien aus, die Sie überprüfen möchten. In diesem Beispiel haben wir TOPIX 500-Bestandteile ausgewählt, die in TOPIX relativ groß sind.
import datetime
import numpy as np
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
data = pd.read_csv("topix500.csv")
print(data)
Ausführungsbildschirm
code
0 1332
1 1333
2 1414
3 1605
4 1721
.. ...
494 9962
495 9983
496 9984
497 9987
498 9989
[499 rows x 1 columns]
Stellen Sie den Ticker für yfinance ein. Der Nikkei-Durchschnitt, bei dem es sich um die Marktdaten handelt, wird zu den oben genannten Aktien addiert.
stocks = [str(s)+".T" for s in data.code]
stocks.append("^N225")
tickers = yf.Tickers(" ".join(stocks))
Holen Sie sich als Nächstes die historischen Daten der Preisreihen mit yfinance und fassen Sie die Schlusskursdaten im Datenrahmen zusammen.
closes = [] #Schlusskurs
for i in range(len(tickers.tickers)):
closes.append(tickers.tickers[i].history(period="max").Close)
closes = pd.DataFrame(closes).T #DataFrame-Konvertierung
closes.columns = stocks #Einstellung des Spaltennamens
closes = closes.ffill() #Vervollständigung fehlender Daten
print(closes)
Ausführungsbildschirm
1332.T 1333.T 1414.T 1605.T 1721.T 1801.T ... 9962.T 9983.T 9984.T 9987.T 9989.T ^N225
Date ...
1965-01-05 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN 1257.72
1965-01-06 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN 1263.99
1965-01-07 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN 1274.27
1965-01-08 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN 1286.43
1965-01-12 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN 1288.54
... ... ... ... ... ... ... ... ... ... ... ... ... ...
2020-11-04 417.0 2240.0 5200.0 526.0 2789.0 3325.0 ... 3135.0 74380.0 6535.0 3865.0 3945.0 23695.23
2020-11-05 417.0 2211.0 5220.0 506.0 2782.0 3335.0 ... 3200.0 74400.0 6870.0 3965.0 4020.0 24105.28
2020-11-06 421.0 2219.0 5270.0 507.0 2826.0 3385.0 ... 3245.0 75480.0 6722.0 3785.0 4155.0 24325.23
2020-11-09 423.0 2252.0 5360.0 500.0 3010.0 3440.0 ... 3360.0 78310.0 7083.0 3770.0 4185.0 24839.84
2020-11-10 437.0 2319.0 5410.0 541.0 3040.0 3535.0 ... 3455.0 77910.0 6860.0 3865.0 4145.0 25108.21
[13862 rows x 500 columns]
Als nächstes werden die Abschlussdaten in einem Datenrahmen zusammengefasst. Erstens ist das Nettoeinkommen für die Berechnung von PER und ROE. Es scheint, dass der NAN-Wert hoch ist, da der Abrechnungszeitraum jeder Marke nicht aufeinander abgestimmt ist. Bitte seien Sie jedoch versichert, dass die Daten ordnungsgemäß in den erforderlichen Teilen enthalten sind.
earnings = [] #Nettoeinkommen
dummy = tickers.tickers[0].financials.T["Net Income"]
dummy[:] = np.nan
for i in range(len(tickers.tickers)):
try:
earnings.append(tickers.tickers[i].financials.T["Net Income"])
except:
earnings.append(dummy) #Fügen Sie einen Dummy ein, wenn ein Fehler auftritt
earnings = pd.DataFrame(earnings).T #DataFrame-Konvertierung
earnings.columns = stocks #Einstellung des Spaltennamens
print(earnings)
Ausführungsbildschirm
1332.T 1333.T 1414.T 1605.T 1721.T 1801.T ... 9962.T 9983.T 9984.T 9987.T 9989.T ^N225
...
2006-08-31 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2007-08-31 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2009-03-31 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2010-03-31 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2011-03-31 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ...
2020-05-20 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2020-05-31 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2020-06-30 NaN NaN 9.005000e+09 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2020-08-31 NaN NaN NaN NaN NaN NaN ... NaN 9.035700e+10 NaN NaN NaN NaN
2020-09-30 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
[69 rows x 500 columns]
Als nächstes folgt das Kapital für die Berechnung des ROE.
equity = [] #Reinvermögen
dummy = tickers.tickers[0].balance_sheet.T["Total Stockholder Equity"]
dummy[:] = np.nan
for i in range(len(tickers.tickers)):
try:
equity.append(tickers.tickers[i].balance_sheet.T["Total Stockholder Equity"])
except:
equity.append(dummy) #Fügen Sie einen Dummy ein, wenn ein Fehler auftritt
equity = pd.DataFrame(equity).T #DataFrame-Konvertierung
equity.columns = stocks #Einstellung des Spaltennamens
print(equity)
Ausführungsbildschirm
1332.T 1333.T 1414.T 1605.T 1721.T 1801.T ... 9962.T 9983.T 9984.T 9987.T 9989.T ^N225
...
2006-08-31 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2007-08-31 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2009-03-31 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2010-03-31 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2011-03-31 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ...
2020-05-20 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2020-05-31 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2020-06-30 NaN NaN 8.359900e+10 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2020-08-31 NaN NaN NaN NaN NaN NaN ... NaN 9.565620e+11 NaN NaN NaN NaN
2020-09-30 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
[69 rows x 500 columns]
Für die Berechnung des PER ist ein EPS (Gewinn pro Aktie) erforderlich. Erstellen Sie einen Datenrahmen für ausgegebene Aktien, um das EPS zu berechnen.
shares = [] #Anzahl der ausgegebenen Aktien
for i in range(len(tickers.tickers)):
try:
shares.append(tickers.tickers[i].info["sharesOutstanding"])
except:
shares.append(np.nan) #Geben Sie den NAN-Wert ein, wenn ein Fehler auftritt
shares = pd.Series(shares) #Serie
shares.index = stocks #Indexnameneinstellung
print(shares)
Ausführungsbildschirm
1332.T 3.111410e+08
1333.T 5.262460e+07
1414.T 5.382810e+07
1605.T 1.460200e+09
1721.T 1.260270e+08
...
9983.T 1.020820e+08
9984.T NaN
9987.T 8.917480e+07
9989.T 1.169000e+08
^N225 NaN
Length: 500, dtype: float64
Erstellen Sie EPS- und ROE-Datenrahmen aus Daten zu Nettogewinn, Eigenkapital und Anzahl der ausgegebenen Aktien.
eps = earnings/shares.values # EPS
roe = earnings/equity # ROE
eps = eps.ffill() #Vervollständigung fehlender Daten
roe = roe.ffill()
eps = eps.drop(["^N225"], axis=1) # ^Löschen Sie die Spalte N225
roe = roe.drop(["^N225"], axis=1)
print(eps)
print(roe)
Ausführungsbildschirm
1332.T 1333.T 1414.T 1605.T ... 9983.T 9984.T 9987.T 9989.T
...
2006-08-31 NaN NaN NaN NaN ... NaN NaN NaN NaN
2007-08-31 NaN NaN NaN NaN ... NaN NaN NaN NaN
2009-03-31 NaN NaN NaN NaN ... NaN NaN NaN NaN
2010-03-31 NaN NaN NaN NaN ... NaN NaN NaN NaN
2011-03-31 NaN NaN NaN NaN ... NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ...
2020-05-20 47.464013 238.23459 150.107472 107.557873 ... 1592.621618 NaN 316.378618 202.668948
2020-05-31 47.464013 238.23459 150.107472 107.557873 ... 1592.621618 NaN 316.378618 202.668948
2020-06-30 47.464013 238.23459 167.291805 107.557873 ... 1592.621618 NaN 316.378618 202.668948
2020-08-31 47.464013 238.23459 167.291805 107.557873 ... 885.141357 NaN 316.378618 202.668948
2020-09-30 47.464013 238.23459 167.291805 107.557873 ... 885.141357 NaN 316.378618 202.668948
[69 rows x 499 columns]
1332.T 1333.T 1414.T 1605.T 1721.T ... 9962.T 9983.T 9984.T 9987.T 9989.T
...
2006-08-31 NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN
2007-08-31 NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN
2009-03-31 NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN
2010-03-31 NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN
2011-03-31 NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ...
2020-05-20 0.096428 0.094528 0.103502 0.05165 0.08434 ... 0.078191 0.173209 NaN 0.068505 0.126817
2020-05-31 0.096428 0.094528 0.103502 0.05165 0.08434 ... 0.078191 0.173209 NaN 0.068505 0.126817
2020-06-30 0.096428 0.094528 0.107717 0.05165 0.08434 ... 0.078191 0.173209 NaN 0.068505 0.126817
2020-08-31 0.096428 0.094528 0.107717 0.05165 0.08434 ... 0.078191 0.094460 NaN 0.068505 0.126817
2020-09-30 0.096428 0.094528 0.107717 0.05165 0.08434 ... 0.078191 0.094460 NaN 0.068505 0.126817
[69 rows x 499 columns]
Von hier aus werden wir die Daten durch Drücken formatieren. Formatieren Sie zuerst die Daten für monatliche Daten und erstellen Sie dann einen Datenrahmen für die monatliche Rendite (abzüglich Marktrenditen).
closes["month"] = closes.index.month #Erstellen einer Monatsspalte
closes["end_of_month"] = closes.month.diff().shift(-1) #Erstellen einer Flaggenspalte zum Monatsende
closes = closes[closes.end_of_month != 0] #Nur am Monatsende extrahiert
monthly_rt = closes.pct_change().shift(-1) #Monatliche Renditen erstellen(Mit Verzögerung)
monthly_rt = monthly_rt.sub(monthly_rt["^N225"], axis=0) #Abzug der Marktrendite
closes = closes[closes.index > datetime.datetime(2017, 4, 1)] #Nach April 2017
monthly_rt = monthly_rt[monthly_rt.index > datetime.datetime(2017, 4, 1)]
closes = closes.drop(["^N225", "month", "end_of_month"], axis=1) #Löschen Sie nicht benötigte Spalten
monthly_rt = monthly_rt.drop(["^N225", "month", "end_of_month"], axis=1)
print(closes)
print(monthly_rt)
Ausführungsbildschirm
1332.T 1333.T 1414.T 1605.T 1721.T 1801.T ... 9861.T 9962.T 9983.T 9984.T 9987.T 9989.T
Date ...
2017-04-28 511.60 3064.04 2390.82 994.50 1964.87 3873.35 ... 1758.93 2063.02 35232.05 4138.08 3573.51 3686.69
2017-05-31 550.67 3049.61 2498.64 947.96 2172.28 4310.81 ... 1730.92 2443.18 35949.09 4413.07 3529.87 4063.84
2017-06-30 625.93 2855.29 2687.68 1006.13 2141.72 4675.36 ... 1810.12 2507.68 36259.17 4459.15 3617.15 3950.69
2017-07-31 613.54 2895.69 2763.53 998.68 2094.50 4812.06 ... 1801.43 2673.82 32092.56 4391.01 3573.51 3875.26
2017-08-31 589.73 3068.85 2886.77 978.21 2188.95 5026.24 ... 1818.65 2756.89 30664.60 4373.37 3883.83 4294.85
2020-07-31 435.19 2021.00 4530.00 599.10 3058.94 3557.00 ... 1791.22 2489.70 55837.62 6595.00 3713.65 3580.46
2020-08-31 471.87 2398.00 5010.00 673.80 2922.77 3601.22 ... 2098.00 2777.20 63280.00 6598.00 3907.01 3912.72
2020-09-30 447.00 2412.00 5220.00 563.50 2921.00 3550.00 ... 1970.00 2935.00 65860.00 6469.00 4005.00 3965.00
2020-10-30 401.00 2182.00 5020.00 492.00 2646.00 3245.00 ... 1915.00 3090.00 72710.00 6793.00 3765.00 3875.00
2020-11-10 437.00 2319.00 5410.00 541.00 3040.00 3535.00 ... 1998.00 3455.00 77910.00 6860.00 3865.00 4145.00
[44 rows x 499 columns]
1332.T 1333.T 1414.T 1605.T 1721.T ... 9962.T 9983.T 9984.T 9987.T 9989.T
Date ...
2017-04-28 0.052727 -0.028350 0.021457 -0.070438 0.081918 ... 0.160633 -0.003289 0.042813 -0.035853 0.078659
2017-05-31 0.117186 -0.083203 0.056174 0.041880 -0.033552 ... 0.006917 -0.010858 -0.009042 0.005243 -0.047327
2017-06-30 -0.014391 0.019553 0.033625 -0.002001 -0.016644 ... 0.071656 -0.109508 -0.009877 -0.006661 -0.013689
2017-07-31 -0.024808 0.073799 0.058595 -0.006498 0.059094 ... 0.045067 -0.030496 0.009982 0.100838 0.122273
2017-08-31 -0.013368 0.001479 0.016405 0.109973 0.112144 ... 0.018384 0.018514 -0.015500 -0.030392 -0.007134
2020-07-31 0.018428 0.120684 0.040103 0.058830 -0.110373 ... 0.049619 0.067429 -0.065402 -0.013790 0.026941
2020-08-31 -0.054665 0.003878 0.039956 -0.165659 -0.002566 ... 0.054860 0.038811 -0.021512 0.023120 0.011401
2020-09-30 -0.093937 -0.086386 -0.029343 -0.117915 -0.085175 ... 0.061782 0.112979 0.059056 -0.050954 -0.013728
2020-10-30 0.013155 -0.025898 -0.022349 0.013459 0.066692 ... 0.021076 -0.026613 -0.090432 -0.056213 -0.031199
2020-11-10 NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN
[44 rows x 499 columns]
Erstellen Sie abschließend einen PER- und einen ROE-Datenrahmen, damit die monatlichen Renditen auf dem gleichen Niveau liegen.
eps_df = pd.DataFrame(index=monthly_rt.index, columns=monthly_rt.columns) #DF-Erstellung mit der gleichen Dimension wie die monatliche Rendite
roe_df = pd.DataFrame(index=monthly_rt.index, columns=monthly_rt.columns)
for i in range(len(eps_df)): #Ersetzung jeder Zeile
eps_df.iloc[i] = eps[eps.index < eps_df.index[i]].iloc[-1]
for i in range(len(roe_df)):
roe_df.iloc[i] = roe[roe.index < roe_df.index[i]].iloc[-1]
per_df = closes/eps_df #Erstellen eines PER-Datenrahmens
print(per_df)
print(roe_df)
Ausführungsbildschirm
1332.T 1333.T 1414.T 1605.T 1721.T 1801.T ... 9861.T 9962.T 9983.T 9984.T 9987.T 9989.T
Date ...
2017-04-28 11.1972 10.4392 NaN 31.454 17.0954 NaN ... 91.0625 31.8555 NaN NaN 14.9553 18.4872
2017-05-31 12.0523 10.39 NaN 29.982 18.9 NaN ... 89.6124 37.7256 NaN NaN 14.7726 20.3785
2017-06-30 13.6995 9.72799 NaN 31.8218 18.6341 NaN ... 93.7127 38.7215 NaN NaN 15.1379 19.8111
2017-07-31 13.4284 9.86563 21.2599 31.5862 18.2232 NaN ... 93.2628 41.2869 NaN NaN 14.9553 19.4328
2017-08-31 12.9072 10.4556 22.208 30.9388 19.045 NaN ... 94.1543 42.5696 NaN NaN 16.254 21.5369
2020-07-31 9.16884 8.48323 27.0784 5.57002 14.8307 NaN ... 162.317 42.8301 35.0602 NaN 11.738 17.6665
2020-08-31 9.94164 10.0657 29.9477 6.26453 14.1705 NaN ... 190.117 47.7759 39.7332 NaN 12.3492 19.306
2020-09-30 9.41766 10.1245 31.203 5.23904 14.1619 NaN ... 178.518 50.4906 74.4062 NaN 12.6589 19.5639
2020-10-30 8.44851 9.15904 30.0074 4.57428 12.8286 NaN ... 173.534 53.157 82.1451 NaN 11.9003 19.1199
2020-11-10 9.20698 9.7341 32.3387 5.02985 14.7389 NaN ... 181.056 59.4361 88.0198 NaN 12.2164 20.4521
[44 rows x 499 columns]
1332.T 1333.T 1414.T 1605.T 1721.T ... 9962.T 9983.T 9984.T 9987.T 9989.T
Date ...
2017-04-28 0.117515 0.153443 NaN 0.0156865 0.071603 ... 0.11847 NaN NaN 0.0538158 0.170991
2017-05-31 0.117515 0.153443 NaN 0.0156865 0.071603 ... 0.11847 NaN NaN 0.0538158 0.170991
2017-06-30 0.117515 0.153443 NaN 0.0156865 0.071603 ... 0.11847 NaN NaN 0.0538158 0.170991
2017-07-31 0.117515 0.153443 0.101048 0.0156865 0.071603 ... 0.11847 NaN NaN 0.0538158 0.170991
2017-08-31 0.117515 0.153443 0.101048 0.0156865 0.071603 ... 0.11847 NaN NaN 0.0538158 0.170991
2020-07-31 0.0964277 0.0945276 0.107717 0.05165 0.0843397 ... 0.0781906 0.173209 NaN 0.0685051 0.126817
2020-08-31 0.0964277 0.0945276 0.107717 0.05165 0.0843397 ... 0.0781906 0.173209 NaN 0.0685051 0.126817
2020-09-30 0.0964277 0.0945276 0.107717 0.05165 0.0843397 ... 0.0781906 0.0944602 NaN 0.0685051 0.126817
2020-10-30 0.0964277 0.0945276 0.107717 0.05165 0.0843397 ... 0.0781906 0.0944602 NaN 0.0685051 0.126817
2020-11-10 0.0964277 0.0945276 0.107717 0.05165 0.0843397 ... 0.0781906 0.0944602 NaN 0.0685051 0.126817
[44 rows x 499 columns]
Lassen Sie uns abschließend diese Datenrahmen zu einem kombinieren.
stack_monthly_rt = monthly_rt.stack() #In einer Dimension gestapelt
stack_per_df = per_df.stack()
stack_roe_df = roe_df.stack()
df = pd.concat([stack_monthly_rt, stack_per_df, stack_roe_df], axis=1) #Beitreten
df.columns = ["rt", "per", "roe"] #Einstellung des Spaltennamens
df["rt"][df.rt > 1.0] = np.nan #Entfernung von Ausreißern
print(df)
Ausführungsbildschirm
rt per roe
Date
2017-04-28 1332.T -0.047638 11.1972 0.117515
1333.T -0.070101 10.4392 0.153443
1414.T 0.026680 NaN NaN
1605.T -0.038959 31.454 0.0156865
1721.T 0.051664 17.0954 0.071603
... ... ... ...
2020-11-10 9962.T 0.025375 59.4361 0.0781906
9983.T -0.021231 88.0198 0.0944602
9984.T -0.082885 NaN NaN
9987.T -0.066187 12.2164 0.0685051
9989.T -0.023070 20.4521 0.126817
[21892 rows x 3 columns]
Lassen Sie uns nun die Aktien (PER <10, ROE> 0,1) extrahieren, die als billig und von hoher Qualität angesehen werden, und die Verteilungskarte der Renditen und die kumulierten Renditen beim Kauf und Verkauf dieser Aktien beobachten.
Durch die Analyse der Daten auf diese Weise wird deutlich, dass die individuelle Aktienauswahl mit Tools wie den in Magazinen eingeführten völlig unzuverlässig ist. Diese Überprüfung ist nur ein Abzug der Marktrenditen, sodass Sie möglicherweise einige Renditen erzielen, wenn der Markt boomt.
value_df = df[(df.per < 10) & (df.roe > 0.1)] #Extrahieren Sie billige und hochwertige Marken
plt.hist(value_df["rt"]) #Zeichnen eines Histogramms
plt.show()
balance = value_df.groupby(level=0).mean().cumsum() #Erstellen Sie kumulative Renditen
plt.clf()
plt.plot(balance["rt"]) #Eine Ausgleichskurve zeichnen
plt.show()
Ausführungsergebnis
Die in diesem Artikel vorgestellte Überprüfung ist nur der Anfang des quantitativen und empirischen Handels. Obwohl dieser Artikel als "Erfolgreiche Investition" bezeichnet wird, werden nur wenige Personen diesen Artikel tatsächlich lesen und erfolgreich investieren. Das liegt daran, dass die Mehrheit der Leute, die den Artikel lesen, keine Maßnahmen ergreift. Die Aktion hier besteht nicht nur darin, diesen Artikel zu lesen und die brennende Klinge zu handeln, sondern den quantitativen und empirischen Handel anhand des Einfallsreichtums anhand der Inspiration aus diesem Artikel zu überprüfen. Es bedeutet zu erreichen.
Dieser Artikel ist so übersichtlich wie möglich organisiert, dennoch kann der Leser die detaillierten und nützlichen Erkenntnisse, die sich dabei ergeben haben, niemals verstehen, indem er einfach den Artikel liest. Die einzige Möglichkeit, dies zu Ihrem eigenen zu machen, besteht darin, Ihre Hände zu bewegen.
Ich habe mein eigenes Wissen über den Handel in Blogs und Notizen geschrieben. Wenn Sie diesen Artikel gelesen haben und sich ernsthaft mit quantitativem und empirischem Handel beschäftigen, werden Sie die folgenden Referenzen sicher leiten.
Auch hier wird der größte Teil des Handels vom Glück bestimmt. Der Grund, warum ich mich bisher gut geschlagen habe, ist, dass ich das Glück habe, dass die Leistung nicht gesunken ist. Mögest du auch viel Glück haben.