Code Monkey home page Code Monkey logo

nasdaqscraper's Introduction

Nasdaq Website Scraper

NASDAQ (National Association of Securities Dealers Automated Quotation) es el segundo mercado de valores y bolsa de valores automatizada y electrónica más grande de los Estados Unidos, siendo la primera la Bolsa de Nueva York, con más de 3800 compañías y corporaciones. Tiene más volumen de intercambio por hora que cualquier otra bolsa de valores en el mundo. Más de 7000 acciones de pequeña y mediana capitalización cotizan en la NASDAQ. Se caracteriza por comprender las empresas de alta tecnología en electrónica, informática, telecomunicaciones, biotecnología, y muchas otras más.

Resume Preview

Objetivo

Conocer los valores de acciones a tiempo real puede resultar crucial para decidir qué hacer con el capital invertido, por lo que la extracción automática del valor de la(s) empresa(s), sin necesidad de acudir al sitio web, así como la posterior manipulación para arrojar predicciones, son herramientas complementarias que pueden ayudar al inversor.

DISCLAIMER: Este trabajo se trata de una actividad académica para la asignatura de Tipología y Ciclo de Vida de los Datos, para el master de Ciencias de Datos de la UOC.

El conjunto de funciones presentadas en este repositorio, elaboradas con Python 3.10, tienen como objetivo dos puntos principales:

  • Obtener el listado actualizado de símbolos (identificador unívoco) de empresas.
  • A partir del símbolo o listado de símbolos, obtener distintos parámetros relevantes para determinar el estado de la empresa.

El listado de símbolos de empresas completo a 13 de marzo de 2022 se ha guardado en execution_results/symbols.txt.

Los detalles de cada empresa del listado que se desee ejecutar se guardan en un CSV con el timestamp de ejecución, dentro del mismo directorio execution_results/

Dependencias

Aunque se ha extraído un requirements.txt usando pip freeze, listando todas las dependencias instaladas en la máquina utilizada, las que realmente atañen al código son las siguientes:

PyYAML==5.3.1
selenium==4.1.0
pandas==1.0.5
logging==0.5.1.2

Obtención de CSV

La forma más sencilla de obtener un CSV, es ejecutando el scriptgenerate_dataset.py.

Cabe destacar que, para obtener de nuevo todos los símbolos de empresas, es necesario descomentar las líneas del código 3, 8 y 9 de generate_dataset.py, que se encargan de escrapear nuevamente la tabla que contiene todo el listado.

Todos esos símbolos se almacenan en symbols.txt, y es un proceso que toma unos 6 minutos.

Si en su lugar deseamos obtener los datos de tan sólo algunos símbolos, podemos generar un symbols.txt diferente, siguiendo la estructura del fichero con aquellas (una lista de strings guardada literalmente en el fichero):

['AAPL', 'APPN', 'DIS']

Para simplificar y optimizar el tiempo de ejecución, se ha dejado en el script la obtención de los 5 primeros símbolos de todo el listado completo, pues cada símbolo se escrapea en unos 3 segundos. En el directorio execution_results se muestran CSVs con un mayor número de entradas.

En ocasiones, algunas empresas no tenían los datos presentes, o estaban incompletos, probablemente porque se están actualizando en ese momento. Esto hace que el scrapper obtenga las líneas mal o salten excepciones, que se han tratado debidamente con sentencias try - except

Resume Preview

Los campos del CSV resultante son los siguientes:

  • symbol: El símbolo de la compañía.
  • name: El nombre completo.
  • price: Precio de cada acción en el momento de ejecución.
  • pricing_changes: Variación en dólares del precio en las últimas 24h.
  • pricing_percentage_changes: Variación en % del precio en las últimas 24h.
  • sector: Sector al que pertenece (Ejemplos: Technology, Consumer Services, Finance, ...)
  • industry: Industria del sector (Ejemplo: Computer Manufacturing)
  • market_cap: Capitalización total de la empresa, su valor total, en dólares.
  • share_volume: Volumen de acciones. Son la cantidad de acciones que se han negociado en las últimas 24 horas.
  • earnings_per_share: El beneficio por acción, lo que ha aportado en el periodo de un año.
  • annualized_dividend: Utiliza el último dividendo pagado multiplicado por la frecuencia. Es el importe de un dividendo pagado a los accionistas en cuatro trimestres.
  • dividend_pay_date: Fecha de pago de los últimos dividendos.
  • symbol_yield: El rendimiento de la acción es la apreciación del precio de la acción más los dividendos pagados, dividido por el precio original de la acción.
  • beta: La beta es una forma de medir la volatilidad de una acción en comparación con la volatilidad del mercado en general. El mercado en su conjunto tiene una beta de 1. Los valores con un valor superior a 1 son más volátiles que el mercado (lo que significa que generalmente subirán más de lo que sube el mercado y bajarán más de lo que baja el mercado)
  • errors: Si se han detectado errores durante el escrapeo de la empresa, este campo se pone a True. Significa que no tenemos garantías de que todos los campos hayan sido correctamente obtenidos (especialmente los key data). Los del banner de la cabecera sí se obtienen correctamente, por eso los mantenemos. Quizá resulta de interés para la persona que analice y explote los datos corregirlos revisándolos manualmente, o simplemente los filtra y elimina.

Licencia

Se optó por una Licencia Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) para compartir el código y datos obtenidos de la web oficial de Nasdaq.

Aunque puede leerse el desglose de condiciones en el fichero de Licencia adjunto en este repositorio, hay dos motivos principales que su elección:

  1. Se permite compartir, copiar y redistribuir el material en cualquier medio o formato.
  2. Se permite adaptar, remezclar, transformar y construir a partir del material para cualquier propósito, incluso comercial.

Bajo estas condiciones,

Atribución - Debe darse el crédito apropiado, proporcionar un enlace a la licencia e indicar si se hicieron cambios. Puede hacerse de cualquier manera razonable, pero no de ninguna forma que sugiera que el licenciante lo respalda.

ShareAlike - Si el material es remezclado, transformado, o se construye algo nuevo sobre éste, el material debe distribuirse bajo la misma licencia que el original.

Para más info, puede visitarse la web de Creative Commons

nasdaqscraper's People

Contributors

jadvani avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.