fima
fima یک کتابخانه پایتون برای دریافت، ساختاردهی و تحلیل دادههای بازارهای مالی ایران است. این پروژه در حال توسعه است و دادهها را از سرویسهای آنلاین عمومی دریافت میکند؛ بنابراین تغییر یا قطعی منبع داده میتواند بر خروجی توابع اثر بگذارد.
نیازمندیها
- Python 3.10 یا جدیدتر
- دسترسی اینترنت برای توابعی که داده زنده یا تاریخی دریافت میکنند
نصب
py -m pip install fima
بهروزرسانی به آخرین نسخه:
py -m pip install --upgrade fima
نمایش نسخه نصبشده:
py -c "from importlib.metadata import version; print(version('fima'))"
ماژولهای عمومی
نسخه عمومی بسته شامل این ماژولها است:
fima.Options: دادهها و محاسبات اختیار معاملهfima.IFB: دادههای فرابورس ایران و ابزارهای تأمین مالیfima.IME: دادههای بورس کالای ایرانfima.TSETMC: دادههای نمادها، شاخصها، معاملات و سهامدارانfima.TSEInstitutions: فهرست نهادهای مالیfima.Funds: اطلاعات صندوقهای سرمایهگذاری، NAV روزانه و ترکیب روزانه داراییها
برای جلوگیری از واردشدن نامهای کمکی، از import صریح استفاده کنید و از import * استفاده نکنید.
نمونه استفاده
اختیار معامله
from fima.Options import download_chain_contracts, ticker_info
option_info = ticker_info(ticker="ضهرم4018")
chain = download_chain_contracts(
underlying_ticker="اهرم",
j_date=True,
bsm=False,
greeks=False,
implied_volatility=False,
)
دریافت سابقه نماد اختیار و دارایی پایه:
from fima.Options import download_historical_data
option_history, underlying_history = download_historical_data(
ticker="ضهرم4018",
start_date="1404-01-01",
end_date="1404-01-31",
)
محاسبات مستقل بلک–شولز–مرتون و Greeks:
from fima.Options import (
calculate_black_scholes_merton,
calculate_delta,
calculate_gamma,
calculate_rho,
calculate_theta,
calculate_vega,
)
price = calculate_black_scholes_merton(
s=550,
k=28000,
t=71 / 365,
sigma=0.9588,
r_f=0.3372,
option_type="Call",
)
فرابورس ایران
from fima.IFB import get_all_bonds_without_coupons, get_risk_free_rate
risk_free_rate = get_risk_free_rate()
bonds = get_all_bonds_without_coupons(deprecated=False)
بورس کالای ایران
from fima.IME import get_all_ime_physical_trades
physical_trades = get_all_ime_physical_trades(
start_date="1403-01-01",
end_date="1403-12-29",
)
TSETMC
from fima.TSETMC import get_ticker_historical_data, get_tickers
tickers = get_tickers(tse=True, ifb=True, details=False)
history = get_ticker_historical_data(ticker="فملی")
نهادهای مالی
from fima.TSEInstitutions import get_all_institutions
institutions = get_all_institutions()
صندوقهای سرمایهگذاری
from fima import get_all_funds, get_daily_navs, get_daily_asset_allocation
all_funds = get_all_funds()
navs = get_daily_navs("نام صندوق")
asset_allocation = get_daily_asset_allocation("نام صندوق")
توابع این ماژول به منابع آنلاین اطلاعات صندوقها وابسته هستند. نام صندوق باید با نام موجود در خروجی get_all_funds() مطابقت داشته باشد. درخواست نامعتبر یا درخواست دادهای که برای صندوق در دسترس نیست میتواند ValueError ایجاد کند و ارائهدهندهای که هنوز پشتیبانی نمیشود میتواند NotImplementedError ایجاد کند.
خطای اتصال، پایان مهلت درخواست، گواهی نامعتبر HTTPS یا خطای HTTP با یکی از زیرکلاسهای requests.RequestException گزارش میشود. پاسخ خالی یا نامعتبر منبع داده میتواند ValueError ایجاد کند؛ این خطاها به خروجی خالی تبدیل نمیشوند. گواهی HTTPS بررسی میشود و تغییر وبسایت صندوق یا مشکل گواهی آن ممکن است دریافت داده را متوقف کند.
ارائهدهندگان قابل تشخیص شامل تدبیر پرداز، رایان همافزا، مبنا، پیکاد، راهکار، نیکا و نوآوران هستند؛ ترکیب داراییهای نیکا هنوز پشتیبانی نمیشود. پشتیبانی از یک ارائهدهنده به معنای در دسترس بودن همه وبسایتهای آن نیست. خروجی get_all_funds() شامل صندوقهای بازارگردانی نیز میشود. در صورت وجود چند نشانی، نخستین نشانی موجود انتخاب میشود و WebsiteAddress فقط نام میزبان را نگه میدارد.
دادههای نمودار تدبیر پرداز بر اساس تاریخ به هم متصل میشوند و فقط تاریخهای مشترک سریهای موردنیاز برگردانده میشوند. تاریخ یا سری تکراری و تکرار صفحه گزارش ترکیب داراییها با ValueError گزارش میشود.
تاریخچه NAV مبنا تا زمان فعلی درخواست میشود و به تاریخ ثابت گذشته محدود نیست؛ دادههای موجود همچنان به پاسخ ارائهدهنده وابستهاند.
ترکیب روزانه داراییهای رایان همافزا از هر دو قالب جدید و قدیمی پشتیبانی میکند. اگر مسیر جدید موجود نباشد یا قالب پاسخ آن متفاوت باشد، مسیر قدیمی بررسی میشود؛ خطای شبکه یا محدودیت نرخ درخواست پنهان نمیشود.
API عمومی
fima.Options
ticker_infodownload_historical_datadownload_chain_contractsdownload_market_watchdownload_all_underlying_assetsblack_scholes_mertonget_greeksget_implied_volatilitycalculate_black_scholes_mertoncalculate_deltacalculate_gammacalculate_thetacalculate_vegacalculate_rho
fima.IFB
get_risk_free_rateget_all_bonds_without_couponsget_all_bonds_with_couponsget_ifb_equally_weighted_total_index_historical_dataget_ifb_equally_weighted_price_index_historical_dataget_ifb_price_index_historical_dataget_ifb_total_index_historical_dataget_ifb_total_sukuk_index_historical_dataget_sukuk_daily_trades_based_on_bsget_sukuk_daily_trades_based_on_ctget_all_crowdfunding_plansget_all_crowdfunding_platformsget_all_standard_financing_instrumentsget_all_special_financing_instrumentsget_ticker_info
fima.IME
get_all_ime_physical_tradesget_all_ime_futures_tradesget_all_ime_option_tradesget_all_physical_producer_productsget_producer_physical_tradesget_all_ime_export_tradesget_all_ime_cd_tradesget_all_export_producer_productsget_producer_export_tradesget_all_ime_salaf_tradesget_gold_and_silver_cd_trades
fima.TSETMC
get_share_changesget_price_adjustmentsget_supervision_listsget_ticker_historical_shareholdersget_ticker_historical_trades_client_typeget_ticker_historical_market_capsget_ticker_historical_dataget_ticker_intraday_tradesget_indexes_statusget_index_historical_dataget_index_last_intraday_dataget_index_companiesget_tickers
fima.TSEInstitutions
get_all_institutions
fima.Funds
get_all_fundsget_daily_navsget_daily_asset_allocation
پارامترهایی که با _ شروع میشوند برای کنترل داخلی و آزمون هستند و بخشی از API پایدار عمومی محسوب نمیشوند.
توسعه و آزمون
py -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install --editable ".[test]"
python -m pytest -m "not integration"
python -m pytest
دستور اول آزمونهای قطعی و بدون شبکه را اجرا میکند. دستور دوم کل مجموعه، شامل آزمونهای اتصال به منابع زنده، را اجرا میکند.
بخش قابلتوجهی از آزمونها به سرویسهای آنلاین متصل میشوند. تمام آزمونهای قطعی و بدون شبکه شرط انتشار هستند. آزمونهای زنده جداگانه اجرا میشوند و خطای شبکه یا تغییر API منبع داده باید از خطای منطقی کتابخانه تفکیک، بررسی و پیش از انتشار گزارش شود.
پیوندها
مجوز
این پروژه تحت مجوز MIT منتشر میشود. متن کامل در فایل LICENSE قرار دارد.
تماس
Metadata
Release files for fima 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fima-0.5.0.tar.gz | 49.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fima-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 95.7 kB
Release files / fima-0.5.0.tar.gz
| Download URL | fima-0.5.0.tar.gz |
|---|---|
| Size | 49.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a1c0de2656c1cc46505beb721ea0f12dcd0b0b0f9c1a40a9bfe33346c5989b71
|
|
BLAKE2b-256 checksum How to use checksums |
e4408a44e35c9a0bf1eafed02905b518a3752011dfa60f162b14f595d52c8e18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / fima-0.5.0-py3-none-any.whl
| Download URL | fima-0.5.0-py3-none-any.whl |
|---|---|
| Size | 46.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f22b53a7278e2c1f9ee83bc44245576e50c2e1f61f2a6aab39b3fa599b1b9ed7
|
|
BLAKE2b-256 checksum How to use checksums |
087bd42ebcd23b62b92a6fe9a3b165b53e65f73b6a549d2468d16e12b7b46922
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency log