SigTech Finance

SigTech Finance · GPT アクション

SigTech Framework API

APIs interacting with the SigTech Framework

  • GET /sessionsList previous sessions

    Retrieve session details created in the last 24 hours using the Sessions API. The paginated list includes session ID, timestamp, and description. Monitor sessions or find specific ones.

  • POST /sessionsCreate a new session

    Start a new session to get a sessionId. Do not enter a description. Only one session is required. The Sessions API will return the unique sessionID for interactions with Instruments, Strategies, Objects, and Data APIs.

  • GET /sessions/{sessionId}Load a previous session

    Retrieve the session linked to sessionID, keeping all instrument and strategy objectIDs. Access List created objects for available objectIds in the session.

  • GET /sessions/{sessionId}/objectsList created objects

    Display all session objects. The Objects API provides metadata, including creation timestamp.

  • POST /dataframesLoad a dataframe

    This endpoint generates an objectID for a dataframe using an identifier.There are various identifier associated with macro data.

  • POST /strategies/basketBasket strategy

    Create a basket of instruments or strategies using their objectIds, define relative weights, and a rebalancing schedule. A successful call generates an objectId

  • POST /strategies/futures/rollingRolling futures strategy

    Create a futures strategy that closes expiring contracts while opening new positions in contracts with later expirations, maintaining asset exposure. Once successful, get the objectId and check its status using the object status endpoint.

  • POST /strategies/signalSignal strategy

    Create a trading strategy using changing weight given by a signals. A successful call generates an objectId. Check objectId status as SUCCEEDED before making more calls.

  • GET /plugin/queryFind relevant APIs, identifiers and useful information. This should be called first for every request.

    Question Sigtech. Call first (in 'PLAN' mode) for every user question, with the detailed query. Call /query (in 'HELP' mode) if any errors occur or object runs fail. Call /query (in 'REQUEST' mode) for any missing functionality or user feedback.

  • GET /plugin/resultsRetrieves the results of a report.

    Outputs the performance summary of your strategy in JSON format.

  • POST /plugin/dataframes/customCreate dataframe from lists

    This endpoint generates an objectID for a dataframe using data provided as lists.

  • POST /plugin/reportrun report

    Create a report containing plots and calculations on the objectIds.A successful call generates an objectId. Results need to be retrieved from the new objectId. Currently there are 'timeseries' and 'performance' report types.

  • POST /plugin/subroutinerun subroutine

    Call a subroutine. A successful call generates an objectId. This should only be used with identifiers returned by '/query', where the signature is known.

  • GET /plugin/objectsRead object status for multiple objects

    Check the status of a created instrument or strategy for multiple objects: REQUESTED - build requested. RUNNING - currently building. SUCCEEDED - build finished successfully. FAILED - unable to build. objectId must be SUCCEEDED for further API calls.

  • POST /plugin/instrumentsCreate instruments

    This endpoint generates an objectID for individual futures(like ESZ22 INDEX), cash, FX spot, equity index or ETF instruments. Stocks should use the ''stocks'' endpoint. The objectId must have a SUCCEEDED status before using it for further calls. Check the status using the object status endpoint.

  • POST /plugin/instruments/stockCreate single stock instruments

    This endpoint generates objectIds for a single stock instrument. For ETFs the /plugin/instruments endpoint should be used instead.

