/tehran-stocks

A python package to access tsetmc data

Primary LanguageJupyter NotebookMIT LicenseMIT

Tehran Stock Market

made-with-python PyPI - Downloads PyPI version Code style: black

A python package that helps to access TSETMC stock price history, Using OOP Interface

Features

  • Download All stocks prices
  • Download prices from a group (i.e ETFs or cars, etc.)
  • Download Price history of one specific Stock
  • After first setup available offline.
  • CommandLine Interface
  • Export data to csv, excel or Stata(dta)
  • Compatible with sqlalchemy
  • Compatible with PANDAS
  • Based on light sqlite

0 - Install

pip install tehran_stocks

1- Initialization

For first use you need initialize the database

1-1 Command line

ts-get init  # Set up to sqlite database

1-2 Python

import tehran_stocks
# On first import package initialize itself

During initialization you will prompt for downloading all prices. if you answer yes it will download all prices, otherwise you can download data

2- Download and Update prices

2-1 Command line

ts-get update # update  all price , or download all if no price exist
ts-get  group 34 ## 34 is the code for car's group.
ts-get get_groups ## get group name and group codes

2-2 Python

from tehran_stocks import get_all_price, Stocks, update_group

get_all_price() # download and(or) update all prices

update_group(34) #download and(or) update Stocks in groupCode = 34 (Cars)

Stocks.get_group() # to see list of group codes

3- Access Data

To access data you can use Stocks which is an customized sqlalchemy object, which helps you to find prices on an easy way.

3-1 Search Stocks

from tehran_stocks import Stocks, db

# You can use query to find stocks
stock = Stocks.query.filter_by(name='كگل').first() #find by symbol(نماد)

stock = Stocks.query.filter_by(code='35700344742885862').first() # find by code on tsetmc url

stock = Stocks.query.filter(Stocks.title.like('%گل گهر%')).first() # Search by title

stock_list = Stocks.query.filter_by(group_code =34).all() # find all Stocks in Khodro

stock_list = Stocks.query.filter(Stocks.group_code.in_([13,34])).all() # all stocks in khodro and felezat


## (Advanced)or run sql query using orm or raw sql
db.session.query(Stocks.group_code, Stocks.group_name).group_by(Stocks.group_code).all()

db.session.execute('select group_code , group_name from stocks group by group_name').fetchall()

Now easily access stock price and do whatever you want with pandas dataframes:

# use data as a pandas dataframe
>>> stock.df #
      id               code        ticker  dtyyyymmdd    first     high      low    close        value      vol  openint per     open     last       date
0  22491  35700344742885862  Gol-E-Gohar.    20040829  12000.0  12021.0  12000.0  12000.0  18841605000  1570000     2708   D  12000.0  12000.0 2004-08-29

>>> stock.summary()
Start date: 20040829
End date: 20190714
Total days: 2987

>>> stock.update()
# update stock price history

# Export to your preferred format
>>> stock.df.to_csv('price.csv')
>>> stock.df.to_excel('price.xlsx')
>>> stock.df.to_stata('price.dta')

Todo

  • Create Database
  • Download Data
  • CommandLine Support
  • Jalali Support

Donation❤️

If you like this package you can buy me a cup of coffee ☕️.

You can pay using آپ Application by scanning following qrcode in the application or entering code 95656781:

NeshanPardakht

Or donate using IDPAY