Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from urllib.request import urlopen as uReq
- from bs4 import BeautifulSoup as soup
- from decimal import Decimal
- import ssl
- ssl._create_default_https_context = ssl._create_unverified_context
- # --ALLA TICKERS TILL AFFARSVARDEN.SE--
- #
- # Ericsson: 772
- # Electrolux: 2193
- # AstraZeneca: 1295
- # Volvo: 1146
- # --ALL TICKERS FÖR YAHOO FINANCE--
- #
- # Ericsson: ERIC
- # Electrolux: ELUX-B.ST
- # AstraZeneca: AZN
- # Volvo: VOLV-B.ST
- # --ALL TICKERS FÖR NORDENET--
- #
- # Ericsson: 100
- # Electrolux: 81
- # AstraZeneca: 3524
- # Volvo: 365
- #Globala variabler för att identifiera företagen på hemsidan
- ericsson = "772"
- electrolux = "2193"
- astraZeneca = "1295"
- volvo = "1146"
- #Menyn till programmet
- print("------------------------------Meny------------------------------")
- print("1. Fundamental analys (Vid lånsiktigt aktieinnehav)")
- print("2. Teknisk analys (Vid kort aktieinnehav)")
- print("3. Rangordning av aktier med avseende på dess betavärde")
- print("4. Avsluta")
- #Klass med variabler och metoder
- class Aktie:
- def __init__(self, namn, avkastning, beta):
- self.namn = namn
- self.avkastning = avkastning
- self.beta = beta
- def program():
- val = ""
- while val != "4":
- val = input("\nVilket alternativ vill du välja?: ")
- #Skapar objekt samt beräknar deras avkastning och beta samt adderar detta som egenskaper
- #Öppnar kurser för att kunna beräkna avkastningen
- tickersYahoo = ["ERIC", "ELUX-B.ST", "AZN", "VOLV-B.ST"]
- tickersAffarsVarden = [ericsson, electrolux, astraZeneca, volvo]
- stock_name_list = []
- for i in range(len(tickersAffarsVarden)):
- stock_name_list.append(get_stock_name(tickersAffarsVarden[i]))
- beta_list = []
- for i in range(len(tickersYahoo)):
- beta_list.append(get_stock_beta(tickersYahoo[i]))
- #Beräkning av aktiernas betavärde
- #Skapar objekt med namn och avkastning som egenskaper
- ericsson_stock = Aktie(stock_name_list[0], 12.2, beta_list[0])
- electrolux_stock = Aktie(stock_name_list[1], 1.2, beta_list[1])
- astra_stock = Aktie(stock_name_list[2], 32.1, beta_list[2])
- volvo_stock = Aktie(stock_name_list[3], 16.2, beta_list[3])
- #Skapar en lista och adderar objekten till listan
- aktieLista = []
- aktieLista.extend((ericsson_stock, electrolux_stock, astra_stock, volvo_stock))
- #Vid val av 1 - Fundamental Analys
- if val == "1":
- print("\nEn fundamental analys kan utföras på följande aktier: ")
- for i in range(len(stock_name_list)):
- print(i+1, stock_name_list[i])
- inmatning = input("\nVilken aktie vill du göra fundamental analys på?: ")
- if inmatning == "1":
- print("\n-------------Fundamental analys för Ericsson------------------")
- print("\nföretagets soliditet är " + get_stock_solidity(electrolux))
- print("företagets p/e-tal är " + get_stock_PE(ericsson))
- print("företagets p/s-tal är " + get_stock_PS(ericsson))
- elif inmatning == "2":
- print("\n-------------Fundamental analys för Electrolux----------------")
- print("\nföretagets soliditet är " + get_stock_solidity(electrolux))
- print("företagets p/e-tal är " + get_stock_PE(electrolux))
- print("företagets p/s-tal är " + get_stock_PS(electrolux))
- elif inmatning == "3":
- print("\n-------------Fundamental analys för AstraZeneca---------------")
- print("\nföretagets soliditet är " + get_stock_solidity(astraZeneca))
- print("företagets p/e-tal är " + get_stock_PE(astraZeneca))
- print("företagets p/s-tal är " + get_stock_PS(astraZeneca))
- elif inmatning == "4":
- print("\n-----------------Fundamental analys för Volvo------------------")
- print("\nföretagets soliditet är " + get_stock_solidity(volvo))
- print("företagets p/e-tal är " + get_stock_PE(volvo))
- print("företagets p/s-tal är " + get_stock_PS(volvo))
- else:
- print("Felaktigt val. Tillåtna val existerar endast inom intervallet 1-4. Var god försök igen.")
- #Vid val av 2 - Teknisk Analys
- elif val == "2":
- print("\nEn teknisk analys kan utföras på följande aktier: ")
- for i in range(len(stock_name_list)):
- print(i+1, stock_name_list[i])
- inmatning = input("\nVilken aktie vill du göra en teknisk analys på?: ")
- if inmatning == "1":
- print("\n----------------Teknisk analys för Ericsson----------------------")
- print("\nföretagets kursutveckling " + get_stock_develop("100"))
- print("betavärde " + str(beta_list[0]))
- print("lägsta kurs (30 senaste dagarna) " + get_stock_low("100"))
- print("högsta kurs (30 senaste dagarna) " + get_stock_high("100"))
- elif inmatning == "2":
- print("\n----------------Teknisk analys för Electrolux----------------------")
- print("\nföretagets kursutveckling " + get_stock_develop("81"))
- print("betavärde " + str(beta_list[1]))
- print("lägsta kurs (30 senaste dagarna) " + get_stock_low("81"))
- print("högsta kurs (30 senaste dagarna) " + get_stock_high("81"))
- elif inmatning == "3":
- print("\n----------------Teknisk analys för AstraZeneca----------------------")
- print("\nföretagets kursutveckling " + get_stock_develop("3524"))
- print("betavärde " + str(beta_list[2]))
- print("lägsta kurs (30 senaste dagarna) " + get_stock_low("3524"))
- print("högsta kurs (30 senaste dagarna) " + get_stock_high("3524"))
- elif inmatning == "4":
- print("\n-------------------Teknisk analys för Volvo-------------------------")
- print("\nföretagets kursutveckling " + get_stock_develop("365"))
- print("betavärde " + str(beta_list[3]))
- print("lägsta kurs (30 senaste dagarna) " + get_stock_low("365"))
- print("högsta kurs (30 senaste dagarna) " + get_stock_high("365"))
- else:
- print("Felaktigt val. Tillåtna val existerar endast inom intervallet 1-4. Var god försök igen.")
- #Vid val av 3 - Rangordning med avseende på betavärde
- elif val == "3":
- print("\n-------Rangordning av aktier med avseende på dess betavärde------\n")
- #Sorterar listan med aktierna med avseende på betavärde
- aktieLista.sort(key=lambda x: x.beta, reverse = True)
- #Printar rangordningen utifrån sorteringen ovan
- counter = 0
- for aktie in aktieLista:
- counter += 1
- print(int(counter), aktie.namn, str(aktie.beta)) #hur får man bort mellanslaget?
- #Vid val av 4 - Avsluta program
- elif val == "4":
- quit()
- else:
- print("Felaktigt val. Tillåtna val existerar endast inom intervallet 1-4. Var god försök igen.")
- #Funktionen som hämtar alla aktiekurser
- # --ALL TICKERS--
- #
- # Ericsson: 772
- # Electrolux: 2193
- # AstraZeneca: 1295
- # Volvo: https://www.affarsvarlden.se/bors/stock-details/1146/
- def get_stock_solidity(ticker):
- my_url = "https://www.affarsvarlden.se/bors/stock-details/%s"%(ticker)
- #Hämtar hemsidan
- uClient = uReq(my_url)
- page_html = uClient.read()
- uClient.close()
- page_soup = soup(page_html, "html.parser")
- finder = page_soup.find_all("span",{"class":"pull-right"})
- item_list = []
- for find in finder:
- item_list.append(find.text)
- #print(find.text)
- return item_list[3]
- #kursutveckling för en månad
- def get_stock_develop(ticker):
- my_url = "https://www.nordnet.se/mux/web/marknaden/aktiehemsidan/historik.html?identifier=%s&marketplace=11&inhibitTrade=1"%(ticker)
- #Hämtar hemsidan
- uClient = uReq(my_url)
- page_html = uClient.read()
- uClient.close()
- page_soup = soup(page_html, "html.parser")
- finder = page_soup.find_all("td")
- item_list = []
- for find in finder:
- item_list.append(find.text)
- return str(item_list[24])
- def get_stock_high(ticker):
- my_url = "https://www.nordnet.se/mux/web/marknaden/aktiehemsidan/historik.html?identifier=%s&marketplace=11&inhibitTrade=1"%(ticker)
- #Hämtar hemsidan
- uClient = uReq(my_url)
- page_html = uClient.read()
- uClient.close()
- page_soup = soup(page_html, "html.parser")
- finder = page_soup.find_all("td")
- item_list = []
- for find in finder:
- item_list.append(find.text)
- return str(item_list[25])
- def get_stock_low(ticker):
- my_url = "https://www.nordnet.se/mux/web/marknaden/aktiehemsidan/historik.html?identifier=%s&marketplace=11&inhibitTrade=1"%(ticker)
- #Hämtar hemsidan
- uClient = uReq(my_url)
- page_html = uClient.read()
- uClient.close()
- page_soup = soup(page_html, "html.parser")
- finder = page_soup.find_all("td")
- item_list = []
- for find in finder:
- item_list.append(find.text)
- return str(item_list[26])
- def get_stock_PE(ticker):
- my_url = "https://www.affarsvarlden.se/bors/stock-details/%s"%(ticker)
- #Hämtar hemsidan
- uClient = uReq(my_url)
- page_html = uClient.read()
- uClient.close()
- page_soup = soup(page_html, "html.parser")
- finder = page_soup.find_all("span",{"class":"pull-right"})
- item_list = []
- for find in finder:
- item_list.append(find.text)
- #print(find.text)
- return item_list[9]
- def get_stock_PS(ticker):
- my_url = "https://www.affarsvarlden.se/bors/stock-details/%s"%(ticker)
- #Hämtar hemsidan
- uClient = uReq(my_url)
- page_html = uClient.read()
- uClient.close()
- page_soup = soup(page_html, "html.parser")
- finder = page_soup.find_all("span",{"class":"pull-right"})
- item_list = []
- for find in finder:
- item_list.append(find.text)
- #print(find.text)
- return item_list[8]
- def get_stock_name(ticker):
- my_url = "https://www.affarsvarlden.se/bors/stock-details/%s"%(ticker)
- #Hämtar hemsidan
- uClient = uReq(my_url)
- page_html = uClient.read()
- uClient.close()
- page_soup = soup(page_html, "html.parser")
- return page_soup.h2.text
- def get_stock_beta(ticker):
- my_url = "http://finance.yahoo.com/quote/%s?p=%s"%(ticker,ticker)
- uClient = uReq(my_url)
- page_html = uClient.read()
- uClient.close()
- page_soup = soup(page_html, "html.parser")
- spans = page_soup.find_all("td",{"data-test":"BETA_3Y-value"})
- for span in spans:
- beta_value = span.text
- return float(beta_value)
- #Kör programmet
- program()
- #print(get_stock_develop("100"))
- #print(get_stock_develop(ericsson))
- #get_stock_beta("ERIC")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement