Immédiatement, investissez-vous tous? Si oui, quel type d'investissement faites-vous?
Il existe différents objectifs d'investissement dans le monde et différentes méthodes d'investissement. Les informations sur l'investissement sont abondantes dans le monde. Il vaut peut-être mieux dire qu’il s’agit d’inondations. Prenant les livres comme exemple, il existe une gamme de livres d'introduction légers qui encouragent l'investissement avec des mots doux dans des livres financiers spécialisés. Les blogs et les SNS sont également d'importantes sources d'informations, et il semble que YouTube pour l'investissement gagne également en popularité ces jours-ci.
Cependant, malgré l'existence de sources d'informations aussi diverses, seule une poignée d'investissements réussis peut être réalisée. C'est une recherche un peu ancienne, mais selon la recherche sur les investisseurs individuels de Nomura Securities en 2015, le pourcentage d'investisseurs individuels qui réalisent un profit total est de 9,3%. Pourquoi tombez-vous dans une telle situation? Permettez-moi de vous donner quelques exemples de l'approche adoptée par les débutants en investissement.
―― Sautez à la flambée des prix des actions à thème à la mode et saisissez le prix élevé --Imitez Buffett et sélectionnez un stock de croissance d'aubaine dans le rapport des quatre saisons
Certaines personnes peuvent être déçues de voir la perte non réalisée à chaque fois que survient la pause déjeuner des heures de travail, car elles échangent une telle méthode en avalant. Encore une fois, pourquoi nous retrouvons-nous dans cette situation? C'est parce que ** les débutants ne savent pas quels styles de trading sont intrinsèquement supérieurs ** en premier lieu.
Dans cet article, j'ai gardé à l'esprit que cela donnera une prise de conscience complètement nouvelle aux perspectives d'investissement des débutants, à la fois dans le lapin et dans le coin. Le commerce est une science. Le trading scientifique est, en d'autres termes, un trading quantitatif et empirique.
Dans cet article, nous allons vous montrer quels styles de trading dominent, sur la base d'une réflexion statistique. Dans l'article, j'ai choisi des termes aussi faciles à comprendre que possible pour que les débutants puissent les lire facilement, et j'ai essayé d'omettre autant que possible les formules difficiles et les considérations techniques.
Il vous apprendra également des techniques spécifiques pour mettre en pratique le trading scientifique. La programmation est essentielle pour le trading quantitatif et empirique. Dans cet article, j'ai écrit un programme pour effectuer la vérification minimale requise en utilisant le langage Python. Beaucoup de gens y penseront comme de la programmation, mais c'est une bonne idée de saisir cette occasion pour commencer à étudier. Travailler avec un sens du but est le moyen le plus rapide de s'améliorer.
Au début de l'article, je voudrais vous présenter la performance de mon investissement jusqu'à présent. Tout à coup, vous pourriez penser que c'est moche de parler de l'argent que vous avez gagné, mais il n'est pas convaincant de dire quoi que ce soit à quelqu'un qui n'a pas produit de résultats. Une chose à ajouter est que la chose la plus importante dans l'investissement est la gestion des processus, pas les résultats. En effet, comme nous le verrons plus loin, la performance des investissements est fortement dépendante de la chance, et prendre des décisions basées uniquement sur les résultats conduit souvent à des conclusions erronées.
À l'origine, j'investis aux côtés d'un ingénieur professionnel, mais en 2014, j'ai commencé la gestion d'actifs à grande échelle. Le fonds de démarrage à ce moment-là était de 50 millions de yens. En 2016, nous avons développé le système d'exploitation qui est actuellement le pilier. Ce système d'exploitation est notre système phare qui a rapporté environ 140 millions de yens depuis le début de l'exploitation jusqu'à aujourd'hui. L'investissement est ciblé sur les grandes actions appelées TOPIX500 des actions japonaises, et le rendement moyen des quatre dernières années est d'environ 40%.
Maintenant, je vais vous expliquer pourquoi l'approche du débutant mentionnée au début ne peut pas réussir et quel est le problème. Le succès signifie ici l'obtention du rendement souhaité de manière continue et stable sans aucun revers pendant la période d'investissement d'au moins 5 ans.
Tout d'abord, examinons si la méthode au début fera un profit ou non. À titre d'exemple, envisagez d'investir dans une action considérée comme bon marché et de haute qualité. Lors de la sélection des actions individuelles, vous utiliserez très probablement les outils des sociétés de valeurs mobilières pour rechercher des actions. Jetons un coup d'œil à la performance en investissant dans une action avec un PER de 10 fois ou moins et un ROE de 10% ou plus pendant un mois.
La période d'agrégation va d'avril 2017 à octobre 2020, et le bénéfice réalisé lorsque l'action filtrée est achetée au début du mois (pour être exact, achetée au cours de clôture du mois précédent) et réglée au cours de clôture de la fin du mois. C'est une carte de distribution (diaphragme). À ce moment, le rendement du marché est soustrait du rendement de l'action individuelle. Si vous ne le faites pas, vous serez affecté par la forte hausse de la moyenne du Nikkei et vous ne pourrez pas distinguer si les bénéfices que vous avez réalisés dépendent de vos compétences en matière de sélection de titres, ou si vous avez la chance de bénéficier de la hausse du marché.
Eh bien, cette méthode d'investissement est-elle rentable?
En conclusion, cela peut être rentable ou non. L'action dans laquelle vous avez investi peut être la plus à droite (c'est-à-dire l'action qui a réalisé un profit) dans la distribution indiquée ci-dessus. Il peut également s'agir de la partie la plus à gauche de la distribution (c'est-à-dire du stock qui a perdu de l'argent). Tous les stocks inclus dans la distribution ci-dessus sont des stocks «bon marché et de haute qualité» selon vos normes. Ce n'est pas le fait que «bon marché et de haute qualité» détermine le profit ou la perte final, mais on peut dire que c'est le soi-disant doigté qui a ramassé la marque parmi les nombreuses marques ciblées à cette époque. Je vais. Par exemple, j'ai aimé le nom de l'entreprise, il est apparu en haut de la projection, j'ai lu un magazine et j'ai soudain pensé à investir, ou quelque chose comme ça. Faisons le.
Le résultat de votre investissement dépend de votre chance. Au contraire, c'est principalement déterminé par la chance. La chance ici signifie la distribution de probabilité comme indiqué dans la figure ci-dessus. Comme vous pouvez le voir dans l'exemple ci-dessus, si vous vous concentrez uniquement sur le résultat de l'investissement, vous ne pouvez jamais juger si l'investissement lui-même a réussi. Cela n'a aucun sens que le résultat de votre métier soit le produit de vos propres compétences ou une coïncidence.
L'incapacité de juger correctement les résultats de cette manière signifie que nous ne savons pas si nous pouvons nous fier à la méthode. En d'autres termes, il n'est pas possible de passer par le processus d'amélioration des affaires. Une approche comme celle du début n'a pas l'idée de renverser le processus d'amélioration. Afin d'exécuter le processus d'amélioration, nous avons besoin d'un mécanisme permettant de remonter les résultats quantitatifs dans un court laps de temps.
Si vous ne pouvez pas passer par le processus d'amélioration, vos compétences en matière d'investissement ne s'amélioreront jamais à l'avenir. C'est la même chose que de faire tourner un gacha dont le contenu est inconnu. Vous ne faites que répéter l'acte stérile de retirer plusieurs fois par an quelques gachas de la distribution des émissions ci-dessus, vous réjouissant si les résultats sont bons et décourageant si les résultats sont mauvais.
Alors, y a-t-il un moyen de capturer ce gacha? Naturellement, la réponse est "OUI".
Il y a de bonnes et de mauvaises choses dans le stand de gacha. Une table avec beaucoup de succès à l'intérieur est une bonne table, et une table avec seulement des restes est une mauvaise table. À quoi cela ressemble-t-il lorsque vous regardez ces plates-formes en termes de distribution des émissions? Voici trois exemples:
Tout d'abord, qu'en est-il du support le plus à gauche? Le centre de la distribution des émissions de cette plate-forme est presque 0. Autrement dit, la valeur attendue de ce support est de 0. Peu importe combien vous dessinez du gacha sur cette plate-forme, vos actifs ne croîtront pas. Même si vous faites un profit temporaire, il se trouve que vos performances sont supérieures. À long terme, le profit et la perte moyens gagnés approcheront toujours de zéro.
Alors que diriez-vous de la plate-forme intermédiaire? Si vous regardez de près la distribution des émissions de cette plate-forme, vous pouvez voir qu'elle s'est légèrement décalée vers la droite (côté plus). C'est l'état où la valeur attendue est positive. En trading, nous utilisons des expressions telles que "avoir un avantage" et "avoir un alpha (revenu excessif)". En continuant à tirer le gacha, vous pouvez développer vos actifs sur cette plate-forme. Cependant, les hauts et les bas des actifs en cours de route sont volatils et vous pouvez vous arrêter à mi-chemin.
Enfin, c'est le stand le plus à droite. La distribution des émissions de cette plate-forme est légèrement décalée vers la droite, similaire à la plate-forme au milieu. Et si vous regardez de plus près, vous pouvez voir que la variation (propagation à partir du centre) est dans une petite plage par rapport à la plate-forme au milieu. La valeur attendue est positive et la variation est faible, c'est-à-dire qu'il s'agit d'une plate-forme avec un «ratio net» élevé. Vous pouvez trouver un tel stand de gacha, et en continuant à le tirer, votre succès sera solide.
Il n'est pas possible de saisir la tendance de ce à quoi ressemble le contenu du support de gacha en tirant sur le gacha une ou deux fois. Par conséquent, si vous voulez vraiment saisir la tendance du contenu, vous devez le retourner encore et encore. L'important ici est de ne tourner qu'un seul gacha sans se détourner. Vous ne pouvez pas saisir la tendance même si cela prend toute une vie en la tirant à mi-chemin et en passant à ce gacha car il semble que ce gacha n'obtienne pas beaucoup de succès.
En d'autres termes, dans le trading, vous devez continuer à négocier de manière cohérente en utilisant une seule méthode. Cela ne suffit pas 10 ou 100 fois. Cela doit être fait plusieurs fois, plus de 1000 fois. Ne passez pas de l'une à l'autre aux méthodes d'investissement telles que les magazines. La seule façon de lutter contre l'incertitude de l'investissement est de gagner des essais. La seule arme dont nous disposons est la loi de la majorité.
Par conséquent, ** une stratégie de trading dominante est une stratégie «gérable» **. Ceux qui ont une durée mensuelle ou plus ne sont pas adaptés à la négociation par des investisseurs individuels. Au moins, le trading doit être effectué quotidiennement. Le meilleur de ces derniers est le scalping. De plus, plus la période de négociation est courte, moins le mouvement des prix est incertain et plus il est facile de saisir la tendance (en particulier, l'incertitude sur l'investissement est proportionnelle à la racine carrée de la période d'investissement).
Cependant, bien sûr, vous avez besoin d'argent pour dessiner une gacha. Plus vous tirez, plus l'argent disparaîtra de votre portefeuille. C'est la même chose pour le trading. En trading, une transaction coûte toujours de l'argent. S'il s'agit d'une action, vous paierez les frais et le taux d'intérêt de crédit lors de l'achat de l'action, et s'il s'agit de devises, vous paierez le spread au trader dans une transaction. Si vous négociez plusieurs fois, votre argent s'épuisera en un rien de temps.
Estimer la tendance du contenu du gacha en lançant des balles réelles ne vaut vraiment pas la peine. Plutôt que de faire cela, il existe un moyen de frapper un bon stand de gacha à l'avance.
Dans le monde de l'investissement, nous pouvons collecter certaines des données qui sont pré-utilisées sur le stand de gacha. Et vous pouvez utiliser ces données pour vérifier quel type de stand de gacha est bon, c'est-à-dire sur quel type de stratégie de trading vous devriez miser avant de dessiner du gacha. Il s'agit d'une méthode de trading dite quantitative et empirique. L'analyse des données est utilisée pour trouver la valeur attendue qui peut surmonter le coût de transaction.
Des recherches sur le trading quantitatif et empirique sont menées depuis de nombreuses années. Surtout récemment, il existe de nombreux cas où l'apprentissage automatique est utilisé à cette fin. L'apprentissage automatique est très utile non seulement pour confirmer la signification statistique des données, mais également pour extraire des caractéristiques de marché cachées que personne ne connaît. La bibliothèque de programmation est vaste et des API de téléchargement de données sont en cours de développement. Même les investisseurs individuels peuvent analyser pleinement les données.
En fonctionnement réel, il est nécessaire de fixer les conditions autant que possible en fonction du résultat de la vérification et d'effectuer le commerce mécaniquement. N'y mettez pas d'émotions humaines. Et si vous répétez mécaniquement beaucoup de transactions, il n'y a aucune raison de ne pas automatiser cela. Un tel style de négociation est également appelé collectivement «système de négociation».
Dans la pratique, une approche d'investissement réussie consiste à passer par le processus d'amélioration tout en comparant la pré-vérification (c'est-à-dire le backtesting) avec la performance opérationnelle réelle. Pour ceux qui n'ont jamais fait d'analyse de données, les chapitres suivants vous montreront comment analyser les données à l'aide de Python.
Maintenant, collectons d'abord les données. Les données sont collectées à l'aide de l'API Yahoo Finance. À ce stade, une bibliothèque appelée yfinance est utilisée, alors installez-la d'abord. Pour plus d'informations sur yfinance, veuillez consulter ici.
pip install yfinance
(Ajout) À propos du bug de yfinance Il y a un bogue dans yfinance selon lequel vous ne pouvez pas obtenir de données financières par défaut. Vous pouvez l'obtenir en modifiant le fichier yfinance base.py comme suit.
# base.py Près de la ligne 353
# get fundamentals
# data = utils.get_json(url+'/financials', proxy)← Programme par défaut. Masque
url = "{}/{}/financials".format(self._scrape_url, self.ticker) #ajouter à
data = utils.get_json(url, proxy) #ajouter à
Commençons par télécharger les données de prix des actions du marché boursier japonais.
En exécutant le code suivant, vous pouvez obtenir les données historiques de 7203 Toyota Motor en un instant. Étant donné que le symbole boursier d'une action sur le marché japonais est représenté par le code boursier + ".T", vous pouvez facilement obtenir les données de presque toutes les actions sans rechercher le symbole de Yahoo Finance.
import yfinance as yf
ticker = yf.Ticker("7203.T")
hist = ticker.history(period="max")
print(hist)
Écran d'exécution
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]
Ensuite, regardons les données financières. Tout d'abord, à partir du compte de résultat.
Vous pouvez obtenir le compte de résultat des 3 dernières années à partir du code ci-dessous. Parmi ceux-ci, les plus importants sont le revenu total (ventes), le bénéfice d'exploitation (bénéfice d'exploitation) et le bénéfice net (bénéfice net).
financials = ticker.financials
print(financials)
Écran d'exécution
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
Vient ensuite le bilan.
Vous pouvez obtenir le bilan des 3 dernières années à partir du code ci-dessous. Parmi ceux-ci, les plus importants sont l'actif total, le passif total et l'avoir total des actionnaires.
balance_sheet = ticker.balance_sheet
print(balance_sheet)
Écran d'exécution
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
À la fin des états financiers se trouve le tableau des flux de trésorerie.
Vous pouvez obtenir le tableau des flux de trésorerie des 3 dernières années à partir du code ci-dessous. Parmi ceux-ci, les plus importants sont les flux de trésorerie totaux des activités d'exploitation, les flux de trésorerie totaux des activités de financement et les flux de trésorerie totaux des activités d'investissement.
cashflow = ticker.cashflow
print(cashflow)
Écran d'exécution
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
Enfin, comment obtenir un résumé des stocks.
Vous pouvez obtenir les informations de base du stock à partir du code ci-dessous. Parmi ceux-ci, les plus importants sont marketCap (valeur marchande), actions en cours (nombre d'actions émises), forwardPE (PER prévisionnelle), dividendYield (rendement du dividende), profitMargins (ratio de bénéfice net), etc.
info = ticker.info
print(info)
Écran d'exécution
Omis car il s'agit d'un type de dictionnaire
Si vous souhaitez obtenir plusieurs actions en même temps, utilisez la classe Tickers et séparez les arguments par un espace.
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])
Écran d'exécution
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
Si vous êtes un ticker qui existe dans Yahoo Finance, vous pouvez obtenir des données même s'il ne s'agit pas d'une émission d'actions. Prenons les données d'échange à titre d'exemple.
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)
Résultat de l'exécution
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]
Voici comment obtenir les principaux indices boursiers mondiaux. Il existe d'autres indicateurs qui peuvent être pris en dehors de ceux énumérés ici. Nous vous encourageons à le rechercher vous-même sur Yahoo Finance.
indices = ["^N225", "^DJI", "^GSPC", "^IXIC", "^GDAXI", "^FTSE", "^FCHI", "^HSI", "^SSEC", "^BVSP", "^KOSPI"]
#Omis ci-dessous
Ensuite, à titre d'exemple, en nous basant sur le programme, nous expliquerons comment vérifier le rendement en investissant dans des actions considérées comme bon marché et de haute qualité (PER est 10 fois ou moins, ROE est 10% ou plus), ce qui a été mentionné dans le problème soulevé dans cet article. Je vais expliquer. La capacité de programmation de l'auteur est inférieure à celle des étudiants, donc je pense qu'il y a des descriptions disgracieuses. Si vous avez des suggestions concernant le codage, veuillez commenter.
Commencez par préparer la liste des marques TSE au format CSV. Vous pouvez obtenir une liste des actions cotées sur le TSE à partir de ici, veuillez donc récupérer les actions que vous souhaitez vérifier. Dans cet exemple, nous avons ciblé les constituants TOPIX 500, qui sont relativement grands dans TOPIX.
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)
Écran d'exécution
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]
Définissez le ticker pour yfinance. La moyenne Nikkei, qui correspond aux données du marché, est ajoutée aux actions ci-dessus.
stocks = [str(s)+".T" for s in data.code]
stocks.append("^N225")
tickers = yf.Tickers(" ".join(stocks))
Ensuite, obtenez les données historiques de la série de prix avec yfinance et récapitulez les données de prix de clôture dans la base de données.
closes = [] #le dernier prix
for i in range(len(tickers.tickers)):
closes.append(tickers.tickers[i].history(period="max").Close)
closes = pd.DataFrame(closes).T #Conversion DataFrame
closes.columns = stocks #Paramètre de nom de colonne
closes = closes.ffill() #Achèvement des données manquantes
print(closes)
Écran d'exécution
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]
Ensuite, les données des états financiers sont résumées dans une base de données. Le premier est le revenu net pour le calcul du PER et du ROE. Il semble que la valeur NAN soit élevée car la fin de l'année fiscale de chaque marque n'est pas alignée, mais soyez assuré que les données sont correctement incluses dans les parties nécessaires.
earnings = [] #Revenu net
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) #Insérer un mannequin lorsqu'une erreur se produit
earnings = pd.DataFrame(earnings).T #Conversion DataFrame
earnings.columns = stocks #Paramètre de nom de colonne
print(earnings)
Écran d'exécution
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]
Vient ensuite le capital pour le calcul du ROE.
equity = [] #valeur nette
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) #Insérer un mannequin lorsqu'une erreur se produit
equity = pd.DataFrame(equity).T #Conversion DataFrame
equity.columns = stocks #Paramètre de nom de colonne
print(equity)
Écran d'exécution
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]
Le BPA (gain par action) est nécessaire pour calculer le PER. Créez un certain nombre de blocs de données d'actions émises pour calculer le BPA.
shares = [] #Nombre d'actions émises
for i in range(len(tickers.tickers)):
try:
shares.append(tickers.tickers[i].info["sharesOutstanding"])
except:
shares.append(np.nan) #Entrez la valeur NAN lorsqu'une erreur se produit
shares = pd.Series(shares) #Séries
shares.index = stocks #Réglage du nom de l'index
print(shares)
Écran d'exécution
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
Créez des bases de données BPA et ROE à partir des données sur le revenu net, les capitaux propres et le nombre d'actions émises
eps = earnings/shares.values # EPS
roe = earnings/equity # ROE
eps = eps.ffill() #Achèvement des données manquantes
roe = roe.ffill()
eps = eps.drop(["^N225"], axis=1) # ^Supprimer la colonne N225
roe = roe.drop(["^N225"], axis=1)
print(eps)
print(roe)
Écran d'exécution
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]
À partir de là, nous formaterons les données en les poussant. Tout d'abord, formatez les données pour les données mensuelles, puis créez une base de données de retour mensuel (moins les rendements du marché).
closes["month"] = closes.index.month #Créer une colonne mensuelle
closes["end_of_month"] = closes.month.diff().shift(-1) #Créer une colonne d'indicateur de fin de mois
closes = closes[closes.end_of_month != 0] #Extrait uniquement à la fin du mois
monthly_rt = closes.pct_change().shift(-1) #Créer des retours mensuels(Avec décalage)
monthly_rt = monthly_rt.sub(monthly_rt["^N225"], axis=0) #Déduction du rendement du marché
closes = closes[closes.index > datetime.datetime(2017, 4, 1)] #Après avril 2017
monthly_rt = monthly_rt[monthly_rt.index > datetime.datetime(2017, 4, 1)]
closes = closes.drop(["^N225", "month", "end_of_month"], axis=1) #Supprimer les colonnes inutiles
monthly_rt = monthly_rt.drop(["^N225", "month", "end_of_month"], axis=1)
print(closes)
print(monthly_rt)
Écran d'exécution
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]
Enfin, créez une base de données PER et ROE afin que les rendements mensuels soient au même niveau.
eps_df = pd.DataFrame(index=monthly_rt.index, columns=monthly_rt.columns) #Création DF de même dimension que la déclaration mensuelle
roe_df = pd.DataFrame(index=monthly_rt.index, columns=monthly_rt.columns)
for i in range(len(eps_df)): #Substitution à chaque ligne
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 #Création d'une trame de données PER
print(per_df)
print(roe_df)
Écran d'exécution
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]
Enfin, combinons ces trames de données en une seule.
stack_monthly_rt = monthly_rt.stack() #Empilé dans une dimension
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) #Joindre
df.columns = ["rt", "per", "roe"] #Paramètre de nom de colonne
df["rt"][df.rt > 1.0] = np.nan #Suppression des valeurs aberrantes
print(df)
Écran d'exécution
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]
Maintenant, extrayons les actions (PER <10, ROE> 0,1) considérées comme bon marché et de haute qualité, et observons la carte de distribution des rendements et les rendements cumulés lors de l'achat et de la vente de ceux-ci.
En analysant les données de cette manière, il est clair que la sélection de titres individuels à l'aide d'outils tels que ceux introduits dans les magazines n'est pas du tout fiable. Cette vérification n'est qu'une déduction des rendements du marché, vous pouvez donc obtenir des rendements lorsque le marché est en plein essor.
value_df = df[(df.per < 10) & (df.roe > 0.1)] #Extraire des marques bon marché et de haute qualité
plt.hist(value_df["rt"]) #Dessiner un histogramme
plt.show()
balance = value_df.groupby(level=0).mean().cumsum() #Créer des retours cumulatifs
plt.clf()
plt.plot(balance["rt"]) #Dessiner une courbe d'équilibre
plt.show()
Résultat de l'exécution
La vérification présentée dans cet article n'est encore que le début du trading quantitatif et empirique. Bien que cet article soit intitulé «Investissement réussi», peu de gens liront cet article et réussiront à investir. C'est parce que la grande majorité des personnes qui lisent l'article n'agissent pas. L'action ici n'est pas seulement de lire cet article et d'échanger la lame brûlante, mais de vérifier le trading quantitatif et empirique par l'ingéniosité basée sur l'inspiration reçue de cet article. Cela signifie atteindre.
Cet article est organisé aussi clairement que possible, mais néanmoins, le lecteur ne peut jamais comprendre les informations détaillées et utiles qui ont surgi dans le processus en lisant simplement l'article. La seule façon de vous l'approprier est de bouger vos mains.
J'ai écrit mes propres connaissances sur le trading sur des blogs et des notes. Si vous avez lu cet article et que vous êtes sérieux au sujet du trading quantitatif et empirique, les références suivantes ne manqueront pas de vous guider.
Encore une fois, la plupart des échanges sont déterminés par la chance. La raison pour laquelle j'ai bien réussi jusqu'à présent, c'est parce que j'ai de la chance que la performance ne soit pas tombée. Puissiez-vous aussi avoir de la chance.