Data
Processors
Processors are objects that define interfaces on how to apply a timeseries function to a series in a DataGrid. These series can be from a DataCoordinate or from another processor which allows for nested processors. Each processor class defines how many series can be passed into the processor and any required or optional parameters for the timeseries functions. DataGrid supports many processors with the ability to seamlessly add more to GS Quant.
Supported Processors
We currently support many processors which are grouped by type. There are also API references for all our processors with detailed descriptions and usage.
Special Processors
Special processors are unlike our normal timeseries processors. They handle special use-cases such as getting data from an Entity or coordinate.
Processor | Description | API Reference |
---|---|---|
CoordinateProcessor | Returns data from a Coordinate. See example. | Link |
EntityProcessor | Returns data such as the name or an identifier of a entity in string format. | Link |
Econometric Processors
Econometrics processors are for standard economic and timeseries analytics operations and other numerical operations which are generally finance-oriented.
Processor | Description | API Reference |
---|---|---|
ChangeProcessor | Computes the difference of every value from the initial value of the input series. | Link |
CorrelationProcessor | Computes the rolling correlation of two series. | Link |
VolatilityProcessor | Computes the realized volatility of the input series. | Link |
SharpeRatioProcessor | Computes the Sharpe ratio of the the input series | Link |
Statistics Processors
Processor | Description | API Reference |
---|---|---|
PercentilesProcessor | Computes the rolling percentiles over given window. | Link |
Utility Processors
Utility processors are for generic operations on timeseries which may be useful for your analytics.
Processor | Description | API Reference |
---|---|---|
AppendProcessor | Appends two series together. | Link |
Examples
Coordinate Processor
Below is an example DataGrid with a CoordinateProcessor.
from gs_quant.analytics.datagrid import DataColumn, DataRow, DimensionsOverride, DataGrid
from gs_quant.analytics.processors import LastProcessor, EntityProcessor, CoordinateProcessor
from gs_quant.data import DataDimension
from gs_quant.data.coordinate import DataCoordinate, DataMeasure, DataFrequency
from gs_quant.markets.securities import AssetIdentifier, Asset
from gs_quant.session import GsSession
GsSession.use()
implied_volatility = DataCoordinate(
measure=DataMeasure.IMPLIED_VOLATILITY,
dimensions={
DataDimension.TENOR: "3m",
DataDimension.RELATIVE_STRIKE: 0.5,
DataDimension.STRIKE_REFERENCE: "delta"
},
frequency=DataFrequency.DAILY,
)
col_1 = DataColumn(name="Name", processor=EntityProcessor(field="name"))
col_2 = DataColumn(name="Tenor", processor=CoordinateProcessor(implied_volatility, dimension=DataDimension.TENOR))
col_3 = DataColumn(name="IV ATM", processor=LastProcessor(implied_volatility))
columns = [col_1, col_2, col_3]
SPX = Asset.get("SPX", AssetIdentifier.BLOOMBERG_ID)
rows = [
DataRow(SPX),
DataRow(SPX, overrides=[
DimensionsOverride(
column_names=[col_2.name, col_3.name],
dimensions={DataDimension.TENOR: "6m"},
coordinate=implied_volatility
)
]),
DataRow(SPX, overrides=[
DimensionsOverride(
column_names=[col_2.name, col_3.name],
dimensions={DataDimension.TENOR: "1y"},
coordinate=implied_volatility
)
])
]
datagrid = DataGrid(name="SPX Implied Vol by Tenor", rows=rows, columns=columns)
datagrid.initialize(), datagrid.poll()
print(datagrid.to_frame())
Output
Name Tenor IV ATM
0 S&P 500 Index 3m 0.252124
1 S&P 500 Index 6m 0.243322
2 S&P 500 Index 1y 0.231568
Contributing Processors
GS Quant is Open-Source, we encourage users to create and contribute new processors for any new analytics.
All processors must inherit from the BaseProcessor
which automatically handles serialization and creating the dependency graph for data fetching and other background logic. Users only need to create the
process
function that handles calculations and setting the procesor's value.
Note
For contributing processors, please send merge requests and reach out to: gs-marquee-markets@gs.com
Questions?
Please contact us at gs-marquee-markets@gs.com with any questions or feedback.
Related Content
DataCoordinates
arrow_forwardEntities
arrow_forwardWas this page useful?
Give feedback to help us improve developer.gs.com and serve you better.