This guide provides a high level introduction to the LUSID platform and aims to kick-start your learning through a roadmap of articles and tutorial based notebooks.
Let's start by giving a very brief introduction to the tools, libraries and applications in the LUSID platform :
- LUSID API: The core of the LUSID platform. The gateway for all requests to retrieve, update, and interrogate your data.
- Sample Notebooks: Showcase interacting with the LUSID API through the use of real world features and use cases.
- LUSID UI: A web based UI built on top of the LUSID API. Provides a feature rich set of dashboards that will complement the tutorials and notebooks by allowing you to visualise the data and impact of your actions.
- LUSID Excel Add-In: Allows LUSID users to interact with the API through a set of excel functions.
- SDKs: Allow developers to build applications that interact with the LUSID API.
- LUSID Python Tools: Sets of utility functions and command line interfaces in Python that simplify and speed up common interactions with the LUSID API.
This guide will delve a little deeper into each part of the LUSID platform a layer at a time. The goal is not to give you a complete and comprehensive breakdown of LUSID but to give you some direction in understanding the core use cases.
Each section will include a brief introduction followed by a set of links for suggested reading. Finally we'll recommend a series of notebooks for you to work through to give you an idea of how LUSID can be used on a daily basis.
LUSID is built on a powerful but lightweight data model with the extensibility to allow clients to expand that model to best meet the needs of their particular investment management functions.
That data model is exposed by the LUSID API allowing users to query and update their data via the API's endpoints. The API is the core of the platform that all other LUSID applications, tools and libraries communicate with.
LUSID API Docs : The LUSID API docs home page contains detailed information on all the endpoints of the API. Start by reading through the "Introduction" and "Data Model" to get an idea of the business entities and their functions that the API is modelling. The API section is a valuable reference guide when working through notebooks for understanding the purpose, expected inputs and outputs of API endpoints.
Business Entities : Depending on your background, the business entities in the "Data Model" may or may not be familiar. In either case the next step is to read through the introductory knowledge base articles on each of these entities. Even if you are familiar with the concepts, these articles are worth reading to gain an appreciation of how LUSID handles the entities :
- What is a Portfolio in LUSID?
- What is an Instrument?
- What is a Transaction?
- How are holdings generated by LUSID?
- What is a Quote?
- How are Corporate Actions Represented in LUSID?
LUSID Specific Concepts : While the above are LUSID's take on industry concepts there are a number of entities and functions specific to LUSID. Below are a few key articles to start with that will help prepare you for the suggested notebooks further in the article:
- LUSID's extensible data model?
- What is a "scope" in LUSID and how is it used?
- What is a movement in LUSID?
- What is bi-temporal data?
- What is a LUSID recipe and how is it used?
- What is aggregation in LUSID?
Notebooks contain live code and will tell a story that you can follow and interact with. They allow you to load in data to LUSID, update the data, retrieve the data or carry out any other call to the API.
The sample notebooks repository contains notebooks that are used to showcase the capabilities of the LUSID API through real world use cases and examples.
To get started, work your way through the following series of notebooks. Each will animate the concepts you read about above as well as introduce some new ones. They culminate with a final notebook that replicates a day in the life of an IBOR using LUSID.
Once you have your account setup you can access your own Jupyter Notebook environment via the LUSID UI that backs onto your own private data. The Python SDK and LUSID Python Tools are already installed with all the sample notebooks available.
Creating Holdings in LUSID : Will introduce you to portfolio creation, instrument loading, transaction type defining, transaction loading and holdings retrieval.
Setting up Sub-Holding Keys : Show you how you can bucket your holdings into user defined groups.
Generating IBOR Extracts : Delves further into retrieving holdings and identifying transactions responsible for the holdings.
Valuing a Portfolio : Introduces loading quotes, configuring your first recipe and using it to run a portfolio valuation.
Processing Corporate Actions (as transactions) : Show you how to book a corporate action through applying custom transaction types that you will define.
Processing Corporate Actions (as LUSID transitions) : You will apply the same corporate actions but this time using the native transitions.
A Day in the Life of an IBOR : Finally you'll put all the above together to work through a simulated day in life of an IBOR.
The LUSID UI is a web based platform that allows users to interact visually with the LUSID API. Through a series of dashboards and features the UI provides a range of functionalities across both the business and administrative domains .
Some of the key features of the UI include :
- Viewing and managing all LUSID entities (e.g. Instruments, Portfolios, Corporate Actions, Market Data, etc...).
- Performing reconciliations between views on the same portfolios.
- Running valuations on preconfigured recipes and reconciling between different valuation results.
- Viewing placed orders and their corresponding allocations back to portfolios on execution.
- Insights into the the API usage by your users with the ability to drill down into specific requests for troubleshooting.
- Viewing core system wide configurations such as Transaction Types.
- Manage access permissions for team members and external members such as fund clients.
On setting up your LUSID domain you should spend some time exploring the preloaded data via the UI which include examples of portfolios, instruments and FX rates.
For a detailed walkthrough the UI Tutorials are a great place to start. As well instructing you on getting started there are a number of articles to give you a feel for how the UI is used in practice.
LUSID Excel Add-In
The Excel Add-In provides a set of excel functions to interact with the LUSID API. As well as data retrieval and updates of the business entities Excel users are capable of triggering processes such as reconciliation.
LUSID Excel Add-In: Contains the installation files for download and the documentation of the available Excel functions.
Excel Add-In Tutorial: Guide to installing and getting started with the Excel Add-In.
Sample Excel Templates: Provides a variety of real-world examples of using the LUSID Excel Add-In.
The LUSID SDKs provide developers with the capability to build applications that interact with the LUSID API in their native language. As well as providing implementations based on the API the SDKs provide functions and helpers for increased developer efficiency. The SDKs languages currently supported are listed below and are available on GitHub:
Before getting started with any of the SDKs you'll need to setup a LUSID account as accessing the LUSID API is only available to authorised users. You can find out more on the Account Creation knowledge base section.
With your account created you can begin testing your SDK setup against your own LUSID domain. For more details on the specifics of each particular SDK, visit the GitHub projects linked above and take some time to read through their respective Wikis.
LUSID Python Tools
LUSID Python Tools (LPT) is a toolset built on top of the Python SDK. It's composed of a library of utility functions as well as a command line interface that aim to simplify as well as wrap common functionality around interactions with the LUSID API.
To give you a better understanding of the purpose of LPT let's introduce an example of one of these utilities. load_from_data_frame is a general-purpose function that manages data uploads for a variety of business entities via a Pandas DataFrame. This drastically reduces the amount of boilerplate when generating upsert requests. Additionally, you also get the added benefit of being able to use all Pandas has to offer such as sourcing and cleaning your data before entry into LUSID.LPT is made up of such helpful functions. The Sample Notebooks make frequent use of them precisely because they allow developers to produce concise and readable code. And if a function you would find valuable is missing you can always add it yourself as community contribution is encouraged.
- LUSID Python Tools: Source repository for LPT with installation instructions , information on getting started and helpful guidelines should you wish to contribute.
- LUSID Python Tools Wiki: Provides documentation and examples around LPT as well as a section describing the command line interface usage.