Data Downloader for Tehran stock market
Project description
Tehran Stock Market بورس تهران در پایتون
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❤️
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file tehran-stocks-1.0.1.tar.gz
.
File metadata
- Download URL: tehran-stocks-1.0.1.tar.gz
- Upload date:
- Size: 14.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.9.4 Darwin/21.3.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | afe72102b6b282aa566f4eb79701c3ba3ad2677f42c2aa3de642a0a80339b797 |
|
MD5 | 9680a0723c9eeb3420ae8cd9a428bf7b |
|
BLAKE2b-256 | 073845b80b7e83350ac70d6719c9fdfd978c112d43c5fb68091ae0a4cf82d0df |
File details
Details for the file tehran_stocks-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: tehran_stocks-1.0.1-py3-none-any.whl
- Upload date:
- Size: 14.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.9.4 Darwin/21.3.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c47e1b0bdbcb1bb7b47e686d7c27fef8948a4bdc756df03a0324762369e9831f |
|
MD5 | 4e39c1e6ab8ea20416542d535d8aa05b |
|
BLAKE2b-256 | 7902791b406cbaf91513fecceedd242620cb80ef16fbcb7e83697741734bc578 |