Biblioteka yfinance – kompletny przewodnik

Category: Jeśli Nie Możesz
17.02.2021

Ostatnia aktualizacja 17 sierpnia 2020 r

Spis treści
  • Co to jest yfinance?
  • Czy biblioteka yfinance jest bezpłatna?Dlaczego powinienem korzystać z biblioteki yfinance?Dlaczego nie powinienem korzystać z biblioteki yfinance?Jakie są alternatywy dla biblioteki yfinance?
    • RapidAPI
    • yahoo_fin Jak rozpocząć korzystanie z biblioteki yfinance?

      • Instalacja
      • Układ biblioteki Jak pobrać dane historyczne za pomocą biblioteki yfinance?

        • Demo z jednym tickerem
        • Demo z wieloma tickami Jak pobrać podstawowe dane za pomocą biblioteki yfinance?

          • Stosunek ceny do zysku
          • DywidendyDane podstawowe z wieloma pasami jednocześnie
            • Porównanie według określonego atrybutu
            • Jak pobrać dane handlowe za pomocą biblioteki yfinance?

              • Kapitalizacja rynkowa
              • TomWzloty i upadki Jak pobrać dane opcji za pomocą biblioteki yfinance?

                • Jak uzyskać daty ważności?
                • Jak uzyskać dane dotyczące połączeń?Jak uzyskać dane Puts? Powszechne błędyKońcowe przemyśleniaLink do pobrania używanego koduCo to jest yfinance?

                  yfinance to popularna biblioteka open source opracowana przez Ran Aroussi w celu uzyskania dostępu do danych finansowych dostępnych w Yahoo Finance.

                  Yahoo Finance oferuje doskonały zakres danych rynkowych dotyczących akcji, obligacji, walut i kryptowalut. Oferuje również wiadomości rynkowe, raporty i analizy, a także opcje i dane podstawowe – odróżniające ją od niektórych konkurentów.

                  Yahoo Finance miało swój własny oficjalny interfejs API, ale został on wycofany 15 maja 2017 r. W następstwie powszechnego nadużycia danych.

                  Obecnie istnieje szereg nieoficjalnych interfejsów API i bibliotek, które umożliwiają dostęp do tych samych danych, w tym oczywiście yfinance.

                  Zauważ, że możesz znać yfinance pod jego starą nazwą – fix-yahoo-finance , ponieważ 26 maja 2019 r.został zmieniony, w tym samym czasie, gdy przeszedł gruntowny przegląd, aby naprawić niektóre problemy z użytecznością.

                  Aby zapewnić kompatybilność wsteczną, fix-yahoo-finance i tak importuje i używa yfinance, ale Ran Aroussi nadal zaleca bezpośrednie instalowanie i używanie yfinance.

                  W tym artykule skupimy się głównie na bibliotece yfinance, ale szerzej omówimy ogólny zakres opcji i innych alternatywnych dostawców w naszym artykule nadrzędnym, Yahoo Finance API – kompletny przewodnik.

                  Czy biblioteka yfinance jest bezpłatna?

                  Tak, yfinance jest całkowicie otwartym i darmowym oprogramowaniem. Dokumentację znajdziesz tutaj.

                  Dlaczego powinienem korzystać z biblioteki yfinance?
                  • Wolny
                  • Szybka i łatwa konfiguracjaProstyWysoka szczegółowość danych (1 min / 2 min / 5 min danych)Zwraca dane bezpośrednio w ramkach danych / seriach pandyJak już wspomnieliśmy, yfinance jest całkowicie otwartym i darmowym oprogramowaniem. Istnieją inne sposoby uzyskiwania dostępu do danych Yahoo Finance, niektóre bezpłatne, a niektóre płatne, a niektóre opcje wymagające płatności mają pewne zalety, takie jak zapewnienie pewnego stopnia konserwacji rozwiązania, ale każdy kocha za darmo!

                    Instalacja nie może być szybsza ani łatwiejsza . yfinance ma tylko 4 zależności, z których wszystkie i tak są dostarczane z Anacondą i instaluje się w całości w pojedynczej linii kodu. Nie jest wymagane tworzenie konta ani rejestracja i używanie kluczy API!

                    To proste . yfinance jest wysoce Pythonowe w swojej konstrukcji i niewiarygodnie usprawnione. Jest to tak proste, jak utworzenie obiektu tickera dla określonego paska / listy pasków, a następnie po prostu wywołanie wszystkich metod tego obiektu. Lubię to:

                    Nie martw się, za chwilę rozwiążemy ten kod dalej!

                    Ponadto dokumentacja jest zwięzła na jednej stronie, a nazwy metod są oczywiste.

                    Wysoka szczegółowość danych . Jedną z fajnych cech yfinance jest to, że możesz uzyskać bardzo dopracowane dane, aż do 5 minut, 3 minut, a nawet 1 minuty! Pełny zakres dostępnych interwałów to:

                    Należy jednak pamiętać, że dane z 1 m można odzyskać tylko z ostatnich 7 dni, a wszystko w ciągu dnia (interwał

                    Jeśli metoda, aby uzyskać dane historyczne HTML ociera, byłoby przeszukując różne div klasę i tr tagi itd. Na różne identyfikatory wyłowić dane, które powinny być zwrócone.

                    Na przykład identyfikator klasy „Py (10px) Pstart (10px) odnosi się do historycznych cen występujących w tabeli. Jeśli w tym przypadku Yahoo Finance miałoby zmienić identyfikator klasy wskazujący na tę wartość, metoda może zwrócić całkowicie niepoprawne dane lub nawet nic. Ponownie, ten rodzaj luki nie dotyczy wszystkich metod yfinance – większość z nich faktycznie wykonuje bezpośrednie wywołania API – ale ma wpływ na kilka.

                    To nieoficjalne rozwiązanie . Ponownie, ponieważ yfinance jest po prostu wynikiem ciężkiej pracy jednego człowieka i nie jest w żaden sposób powiązany z Yahoo Finance, nie ma gwarancji, że jeśli się zepsuje, zostanie utrzymane.

                    Jak już wspomnieliśmy, wprowadzono dużą aktualizację, która rozwiązała problemy 26 maja 2019 r., Tego samego dnia, w którym została zmieniona, ale to nie gwarantuje, że problemy zostaną naprawione w przyszłości. Czy na pewno chcesz zbudować algorytm handlowy na podstawie danych, które pewnego dnia mogą nagle i bez ostrzeżenia być błędne? Istnieje już kilka znanych problemów z yfinance, które omówimy w dalszej części tego artykułu.

                    Możesz dostać się do limitu / czarnej listy. Ponownie, ponieważ yfinance zbiera dane dla kilku swoich funkcji, czasami istnieje ryzyko ograniczenia szybkości lub umieszczenia na czarnej liście w przypadku zbyt wielu prób zgarniania.

                    Jest to ryzyko, które zawsze występuje, gdy próbujesz zeskrobać strony internetowe, ale kiedy tworzysz aplikacje, handlując prawdziwymi pieniędzmi na infrastrukturze, która może generować wiele żądań danych, ryzyko: zmiany nagrody.

                    WniosekOgólnie yfinance to niezwykle przyjazna opcja dla początkujących. Będziesz mógł od razu zanurkować i przetestować pomysły bez tracenia czasu na zastanawianie się nad złożoną dokumentacją, a jednocześnie mieć dostęp do szerokiego zakresu danych!

                    To powiedziawszy, ryzyko uzyskania błędnych danych lub zablokowania dostępu do jakichkolwiek danych podczas korzystania z algorytmów handlujących prawdziwymi pieniędzmi jest absolutnie niedopuszczalne.

                    Uważamy, że yfinance świetnie nadaje się do tworzenia prototypów lub jeśli jesteś początkującym użytkownikiem lub po prostu chcesz pobrać kilka danych historycznych.

                    Ale jeśli chcesz mieć całkowitą pewność, że poważny system transakcyjny będzie działał z całkowitą niezawodnością, zdecydowanie zalecamy skorzystanie z oficjalnego i alternatywnego dostawcy danych rynkowych – najlepiej takiego, który twierdzi, że zapewnia dane o niskim opóźnieniu bezpośrednio z giełd.

                    Polygon i IEX mogą zrobić dobre zakłady.

                    Jakie są alternatywy dla biblioteki yfinance?

                    RapidAPI

                    Spośród dwóch alternatyw dla yfinance, które rozważymy, RapidAPI jest najbardziej wyrazista.

                    Po pierwsze, chociaż nadal ma ograniczony poziom bezpłatnego użytkowania, będziesz musiał płacić za wszystko, co przekracza 500 żądań miesięcznie:

                    Po drugie, nie jest to tak proste, jak na początek yfinance. Będziesz musiał założyć konto, aby uzyskać własne klucze dostępu API.

                    To powiedziawszy, dużym plusem RapidAPI jest to, że możesz go używać z 15 różnymi językami, jeśli z jakiegoś powodu Python nie jest twoją rzeczą:

                    Oferuje również większy zakres danych niż inne nasze opcje, w szczególności opcję pobierania wiadomości rynkowych i analiz, co jest fantastycznie przydatne, jeśli chcesz dodać stopień analizy nastrojów do swojego modelu!

                    Podejmowanie szybkich decyzji handlowych na podstawie maszynowego skanowania wiadomości znacznie szybciej niż człowiek może być jednym ze sposobów (choć nieco niepewnych) na uzyskanie przewagi handlowej.

                    To powiedziawszy, RapidAPI ma kilka wad.

                    Jak widać, żądania mają średnie opóźnienie 1660 ms, co nie jest straszne, ale alternatywni dostawcy danych, tacy jak polygon.io, oferują opóźnienia od 200 ms do 1 ms – to spora różnica.

                    Bardziej niepokojący jest fakt, że wnioski mają tylko 98% wskaźnik sukcesu . Niepowodzenie 1 na 50 żądań danych może być poważną sprawą, jeśli masz system handlujący prawdziwymi pieniędzmi, zwłaszcza jeśli wykonujesz mniejszą częstotliwość połączeń. Zdecydowanie coś do rozważenia.

                    Zwracane wyniki mogą być również w dość długich i zagnieżdżonych plikach JSON, co sprawia, że ​​przygotowanie danych do użycia jest nieco trudniejsze niż w przypadku korzystania z yfinance:

                    To powiedziawszy, kolejną zaletą RapidAPI jest to, że oferuje ogromną gamę interfejsów API do innych celów, więc zapoznanie się z tym, jak używać ich API dla danych Yahoo Finance, może łatwo przenieść na użycie innego z ich interfejsów API dla innego projektu w przyszłość.

                    Podsumowując, RapidAPI oferuje bardzo ograniczoną darmową warstwę, ale być może używając rozwiązania, w którym niektórzy płacą, jest bardziej prawdopodobne, że wszelkie problemy ze zmianami struktury Yahoo Finance zostaną rozwiązane szybciej.

                    Jest również bardziej skomplikowany w użyciu i trudniejszy do rozpoczęcia, ale zapewnia większy zakres danych niż nasze pozostałe dwie opcje.

                    yahoo_finyahoo_fin to otwarta i bezpłatna biblioteka podobna do yfinance.

                    Dokumentację znajdziesz tutaj.

                    Oferuje podobny zakres danych do yfinance, ale w szczególności ma kilka funkcji, które generują dla Ciebie wszystkie paski dla niektórych rynków:

                    • tickers_dow ()
                    • tickers_nasaq ()tickers_other ()tickers_sp500 ()co jest przydatną funkcją, której brakuje w finansach.

                      W rzeczywistości skupiamy się na bibliotece yahoo_fin w przykładowych sekcjach naszego artykułu nadrzędnego, Yahoo Finance API – kompletny przewodnik, więc nie będziemy już o tym tutaj mówić.

                      Jak rozpocząć korzystanie z biblioteki yfinance?

                      Instalacja

                      Rozpoczęcie pracy z biblioteką yfinance jest bardzo łatwe.

                      Ma następujące zależności:

                      • pandy>= 0,24
                      • numpy>= 1,15żądania>= 2.21wielozadaniowość>= 0,0.7To wszystko jest standardem w instalacji z Anacondą, ale można je bardzo łatwo zainstalować ręcznie, jeśli z jakiegoś powodu ich nie masz.

                        Potem jest to tak proste, jak:

                        zainstalować yfinance.

                        Układ bibliotekiSam układ jest również bardzo prosty, są tylko trzy moduły:

                        • yf.Tickers
                        • yf.download yf.pandas_datareader Prawie wszystkie metody znajdują się w module Tickers .

                          Pobieranie moduł jest do szybkiego pobierania danych historycznych z wielu Blok naraz.

                          A pandas_datareader jest dla wstecznej kompatybilności ze starszym kodem, który zignorujemy jako nieistotny, ponieważ jeśli to czytasz, prawdopodobnie jesteś nowym użytkownikiem biblioteki!

                          Jak pobrać dane historyczne za pomocą biblioteki yfinance?

                          Demo z jednym tickerem

                          Po pierwsze, zaimportujmy yfinance jako yf i stwórzmy sobie obiekt tickera dla określonego tickera (stock):

                          Pamiętaj, że teraz używamy tego obiektu tickera aapl do prawie wszystkiego – wywoływania na nim różnych metod.

                          Aby uzyskać dane historyczne, chcemy użyć metody history () , która jest najbardziej „skomplikowaną metodą w bibliotece yfinance.

                          Jako dane wejściowe przyjmuje następujące parametry:

                          • okres : okres danych do pobrania (użyj parametru okresu lub użyj początku i końca) Prawidłowe okresy to:
                            • 1 dzień, „5 dni, „1 miesiąc, „3 miesiące, „6 miesięcy, „1 rok, „2 lata, „5 lat, „10 lat, „rok, „maks.
                            • interwał : interwał danych (dane z 1 m są dostępne tylko z ostatnich 7 dni, a przedział danych Fałsz) – zwykle nie trzeba zmieniać tego z Fałsz auto_adjust : Automatycznie dostosuj wszystkie ceny OHLC (otwarte / wysokie / niskie / zamknięte)? (Domyślnie jest to Prawda) – po prostu zostaw to zawsze jako prawdziwe i nie martw się o to akcje : Pobieranie informacji na temat dywidend i podziałów akcji? (Domyślnie True)Może to wyglądać na trochę skomplikowane, ale głównie będziesz zmieniać okres (lub początek i koniec) oraz parametry interwału.

                              Na przykład, aby uzyskać 1 minutę danych historycznych dla Apple między 02/06/2020 a 07/06/2020 (format brytyjski), używamy po prostu utworzonego przez nas obiektu ticker:

                              To takie proste!

                              Demo z wieloma tickamiAby pobrać dane historyczne dla wielu pasków jednocześnie, możesz skorzystać z modułu pobierania .

                              Pobiera w większości te same argumenty, co metoda history () na obiekcie ticker, ale dodatkowo:

                              • group_by : grupuj według kolumny lub paska akcji („kolumna / „pasek danych, domyślnie „kolumna)
                              • wątki : używać wątków do masowego pobierania? (Prawda / Fałsz / Liczba całkowita) proxy : URL proxy, jeśli chcesz używać serwera proxy do pobierania danych (opcjonalnie, domyślnie Brak) Na przykład, aby uzyskać dane dla Amazon, Apple i Google naraz możemy uruchomić:

                                Zwróć uwagę, że domyślną wartością bez określonego przedziału są dane dzienne.

                                Następnie, jeśli chcemy pogrupować według tickera zamiast Open / High / Low / Close, możemy zrobić:

                                Jak pobrać podstawowe dane za pomocą biblioteki yfinance?

                                Stosunek ceny do zysku

                                Możesz uzyskać stosunek ceny do zarobków za pomocą metody Ticker.info () .

                                Ticker.info () zwraca słownik z szerokim zakresem informacji o tickerze, w tym takimi rzeczami jak podsumowanie, liczba pracowników, kapitalizacja rynkowa, wolumen, wskaźniki P / E, dywidendy itp. ponieważ wyświetlenie zajmuje dużo miejsca, ale w skrócie, jeśli nie możesz znaleźć informacji, których szukasz innymi metodami, wypróbuj metodę info ()!

                                Aby uzyskać konkretny stosunek ceny do zarobków, wyszukaj w słowniku słowo „forwardPE:

                                DywidendyMożesz otrzymać roczny procent dywidendy również za pomocą info ():

                                A jeśli chcesz zestawić każdą wypłatę dywidendy na bieżąco i na jaki dzień, możesz użyć Tickera . dywidendy () :

                                Dane podstawowe z wieloma pasami jednocześnieMożemy również chcieć pobrać podstawowe (lub inne) dane dla kilku pasków jednocześnie.

                                Spróbujmy to zrobić, a następnie spróbuj porównać nasze wskaźniki według określonego atrybutu!

                                Aby to zrobić, możemy zacząć od utworzenia listy pasków, dla których chcemy uzyskać dane, oraz pustego słownika do przechowywania wszystkich danych.

                                Będziemy musieli użyć biblioteki pandas do manipulowania ramkami danych:

                                Następnie przechodzimy przez listę pasków, w każdym przypadku dodając do naszego słownika parę klucz, wartość gdzie kluczem jest symbol giełdowy i wartość dataframe zwrócona przez metodę info () dla tego paska:

                                Następnie łączymy ten słownik ramek danych w jedną ramkę danych:

                                Następnie usuń niepotrzebną kolumnę „level_1 i wyczyść nazwy kolumn:

                                Świetnie, więc teraz wiemy, jak umieścić dowolne dane z wielu pasków jednocześnie w tej samej ramce danych!

                                Ale jak możemy łatwo porównać konkretny atrybut?

                                Porównanie według określonego atrybutuWłaściwie jest to całkiem proste, spróbujmy jednego z atrybutów w info () – liczba pracowników fullTimeEmployees :

                                Mamy więc teraz ramkę danych zawierającą tylko liczbę pracowników – jeden wpis na pasek – i możemy teraz zamawiać według kolumny „Ostatnie:

                                Bum! Oczywiście nie jest to wymagane przy zaledwie 5 tickach na naszej liście, ale fantastycznie łatwy i potężny sposób na szybkie porównanie według określonego atrybutu, gdybyśmy mieli listę tickerów całego rynku!

                                Możesz łatwo użyć tej samej metody, aby porównać dowolny atrybut!

                                Jak pobrać dane handlowe za pomocą biblioteki yfinance?

                                Dane dotyczące wszystkich trzech wartości rynkowych Kapitalizacja rynkowa, wolumen oraz maksima i minima można znaleźć za pomocą metody info ().

                                Kapitalizacja rynkowaAby uzyskać kapitalizację rynkową, użyj:

                                TomAby znaleźć aktualną głośność, wykonaj:

                                Jeśli chcesz uzyskać średnią głośność z ostatnich 24 godzin, zrób:

                                I wreszcie, jeśli chcesz uzyskać średnią wielkość z ostatnich 10 dni:

                                Wzloty i upadkiPamiętaj, że możesz znaleźć wzloty i upadki dla dowolnego przedziału czasowego:

                                • 1m, „2m, „5m, „15m, „30m, „60m, „90m, „1h, „1d, „5d, „1wk, „1mo, „3mo w żądanym okresie, używając metody history () i dostosowując interwał.

                                  Na przykład, aby uzyskać tygodniowe szczyty i dołki dla wszystkich istniejących danych historycznych, użyj:

                                  Wow, prawie 40 lat danych!

                                  Po prostu przefiltruj ramkę danych za pomocą:

                                  • aapl_historical [„Wysoka]
                                  • aapl_historical [„niski] I tak dalej, aby uzyskać poszczególne kolumny.

                                    Alternatywnie możesz użyć info (), aby uzyskać następujące przydatne informacje o wysokim / niskim poziomie:

                                    • dayHigh
                                    • dayLow fiftyTwoWeekHigh fiftyTwoWeekLow Jak pobrać dane opcji za pomocą biblioteki yfinance?

                                      Krótko mówiąc, opcje to kontrakty dające inwestorowi prawo, ale nie obowiązek , kupna (call) lub sprzedaży (put) aktywów bazowych, które reprezentują, po określonej cenie w określonym terminie lub wcześniej.

                                      Aby pobrać dane opcji, możemy skorzystać z metody option_chain () . Pobiera parametr jako dane wejściowe:

                                      • data : (RRRR-MM-DD), data ważności. Jeśli Brak zwraca wszystkie dane opcji.I ma metody opt.calls i opt.puts .

                                        Jak uzyskać daty ważności?Aby uzyskać różne daty wygaśnięcia opcji dla określonego paska, jest tak proste, jak:

                                        Jak uzyskać dane dotyczące połączeń?Aby uzyskać dane o połączeniach, możemy:

                                        Jak uzyskać dane Puts?Aby uzyskać dane dotyczące sprzedaży, robimy:

                                        Wreszcie opts samo w sobie zwraca obiekt tickera zawierający oba wywołania i łączy dane, jeśli jest to przydatne!

                                        Powszechne błędy

                                        Jak podkreśliliśmy na początku tego artykułu, yfinance to nieoficjalne rozwiązanie do zbierania danych z Yahoo Finance, więc może się zepsuć, jeśli Yahoo Finance zmieni którykolwiek ze swoich układów.

                                        Niestety wydaje się, że stało się to już częściowo, a podczas pisania tego przewodnika odkryto następujące problemy:

                                        • Wydaje się , że tickery , obiekt wielu pasków do interakcji z wieloma pasami jednocześnie, nie działają. W sekcji Dane podstawowe z wieloma znacznikami jednocześnie udostępniliśmy bardziej ręczne obejście tego problemu.
                                        • Te dane finansowe quarterly_financials balance_sheet quarterly_balance_sheet cashflow quarterly_cashflow zarobki quarterly_earnings Ticker metody nie działają i zwrotu pustych dataframes.Jest to duży problem, ponieważ w wielu przypadkach nie ma alternatywnego sposobu dla danych w niektórych z tych metod w porównaniu z innymi metodami w yfinance.

                                          Jeśli tworzysz coś, co wymaga któregokolwiek z tych danych, na przykład bilansów i wyciągów z przychodów i przepływów pieniężnych, i nadal chcesz mieć bezpłatny dostęp do danych Yahoo Finance, sprawdź bibliotekę yahoo_fin w sekcji przykładów naszego przewodnika https: // algotrading101. com / learn / yahoo-finance-api /, która ma metody pracy, aby uzyskać wszystkie te dane!

                                          Końcowe przemyślenia

                                          Tak więc wyraźnie, jak właśnie wykazaliśmy, yfinance NIE jest bezpiecznym rozwiązaniem do budowania infrastruktury krytycznej.

                                          Jeśli chcesz tworzyć algorytmy handlujące prawdziwymi pieniędzmi, zdecydowanie zalecamy korzystanie z oficjalnego źródła danych / API, najlepiej takiego, które jest bezpośrednio połączone z wymianą danych i ma małe opóźnienia. Coś takiego jak Polygon.io lub IEX może Ci bardziej odpowiadać.

                                          Jeśli absolutnie MUSISZ używać danych Yahoo Finance w szczególności, zalecamy przynajmniej opłacenie nieoficjalnego API, takiego jak RapidAPI, gdzie możesz się założyć, że istnieje aktywny zespół programistów stale utrzymujący interfejs API. Pamiętaj, że RapidAPI nadal ma ograniczoną warstwę bezpłatną!

                                          To powiedziawszy, yfinance może być dobry w tworzeniu aplikacji testowych jako początkujący, ponieważ jego sekcje, które działają, są fantastycznie łatwe do rozpoczęcia i użytkowania.

                                          Szczególnym forte yfinance jest to, że nici parametr yf.download zezwala na bardzo szybkie pobieranie historyczny dla wielu Blok gdy zestaw do True powoduje !

                                          Link do pobrania używanego kodu

                                          Możesz znaleźć kod użyty w tym artykule tutaj.

    We use cookies to provide you with the best possible experience. By continuing, we will assume that you agree to our cookie policy