Pure python financial securities dataclasses
Project description
FinSec
Pure python financial securities dataclasses, as foundation for other projects
Install
## Install from pypi
pip install financial-security-classes
## or from the repo directly
git clone https://github.com/alienbrett/financial-security-classes
cd financial-security-classes
pip install -e .
Examples
First set up and import the library
import datetime
import finsec as fs
Create a currency
usd = fs.FiatCurrency(
ticker = 'USD',
nation = 'United States Dollar',
gsid = fs.GSID(20),
identifiers = [
fs.ISIN('abcdefg'),
],
)
Create an index, denominated in USD
spx = fs.DerivedIndex(
ticker = 'SPX',
issuer = 'Standard & Poor',
gsid = fs.GSID(100),
identifiers = [
fs.FIGI('12345'),
],
currency = usd,
)
Create a few stocks
hyg = fs.ETP(
ticker = 'HYG',
gsid = fs.GSID(124),
description = 'ISHARES IBOXX HIGH YLD CORP',
primary_exc = fs.Exchange.NYSE,
issuer = 'ishares',
)
tsla = fs.Stock(
## Ticker will be auto-capitalized
ticker = 'tSla',
gsid = fs.GSID(125),
description = 'Tesla corp',
primary_exc = fs.Exchange.NYSE,
)
Create a SPX future
esu22 = fs.NewFuture(
gsid = fs.GSID(120),
ticker = 'ESU22',
underlying_security = spx,
expiry_date = datetime.date(2022,9,16),
primary_exc = fs.Exchange.CME,
expiry_time_of_day = fs.ExpiryTimeOfDay.OPEN,
tick_size = 0.25,
multiplier = 50.0,
identifiers = [
fs.FIGI('234567'),
],
#### This should be implied, since underlyer doesn't permit physical delivery
# settlement_type = fs.SettlementType.CASH,
#### Without this argument, this should be set to UNKNOWN
# expiry_series_type = fs.ExpirySeriesType.MONTHLY,
)
Options
The package supports americans and europeans:
amer_call = fs.American(
gsid = fs.GSID(1_234_567),
underlying_security = tsla,
callput = 'call',
strike = 300.,
expiry_date = datetime.date(2022,12,16),
expiry_time_of_day = fs.ExpiryTimeOfDay.CLOSE,
primary_exc = fs.Exchange.CBOE,
multiplier = 100.0,
identifiers = [
fs.FIGI('blahblahblah123'),
],
settlement_type = fs.SettlementType.PHYSICAL,
# Without this argument, this set to fs.ExpirySeriesType.UNKNOWN
expiry_series_type = fs.ExpirySeriesType.MONTHLY,
)
And the european:
euro_put = fs.European(
gsid = fs.GSID(1_234_890),
underlying_security = spx,
callput = 'put',
strike = 3_500,
expiry_date = '2022-12-30', # string expiries like this also supported
expiry_time_of_day = fs.ExpiryTimeOfDay.CLOSE,
primary_exc = fs.Exchange.CBOE,
expiry_series_type = fs.ExpirySeriesType.QUARTERLY,
multiplier = 100.0,
# Isn't strictly necessary, since this will be inferred from index underlying without physical delivery available
settlement_type = fs.SettlementType.CASH,
)
Serialization support
Objects can be safely converted to json or dict format:
obj_json = fs.json_encode(euro_put)
obj_new = fs.json_decode(obj_json)
assert( obj_new == euro_put )
obj_dict = fs.dict_encode(euro_put)
obj_new = fs.dict_decode(obj_dict)
assert( obj_new == euro_put )
Run tests
To run tests:
$ python3.9 -m virtualenv venv
$ venv/bin/activate
$ make test
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
Close
Hashes for financial-security-classes-0.3.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9c6c753b87cfe992a3a642120a54dd1a59d370df3ab2a95c45476ec01b4c8db |
|
MD5 | 89ce3d39af188f78d62acbb61113f614 |
|
BLAKE2b-256 | 2099c33466472c31c90d3708125fefd3794ed33792e76cff01f67551360423f5 |
Close
Hashes for financial_security_classes-0.3.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3cb699322ba53116075ec64731e10ed709a28d6a74da5ee8d995f80971964438 |
|
MD5 | 722569c06bc8582958977846822c865d |
|
BLAKE2b-256 | b0853209a7c6dfc2ffdfe4f1980fc915736d7810790f7da1b0c1273f04d6f6a7 |