Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.79 KB | None | 0 0
  1. import pandas as pd
  2. import numpy as np
  3.  
  4. import matplotlib.pyplot as plt
  5. import matplotlib.ticker
  6. %matplotlib inline
  7.  
  8. import requests
  9. from bs4 import BeautifulSoup
  10.  
  11. #By Rami Nasser
  12.  
  13. def get_13f(symbol, firm_name, xml_file = 'form13fInfoTable.xml'):
  14.    
  15.     base_url = 'https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=' + symbol +'&type=13F-HR&output=xml'
  16.     r = requests.get(base_url)
  17.     soup = BeautifulSoup(r.text, 'lxml')
  18.  
  19.     for link in soup.find_all('filinghref'):
  20.         url = link.string
  21.         if link.string.split(".")[len(link.string.split("."))-1] == "htm":
  22.             url += "l"
  23.         break
  24.  
  25.     base_url = url[:url.rfind('/')]+'/'+xml_file
  26.     r = requests.get(base_url)
  27.    
  28.     print(base_url)
  29.    
  30.     soup = BeautifulSoup(r.text, 'xml')
  31.     cusip = soup.find_all('cusip')
  32.  
  33.     if len(cusip) > 1:
  34.         value = soup.find_all('value')
  35.         sshPrnamt = soup.find_all('sshPrnamt')
  36.  
  37.     myList = []
  38.  
  39.     for i in range(0, len(cusip)):
  40.         myList = myList + [[cusip[i].string, int(value[i].string), int(sshPrnamt[i].string)]]
  41.  
  42.     df = pd.DataFrame(myList, columns=['cusip', 'value', 'sshPrnamt'])
  43.  
  44.     return df
  45.  
  46. df = pd.DataFrame()
  47.  
  48. df = df.append(get_13f('0000093751', 'State Street', 'copyofcopyof13fworkbook.xml'))
  49. df = df.append(get_13f('0000102909', 'Vanguard'))
  50. df = df.append(get_13f('0001364742', 'BlackRock'))
  51.  
  52. df_g = df.groupby(['cusip']).sum()
  53. df_g['cusip'] = df_g.index
  54. df_g = df_g[df_g['value'] > 1000000]
  55.  
  56. df2 = pd.read_csv('_data/cusip_nums.csv')
  57. df2 = df2.drop(['FundTicker', 'Shares', 'Weight', 'Date', 'MarketValue'], axis=1)
  58. df2 = df2.rename(columns={'SecurityNum': 'cusip'})
  59. df2 = df2.rename(columns={'HoldingsTicker': 'Symbol'})
  60. df2['Symbol'] = df2['Symbol'].str.strip()
  61.  
  62. df3 = df_g.merge(df2, on= 'cusip')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement