Skip to content

bbcho/risktools-dev

Repository files navigation

risktools

Python implementation of the R package RTL.

See CRAN for original R version

https://cran.r-project.org/web/packages/RTL/index.html

Purpose

Purposely designed functions for trading, trading analytics and risk practitioners in Commodities and Finance.
Build to support delivery of Finance classes from one of the co-authors of RTL at the Alberta School of Business.

Version Notes

Note that the latest version will require compilation on Windows for python version 3.11 due to the 
dependency on arch. Arch does not come with binaries and must be compiled on Windows which can be
avoided by installing numba, however numba is not yet available for python 3.11.

Features

Historical forward curves charting.

Calendars and expiry dates data objects for a wide range of commodity futures contracts.

roll_adjust to adjust continuous contracts returns for roll adjustments using expiries above.

Morningstar Marketplace API functions getPrice(), getPrices() and getCurve() using your own Morningstar credentials. Current feeds included:
    ICE_EuroFutures
    ICE_EuroFutures_continuous
    CME_NymexFutures_EOD
    CME_NymexFutures_EOD_continuous
    CME_NymexOptions_EOD
    CME_CbotFuturesEOD
    CME_CbotFuturesEOD_continuous
    CME_Comex_FuturesSettlement_EOD
    CME_Comex_FuturesSettlement_EOD_continuous
    LME_AskBidPrices_Delayed
    SHFE_FuturesSettlement_RT
    CME_CmeFutures_EOD
    CME_CmeFutures_EOD_continuous
    CME_STLCPC_Futures
    CFTC_CommitmentsOfTradersCombined
    ICE_NybotCoffeeSugarCocoaFutures
    ICE_NybotCoffeeSugarCocoaFutures_continuous
    Morningstar_FX_Forwards
    ERCOT_LmpsByResourceNodeAndElectricalBus
    PJM_Rt_Hourly_Lmp
    AESO_ForecastAndActualPoolPrice
    LME_MonthlyDelayed_Derived
    … see ?getPrice for up to date selection and examples.

chart_zscore() supports seasonality adjusted analysis of residuals, particularly useful when dealing with commodity stocks and/or days demand time series with trends as well as non-constant variance across seasonal periods.

chart_eia_steo() and chart_eia_sd() return either a chart or dataframe of supply demand balances from the EIA.

chart_spreads() to generate specific contract spreads across years e.g. ULSD March/April. Requires Morningstar credentials.

swapInfo() returns all information required to price first line futures contract averaging swap or CMA physical trade, including a current month instrument with prior settlements.

Data Sets

Accessible via risktools.data.open_data(datsetname). Also use risktools.data.get_names() to get list of available data.

expiry_table: Historical and forward futures contract metadata.
holidaysOil: Holiday calendars for ICE and NYMEX.
tickers_eia: Mapping of EIA tickers to crude and refined products markets for building supply demand balances.
usSwapIRDef: Data frame of definitions for instruments to build a curve for use with RQuantlib. Use getIRswapCurve() to extract the latest data from FRED and Morningstar.
usSwapIR: Sample data set output of getIRswapCurve.
usSwapCurves: Sample data set output of RQuantlib::DiscountCurve().
cancrudeassays contains historical Canadian crude assays by batch from Crudemonitor. cancrudeassayssum is a summarised average assays version.
crudeassaysXOM for all publicly available complete assays in Excel format from ExxonMobil
crudeassaysBP for all publicly available complete assays in Excel format from BP
eiaStocks: Sample data set of EIA.gov stocks for key commodiities.
eiaStorageCap: EIA crude storage capacity by PADD.
dflong and dfwide contain continuous futures prices sample data sets for Nymex (CL, HO, RB and NG contracts) and ICE Brent.
crudepipelines and refineries contain GIS information in the North American crude space.
...

Usernames and password for API services are required.

Changelog

Version 0.2.0

New functions added:

  • get_curves
  • get_gis
  • get_ir_swap_curve
  • refineryLP
  • swap_fut_weight
  • swap_info
  • dist_desc_plot

New feeds for get_prices:

  • ERCOT_LmpsByResourceNodeAndElectricalBus
  • PJM_Rt_Hourly_Lmp
  • AESO_ForecastAndActualPoolPrice
  • LME_MonthlyDelayed_Derived
  • SHFE_FuturesSettlement_RT
  • CFTC_CommitmentsOfTradersCombined

New datasets for risktools.data.open_data function

  • Replicated/refreshed RTL datsets

removed geojson files and dependencies to geopandas - replaced with get_gis function removed support for Python 3.6. Supports >= 3.7

Companion package to https://github.com/bbcho/finoptions-dev