Skip to main content

Data Downloader for Tehran stock market

Project description

Tehran Stock Market بورس تهران در پایتون

made-with-python PyPI - Downloads PyPI - Downloads PyPI version Code style: black PyPI - Python Version HitCount Open In Colab

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

Table of Contents

Usage

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: 2004/08/29
End date: 2019/07/14
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')

3-2 Get Instant price and more details:

>>> stock.get_instant_detail()
{'time': '12:29:57',
 'last_price': '12950',
 'last_close': '13060',
 'last_high': '13300',
 'last_low': '13130',
 'last_open': '13330',
 'trade_count': '12760',
 'trade_volume': '1140',
 'trade_value': '4671236',
 'market_cap': '60715047900',
 'date_string': '20220404',
 'time_string': '122957'}

# get change in share count
>>> stock.get_shares_history()

date	new_shares	old_shares	gdate
0	1400-12-08 00:00:00	200.000 B	100.000 B	2022-02-27
1	1400-04-20 00:00:00	100.000 B	74.400 B	2021-07-11

# get change in price ~ dividend, split, etc.
>> stock.get_dividend()
date	after	before	dividend	gdate
0	1400-04-16 00:00:00	18770	20070	1300	2021-07-07
1	1399-04-18 00:00:00	16350	17250	900	2020-07-08
)

4- Custom Database

You can change the default database by updating the config file on:

~/.tse/config.yml #unix MacOS/Linux
C:\Users\User\{USERNAME}\.tse\config.yml #Windows

Custom Config for postgresql (you may need to install pyscopg2):

database:
  database: stocks
  engine: postgresql
  host: localhost
  password: password
  port: 5432
  user: postgres

Todo

  • Create Database
  • Download Data
  • CommandLine Support
  • Jalali Support
  • Instant Data
  • Custom database

Support❤️

  • If you like this package you can buy me a cup of coffee ☕️.
  • Subscribe and share my youtube channel Youtube

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tehran-stocks-1.0.8.tar.gz (24.7 kB view details)

Uploaded Source

Built Distribution

tehran_stocks-1.0.8-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file tehran-stocks-1.0.8.tar.gz.

File metadata

  • Download URL: tehran-stocks-1.0.8.tar.gz
  • Upload date:
  • Size: 24.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.4 Darwin/21.5.0

File hashes

Hashes for tehran-stocks-1.0.8.tar.gz
Algorithm Hash digest
SHA256 d44b77922ab63f7a5935dcddad8f0af2b30f5d586dbf108df6fa06f370df4e2c
MD5 808c5644aaf68ce5f4bbfb1ec6f446fa
BLAKE2b-256 98fcb80ff054dc203adffa332ead83785325b78c04acaeac2daee03bf6d8d1ad

See more details on using hashes here.

File details

Details for the file tehran_stocks-1.0.8-py3-none-any.whl.

File metadata

  • Download URL: tehran_stocks-1.0.8-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.4 Darwin/21.5.0

File hashes

Hashes for tehran_stocks-1.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 0174338a606dd318395f90f3326e5ef88cf36135ef4218370c2bfd1fbbf4daa0
MD5 06b1daebfc0c86d79003510cea5beaaf
BLAKE2b-256 1325ade43f51ae6d0b04fa02c3193048fb377d8383335fc338df6e9b1986b978

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page