元の API スキーマ
{
  "openapi": "3.1.0",
  "info": {
    "title": "SigTech Framework API",
    "description": "APIs interacting with the SigTech Framework",
    "version": "0.7.35"
  },
  "servers": [
    {
      "url": "https://api.sigtech.com"
    }
  ],
  "paths": {
    "/sessions": {
      "get": {
        "tags": [
          "Sessions"
        ],
        "summary": "List previous sessions",
        "description": "Retrieve session details created in the last 24 hours using the Sessions API. The paginated list includes session ID, timestamp, and description. Monitor sessions or find specific ones.",
        "operationId": "listSessions",
        "parameters": [
          {
            "description": "The maximum number of `sessionIds` displayed per page of results.",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 50,
              "minimum": 1,
              "title": "Pagesize",
              "description": "The maximum number of `sessionIds` displayed per page of results.",
              "default": 10
            },
            "example": "10",
            "name": "pageSize",
            "in": "query"
          },
          {
            "description": "The `pageID` of the page of results you want to see.",
            "required": false,
            "schema": {
              "type": "string",
              "title": "Pageid",
              "description": "The `pageID` of the page of results you want to see."
            },
            "name": "pageId",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "post": {
        "tags": [
          "Sessions"
        ],
        "summary": "Create a new session",
        "description": "Start a new session to get a sessionId. Do not enter a description. Only one session is required. The Sessions API will return the unique sessionID for interactions with Instruments, Strategies, Objects, and Data APIs.",
        "operationId": "createSession",
        "x-openai-isConsequential": false,
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSessionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/sessions/{sessionId}": {
      "get": {
        "tags": [
          "Sessions"
        ],
        "summary": "Load a previous session",
        "description": "Retrieve the session linked to sessionID, keeping all instrument and strategy objectIDs. Access List created objects for available objectIds in the session.",
        "operationId": "getSession",
        "parameters": [
          {
            "description": "The `sessionID` of the previous session to be reloaded.",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Sessionid",
              "description": "The `sessionID` of the previous session to be reloaded."
            },
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00",
            "name": "sessionId",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/sessions/{sessionId}/objects": {
      "get": {
        "tags": [
          "Objects"
        ],
        "summary": "List created objects",
        "description": "Display all session objects. The Objects API provides metadata, including creation timestamp. ",
        "operationId": "listObjects",
        "parameters": [
          {
            "description": "The current session's `sessionId`.",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Sessionid",
              "description": "The current session's `sessionId`."
            },
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00",
            "name": "sessionId",
            "in": "path"
          },
          {
            "description": "The maximum number of objects displayed per page of results.",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 50,
              "minimum": 1,
              "title": "Pagesize",
              "description": "The maximum number of objects displayed per page of results."
            },
            "example": "10",
            "name": "pageSize",
            "in": "query"
          },
          {
            "description": "The `pageID` of the page of results you want to see.",
            "required": false,
            "schema": {
              "type": "string",
              "title": "Pageid",
              "description": "The `pageID` of the page of results you want to see."
            },
            "example": "",
            "name": "pageId",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/dataframes": {
      "post": {
        "tags": [
          "Dataframes"
        ],
        "summary": "Load a dataframe",
        "description": "This endpoint generates an objectID for a dataframe using an identifier.There are various identifier associated with macro data.",
        "operationId": "loadDataframe",
        "x-openai-isConsequential": false,
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DataFrameRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/strategies/basket": {
      "post": {
        "tags": [
          "Strategies"
        ],
        "summary": "Basket strategy",
        "description": "Create a basket of instruments or strategies using their objectIds, define relative weights, and a rebalancing schedule. A successful call generates an objectId",
        "operationId": "createBasketStrategy",
        "x-openai-isConsequential": false,
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BasketStrategyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/strategies/futures/rolling": {
      "post": {
        "tags": [
          "Strategies"
        ],
        "summary": "Rolling futures strategy",
        "description": "Create a futures strategy that closes expiring contracts while opening new positions in contracts with later expirations, maintaining asset exposure. Once successful, get the objectId and check its status using the object status endpoint.",
        "operationId": "createRollingFuturesStrategy",
        "x-openai-isConsequential": false,
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RollingFuturesStrategyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/strategies/signal": {
      "post": {
        "tags": [
          "Strategies"
        ],
        "summary": "Signal strategy",
        "description": "Create a trading strategy using changing weight given by a signals. A successful call generates an objectId. Check objectId status as SUCCEEDED before making more calls.",
        "operationId": "createSignalStrategy",
        "x-openai-isConsequential": false,
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignalStrategyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/plugin/query": {
      "get": {
        "tags": [
          "Plugin objects"
        ],
        "summary": "Find relevant APIs, identifiers and useful information. This should be called first for every request.",
        "description": "Question Sigtech. Call first (in 'PLAN' mode) for every user question, with the detailed query. Call /query (in 'HELP' mode) if any errors occur or object runs fail. Call /query (in 'REQUEST' mode) for any missing functionality or user feedback.",
        "operationId": "pluginQuery",
        "parameters": [
          {
            "description": "Detailed query, error or missing feature.",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Details",
              "description": "Detailed query, error or missing feature."
            },
            "name": "details",
            "in": "query"
          },
          {
            "description": "List of relevant financial market data and instruments. Examples are 'gold', 'apple stock', 's&p 500' etc.",
            "required": false,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array",
              "title": "Instruments",
              "description": "List of relevant financial market data and instruments. Examples are 'gold', 'apple stock', 's&p 500' etc."
            },
            "name": "instruments",
            "in": "query"
          },
          {
            "description": "Query mode. Examples are 'PLAN', 'HELP', 'REQUEST'",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "PLAN",
                "HELP",
                "REQUEST"
              ],
              "title": "Mode",
              "description": "Query mode. Examples are 'PLAN', 'HELP', 'REQUEST'",
              "default": "PLAN"
            },
            "name": "mode",
            "in": "query"
          },
          {
            "description": "The current session's `sessionID`.",
            "required": false,
            "schema": {
              "type": "string",
              "title": "Sessionid",
              "description": "The current session's `sessionID`."
            },
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00",
            "name": "sessionId",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/plugin/results": {
      "get": {
        "tags": [
          "Plugin objects"
        ],
        "summary": "Retrieves the results of a report.",
        "description": "Outputs the performance summary of your strategy in JSON format.",
        "operationId": "pluginGetResults",
        "x-openai-isConsequential": false,
        "parameters": [
          {
            "description": "The current session's `sessionID`.",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Sessionid",
              "description": "The current session's `sessionID`."
            },
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00",
            "name": "sessionId",
            "in": "query"
          },
          {
            "description": "The `objectID` of the report.",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Objectid",
              "description": "The `objectID` of the report."
            },
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00",
            "name": "objectId",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/plugin/dataframes/custom": {
      "post": {
        "tags": [
          "Plugin objects"
        ],
        "summary": "Create dataframe from lists",
        "description": "This endpoint generates an objectID for a dataframe using data provided as lists.",
        "operationId": "createDataframe",
        "x-openai-isConsequential": false,
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PluginCustomDataFrameRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/plugin/report": {
      "post": {
        "tags": [
          "Plugin objects"
        ],
        "summary": "run report",
        "description": "Create a report containing plots and calculations on the objectIds.A successful call generates an objectId. Results need to be retrieved from the new objectId. Currently there are 'timeseries' and 'performance' report types.",
        "operationId": "pluginCreateReport",
        "x-openai-isConsequential": false,
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/plugin/subroutine": {
      "post": {
        "tags": [
          "Plugin objects"
        ],
        "summary": "run subroutine",
        "description": "Call a subroutine. A successful call generates an objectId. This should only be used with identifiers returned by '/query', where the signature is known.",
        "operationId": "pluginCallSubroutine",
        "x-openai-isConsequential": false,
        "parameters": [
          {
            "description": "Name of subroutine to run.",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Identifier",
              "description": "Name of subroutine to run."
            },
            "name": "identifier",
            "in": "query"
          },
          {
            "description": "Purpose of call and expected behaviour.",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Usage",
              "description": "Purpose of call and expected behaviour."
            },
            "name": "usage",
            "in": "query"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubroutineRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/plugin/objects": {
      "get": {
        "tags": [
          "Plugin objects"
        ],
        "summary": "Read object status for multiple objects",
        "description": "Check the status of a created instrument or strategy for multiple objects: REQUESTED - build requested. RUNNING - currently building. SUCCEEDED - build finished successfully. FAILED - unable to build. objectId must be SUCCEEDED for further API calls.",
        "operationId": "getObjects",
        "x-openai-isConsequential": false,
        "parameters": [
          {
            "description": "The current session's `sessionID`.",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Sessionid",
              "description": "The current session's `sessionID`."
            },
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00",
            "name": "sessionId",
            "in": "query"
          },
          {
            "description": "The `objectID` of the instrument or strategy whose status is being checked.",
            "required": true,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array",
              "minItems": 1,
              "uniqueItems": true,
              "title": "Objectid",
              "description": "The `objectID` of the instrument or strategy whose status is being checked."
            },
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00",
            "name": "objectId",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/plugin/instruments": {
      "post": {
        "tags": [
          "Plugin objects"
        ],
        "summary": "Create instruments",
        "description": "This endpoint generates an objectID for individual futures(like ESZ22 INDEX), cash, FX spot, equity index or ETF instruments. Stocks should use the ''stocks'' endpoint. The objectId must have a SUCCEEDED status before using it for further calls. Check the status using the object status endpoint.",
        "operationId": "createInstruments",
        "x-openai-isConsequential": false,
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InstrumentBatchedRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/plugin/instruments/stock": {
      "post": {
        "tags": [
          "Plugin objects"
        ],
        "summary": "Create single stock instruments",
        "description": "This endpoint generates objectIds for a single stock instrument. For ETFs the /plugin/instruments endpoint should be used instead.",
        "operationId": "createStockInstruments",
        "x-openai-isConsequential": false,
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SingleStockBatchedRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "BasketStrategyRequest": {
        "properties": {
          "constituents": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Constituents",
            "description": "The `objectIDs` of the constituent instruments or strategies that make up your basket.",
            "example": "ES INDEX"
          },
          "weights": {
            "items": {
              "type": "number"
            },
            "type": "array",
            "title": "Weights",
            "description": "The weighting of each constituent `objectId` (instrument or strategy) in your basket. The number of weights should match the number of constituent `objectId`s. Enter a negative value if you want to be short on a constituent. If sum of all absolute weights exceeds 1 the strategy will use leverage."
          },
          "currency": {
            "type": "string",
            "maxLength": 3,
            "minLength": 3,
            "title": "Currency",
            "description": "A three-letter ISO currency code. This represents the currency the strategy will be evaluated in.",
            "default": "USD",
            "example": "USD"
          },
          "rebalanceFrequency": {
            "type": "string",
            "pattern": "^([0-9]*(BD|W|M|DOM|W-MON|W-TUE|W-WED|W-THU|W-FRI|M-\\d{1,2}DOM)|3M_IMM|SOM|EOM|YEARLY)$",
            "title": "Rebalancefrequency",
            "description": "Determines how often the constituent objects are rebalanced to maintain the relative weighting you defined. Some example values are: `EOM` - rebalances at the end of the month and `7W-MON` - rebalances every 7 weeks on a Monday.",
            "example": "1M"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "title": "Startdate",
            "description": "The start date of the strategy (`YYYY-MM-DD`)."
          },
          "name": {
            "type": "string",
            "maxLength": 50,
            "title": "Name",
            "description": "A short descriptive name for the strategy.",
            "example": "Basket"
          },
          "sessionId": {
            "type": "string",
            "title": "Sessionid",
            "description": "The current session's `sessionID`.",
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "constituents",
          "weights",
          "rebalanceFrequency",
          "sessionId"
        ],
        "title": "BasketStrategyRequest"
      },
      "CreateSessionRequest": {
        "properties": {},
        "additionalProperties": false,
        "type": "object",
        "title": "CreateSessionRequest"
      },
      "DataFrameRequest": {
        "properties": {
          "identifier": {
            "type": "string",
            "maxLength": 50,
            "title": "Identifier",
            "description": "The `identifier` associated with an data table.",
            "example": "ECO REAL_GDP EUROSTAT SE MACROECONOMICFIX"
          },
          "modifier": {
            "type": "string",
            "enum": [
              "percentage_change",
              "change"
            ],
            "title": "Modifier",
            "description": "Operation to apply on data. Options include None (default), 'percentage_change' and 'change'. For example, 'percentage_change' can be useful for getting growth measures of GDP.",
            "example": "change"
          },
          "sessionId": {
            "type": "string",
            "title": "Sessionid",
            "description": "The current session's `sessionID`.",
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "identifier",
          "sessionId"
        ],
        "title": "DataFrameRequest"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "InstrumentBatchedRequest": {
        "properties": {
          "sessionId": {
            "type": "string",
            "title": "Sessionid",
            "description": "The current session's `sessionID`.",
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00"
          },
          "parameters": {
            "items": {
              "properties": {
                "identifier": {
                  "type": "string",
                  "pattern": "(^[A-Z]{3} CASH$|^[A-Z0-9 ]+ (INDEX|COMDTY|CURNCY|EQUITY)$)",
                  "title": "Identifier",
                  "description": "The `identifier` associated with an instrument available in the SigTech API. For cash, enter a currency code followed by `CASH` (e.g. `USD CASH` or `GBP CASH`). For FX spot, enter two currency codes followed by `CURNCY` (e.g. `EURUSD CASH` to go long EUR). ",
                  "example": "GBP CASH"
                }
              },
              "additionalProperties": false,
              "type": "object",
              "required": [
                "identifier"
              ],
              "title": "Instrument"
            },
            "type": "array",
            "minItems": 1,
            "title": "Parameters"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "sessionId",
          "parameters"
        ],
        "title": "InstrumentBatchedRequest"
      },
      "PluginCustomDataFrameRequest": {
        "properties": {
          "columns": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Columns",
            "description": "Column names for table.",
            "example": [
              "$timestamp",
              "column B"
            ]
          },
          "data": {
            "items": {
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "type": "array"
            },
            "type": "array",
            "title": "Data",
            "description": "Data array for table.",
            "example": [
              [
                "2021-03-15",
                1
              ],
              [
                "2021-06-27",
                -1
              ]
            ]
          },
          "index": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1,
            "minItems": 1,
            "title": "Index",
            "description": "Columns to use for the dataframe index.",
            "default": [
              "$timestamp"
            ]
          },
          "sessionId": {
            "type": "string",
            "title": "Sessionid",
            "description": "The current session's `sessionID`.",
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "columns",
          "data",
          "sessionId"
        ],
        "title": "PluginCustomDataFrameRequest"
      },
      "ReportRequest": {
        "properties": {
          "constituents": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Constituents",
            "description": "The `objectIDs` of the constituent dataframes, instruments or strategies. "
          },
          "type": {
            "type": "string",
            "maxLength": 15,
            "title": "Type",
            "description": "Type of report to run. There is are report types: - 'timeseries' (giving a chart of values & prices with statistics) - 'performance' (giving a chart of cumulative returns with return metrics)"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "title": "Startdate",
            "description": "The start date of the report (`YYYY-MM-DD`)."
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "title": "Enddate",
            "description": "The end date of the report (`YYYY-MM-DD`)."
          },
          "sessionId": {
            "type": "string",
            "title": "Sessionid",
            "description": "The current session's `sessionID`.",
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "constituents",
          "type",
          "sessionId"
        ],
        "title": "ReportRequest"
      },
      "RollingFuturesStrategyRequest": {
        "properties": {
          "identifier": {
            "type": "string",
            "pattern": "^[A-Z0-9]{1,3} (INDEX|COMDTY|CURNCY)$",
            "title": "Identifier",
            "description": "The `identifier` associated with an instrument available in the SigTech API. See the [SigTech API data catalog](https://sigtechapi.streamlit.app/) for more information.",
            "example": "ES INDEX"
          },
          "sessionId": {
            "type": "string",
            "title": "Sessionid",
            "description": "The current session's `sessionID`.",
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "identifier",
          "sessionId"
        ],
        "title": "RollingFuturesStrategyRequest"
      },
      "SignalStrategyRequest": {
        "properties": {
          "signal": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "additionalProperties": {
                  "items": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "type": "array"
                },
                "type": "object"
              }
            ],
            "title": "Signal",
            "description": "objectId for a dataframe of allocation weights. Containing at least two columns: $timestamp (dates in YYYY-MM-DD format) and each objectId (numerical weights). ",
            "example": {
              "$timestamp": [
                "2021-03-15",
                "2021-06-27",
                "2021-10-14",
                "2022-02-05",
                "2022-05-07"
              ],
              "<objectId>": [
                1,
                -1,
                1,
                1,
                -1
              ]
            }
          },
          "currency": {
            "type": "string",
            "maxLength": 3,
            "minLength": 3,
            "title": "Currency",
            "description": "A three-letter ISO currency code. This represents the currency the strategy will be evaluated in.",
            "default": "USD",
            "example": "USD"
          },
          "rebalanceFrequency": {
            "type": "string",
            "pattern": "^([0-9]*(BD|W|M|DOM|W-MON|W-TUE|W-WED|W-THU|W-FRI|M-\\d{1,2}DOM)|3M_IMM|SOM|EOM|YEARLY)$",
            "title": "Rebalancefrequency",
            "description": "Determines how often the constituent objects are rebalanced. Some example values are: `EOM` - rebalances at the end of the month and `7W-MON` - rebalances every 7 weeks on a Monday.",
            "example": "1M"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "title": "Startdate",
            "description": "The start date of the strategy (`YYYY-MM-DD`)."
          },
          "name": {
            "type": "string",
            "maxLength": 50,
            "title": "Name",
            "description": "A short descriptive name for the strategy.",
            "example": "Signal"
          },
          "sessionId": {
            "type": "string",
            "title": "Sessionid",
            "description": "The current session's `sessionID`.",
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "signal",
          "rebalanceFrequency",
          "sessionId"
        ],
        "title": "SignalStrategyRequest"
      },
      "SingleStockBatchedRequest": {
        "properties": {
          "sessionId": {
            "type": "string",
            "title": "Sessionid",
            "description": "The current session's `sessionID`.",
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00"
          },
          "parameters": {
            "items": {
              "properties": {
                "identifier": {
                  "type": "string",
                  "pattern": "^([A-Z0-9]+|[A-Z0-9 ]+EQUITY)$",
                  "title": "Identifier",
                  "description": "The identifier associated with an single stock instrument available in the SigTech API. For example 'AAPL'.",
                  "example": "AAPL"
                }
              },
              "additionalProperties": false,
              "type": "object",
              "required": [
                "identifier"
              ],
              "title": "SingleStock"
            },
            "type": "array",
            "minItems": 1,
            "title": "Parameters"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "sessionId",
          "parameters"
        ],
        "title": "SingleStockBatchedRequest"
      },
      "SubroutineRequest": {
        "properties": {
          "subroutineJson": {
            "type": "string",
            "title": "Subroutinejson",
            "description": "JSON inputs to subroutine.",
            "default": "{}"
          },
          "sessionId": {
            "type": "string",
            "title": "Sessionid",
            "description": "The current session's `sessionID`.",
            "example": "1ecd1110-ce90-04ee-1c5c-62d55190cc00"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "sessionId"
        ],
        "title": "SubroutineRequest"
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      }
    },
    "securitySchemes": {
      "HTTPBearer": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "tags": [
    {
      "name": "Sessions",
      "description": "Create and retrieve sessions."
    },
    {
      "name": "Strategies",
      "description": "Simulate a financial strategy."
    },
    {
      "name": "Plugin objects",
      "description": "Objects for plugin endpoints."
    },
    {
      "name": "Dataframes",
      "description": "Generate an `objectID` for a dataframe."
    },
    {
      "name": "Objects",
      "description": "Manage objects created within a session."
    }
  ]
}