Skip to main content

Unofficial Easy Equities and Satrix Python Client

Project description

Easy Equities and Satrix Python Client

[!WARNING]
Not actively maintained anymore.

Unofficial Python client for Easy Equities and Satrix. Intended for personal use.

Supports Python 3.13+.

Pypi

Installation

pip install easy-equities-client

Features

Accounts:

  • Get accounts for a user: client.accounts.list()
  • Get account holdings: client.accounts.holdings(account.id)
  • Get account valuations: client.accounts.valuations(account.id)
  • Get account transactions: client.accounts.transactions(account.id)

Instruments:

  • Get the historical prices for an instrument: client.instruments.historical_prices('EQU.ZA.SYGJP', Period.ONE_MONTH)

Usage

from easy_equities_client.clients import EasyEquitiesClient # or SatrixClient

client = EasyEquitiesClient()
client.login(username='your username', password='your password')

# List accounts
accounts = client.accounts.list()
"""
[
    Account(id='12345', name='EasyEquities ZAR', trading_currency_id='2'),
    Account(id='12346', name='TFSA', trading_currency_id='3'),
    ...
]
"""

# Get account holdings
holdings = client.accounts.holdings(accounts[0].id)
"""
[
    {
        "name": "CoreShares Global DivTrax ETF",
        "contract_code": "EQU.ZA.GLODIV",
        "purchase_value": "R2 000.00",
        "current_value": "R3 000.00",
        "current_price": "R15.50",
        "img": "https://resources.easyequities.co.za/logos/EQU.ZA.GLODIV.png",
        "view_url": "/AccountOverview/GetInstrumentDetailAction/?IsinCode=ZAE000254249",
        "isin": "ZAE000254249"
    },
    ...
]
"""
# Optionally include number of shares for each holding (creates another API call for each holding)
holdings = client.accounts.holdings(accounts[0].id, include_shares=True)
"""
[
    {
        "name": "CoreShares Global DivTrax ETF",
        "contract_code": "EQU.ZA.GLODIV",
        "purchase_value": "R2 000.00",
        "current_value": "R3 000.00",
        "current_price": "R15.50",
        "img": "https://resources.easyequities.co.za/logos/EQU.ZA.GLODIV.png",
        "view_url": "/AccountOverview/GetInstrumentDetailAction/?IsinCode=ZAE000254249",
        "isin": "ZAE000254249",
        "shares": "200.123"
    },
    ...
]
"""

# Get account valuations
valuations = client.accounts.valuations(accounts[0].id)
"""
{
    "TopSummary": {
        "AccountValue": 300000.50,
        "AccountCurrency": "ZAR",
        "AccountNumber": "EE123456-111111",
        "AccountName": "EasyEquities ZAR",
        "PeriodMovements": [
            {
                "ValueMoveLabel": "Profit & Loss Value",
                "ValueMove": "R5 000.00",
                "PercentageMoveLabel": "Profit & Loss",
                "PercentageMove": "15.00%",
                "PeriodMoveHeader": "Movement on Current Holdings:"
            }
        ]
    },
    "NetInterestOnCashItems": [
        {
            "Label": "Total Interest on Free Cash",
            "Value": "R10.55"
        },
        ...
    ],
    "AccrualSummaryItems": [
        {
            "Label": "Net Accrual",
            "Value": "R2.00"
        },
        ...
    ],
    ...
}
"""

# Get account transactions
transactions = client.accounts.transactions(accounts[0].id)
"""
[
    {
        "TransactionId": 0,
        "DebitCredit": 200.00,
        "Comment": "Account Balance Carried Forward",
        "TransactionDate": "2020-07-21T01:00:00",
        "LogId": 123456789,
        "ActionId": 0,
        "Action": "Account Balance Carried Forward",
        "ContractCode": ""
    },
        {
        "TransactionId": 0,
        "DebitCredit": 50.00,
        "Comment": "CoreShares Global DivTrax ETF-Foreign Dividends @15.00",
        "TransactionDate": "2020-11-19T14:30:00",
        "LogId": 123456790,
        "ActionId": 122,
        "Action": "Foreign Dividend",
        "ContractCode": "EQU.ZA.GLODIV"
    },
    ...
]
"""

# Get historical data for an equity/instrument
from easy_equities_client.instruments.types import Period
historical_prices = client.instruments.historical_prices('EQU.ZA.SYGJP', Period.ONE_MONTH)
"""
{
    "chartData": {
        "Dataset": [
            41.97,
            42.37,
            ...
        ],
        "Labels": [
            "25 Jun 21",
            "28 Jun 21",
            ...
        ],
        "TradingCurrencySymbol": "R",
        ...
    }
}
"""

Example Use Cases

Show holdings total profits/losses

Run a script to show your holdings and their total profits/losses, e.g.
show_holdings_profit_loss.py.

show_holdings_profit_loss.py example output

Contributing

See Contributing

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

easy_equities_client-1.2.0.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

easy_equities_client-1.2.0-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file easy_equities_client-1.2.0.tar.gz.

File metadata

File hashes

Hashes for easy_equities_client-1.2.0.tar.gz
Algorithm Hash digest
SHA256 a5a66fefccd617c2a602a261bbde8bacedaf0e5b0cf28f2adb748e54257b7e8c
MD5 ec296c6b9f7d66f5ceaa6a452b4a637d
BLAKE2b-256 34f315c6a7266b8429425488bc18fad58dfd0b2a40ab8f0fb62363fb03d2cdf6

See more details on using hashes here.

File details

Details for the file easy_equities_client-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for easy_equities_client-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2564f2fec084e8ce3ef8e181d10e7f3c8172d99e993a2433a9c736ac5c603cb4
MD5 00b2eef042482bb0d36738f1b8e25b6b
BLAKE2b-256 41f78072739f52649b0242b1e0e07f9efaada33c87cbf50cdfac0d3011c2c6d1

See more details on using hashes here.

Supported by

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