Python library to download historical data from finam.ru
Project description
finam-export
Python client library to download data from finam.ru
Capabilities
- Contracts lookup by market categories, id, code, name or their combinations using a rich set of mathching options
- Download data of any timeframe available on finam.ru ranging from ticks to monthly resolution
Samples provided
samples/listing.py
- simply lists some contracts from every supported marketsamples/download.py
- downloads some data and prints it outsamples/lookups.py
- shows how you can leverage lookup capabilities
Utility scripts
scripts/finam-download.py
- feature-rich standalone script to download finam's datascripts/finam-lookup.py
- to quickly check what's availble on finam
Show me something working!
Here's the output
./samples/download.py
*** Current Russian ruble exchange rates ***
... some debugging output omitted ...
<OPEN> <HIGH> <LOW> <CLOSE> <VOL>
index
2016-11-07 63.945 64.085 63.6625 63.695 1214085000
[1 rows x 5 columns]
*** Current Brent Oil price ***
INFO:root:Loading data from http://export.finam.ru/table.csv?sep=3&at=1&e=.csv&d=d&f=table&dtf=1&MSOR=0&tmf=3&mstimever=1&mstime=on&sep2=1&em=19473&code=BZ&cn=BZ&df=1&yf=2007&dt=7&datf=5&yt=2016&market=24&mf=0&mt=10&p=8
INFO:root:Decoding response
<OPEN> <HIGH> <LOW> <CLOSE> <VOL>
index
2016-11-07 45.95 46.38 45.8 46.01 52605
[1 rows x 5 columns]
and here's the code producing this output:
import logging
from finam.export import Exporter, Market, LookupComparator
"""
Full-on example displaying up-to-date values of some important indicators
"""
def main():
exporter = Exporter()
print('*** Current Russian ruble exchange rates ***')
rub = exporter.lookup(name='USDRUB_TOD', market=Market.CURRENCIES)
assert len(rub) == 1
data = exporter.download(rub.index[0], market=Market.CURRENCIES)
print(data.tail(1))
print('*** Current Brent Oil price ***')
oil = exporter.lookup(name='Brent', market=Market.COMMODITIES,
name_comparator=LookupComparator.EQUALS)
assert len(oil) == 1
data = exporter.download(oil.index[0], market=Market.COMMODITIES)
print(data.tail(1))
if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG)
main()
Playing samples
If you haven't installed it from PyPi:
pip install -r ./requirements.txt
./samples/listing.py
Once you have it installed just run
./samples/listing.py
Technical details
- Targeted to Linux/Mac
- Uses pandas inside, all data returned is pandas DataFrames
- Tested with python2.7 and python3.6+
- Good tests coverage
- Detailed logging of what's going on
Development
- clone the repo
pip install -r ./requirements.txt
- run tests to ensure all is fine
nosetests
- go ahead and enhance it!
- don't forget to cover your changes with tests
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
finam-export-1.0.1.tar.gz
(8.5 kB
view hashes)
Built Distribution
Close
Hashes for finam_export-1.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f3155eb936dfe7681f817f6fac8782fa2fcf454c3d66504ad070c64b76aff81 |
|
MD5 | 278ae86d67be0276ef9021f012912a73 |
|
BLAKE2b-256 | f36c15b67ce9e557ebe69de60292b7840fd653ad1240a1f3227206db0dfd7488 |