How to get spot currency historical_data from Refinitiv Workspace

this is my code:

def get_historical_data(rics: list, start_datetime: str, end_datetime: str):
"""
Retrieve historical pricing data for a given ticker and time range.

Args:
    rics (list): The list of RICs (e.g., ['AAPL.O', 'GOOG.O'])
    start_datetime (str): Start datetime in ISO format (e.g., '2023-04-07T15:14:25.165')
    end_datetime (str): End datetime in ISO format (e.g., '2023-04-07T15:15:25.165')

Returns:
    list: List of dictionaries containing historical data records
"""
try:
    # Open a session
    sesh = rd.open_session()
    logger.info(f"Session opened for historical data request: {sesh}")

    # Validate date formats
    try:
        start_dt = datetime.fromisoformat(start_datetime.replace('Z', '+00:00'))
        end_dt = datetime.fromisoformat(end_datetime.replace('Z', '+00:00'))

        # Check if start date is after end date
        if start_dt > end_dt:
            error_msg = f"Invalid date range: start date ({start_datetime}) is after end date ({end_datetime})"
            logger.error(error_msg)
            return {"error": error_msg}

    except ValueError as e:
        logger.error(f"Invalid date format: {e}")
        return {"error": f"Invalid date format: {e}"}

    logger.info(f"Making API request for {rics} between {start_datetime} and {end_datetime}")
    # Make the API request
    response = historical_pricing.events.Definition(
        universe=rics,
        start=start_datetime,
        end=end_datetime,
        eventTypes=EventTypes.TRADE
    ).get_data()

How do I get spot currency data (time and sales) for Canadian dollar, euro, mexican peso. I am trying to pass in CAD= and 0#CD: and 0#CAD=but nothing works. What can I do? it works for futures CDU25 works but not spot.

Answers

  • Hello @Jwan622

    There are no trades in the FX - these instruments are not matched on an exchange. You can invoke the get history method without any fields parameters to get a list of all the available fields for a currency pair. Most likely you will need to use some format of Bid/Askor Mid price as a spot rate.

    df = ld.get_history(
    	universe="CAD=",
    	interval="1D",
    	start="2025-01-01",
    	end="2025-04-01",
    	count=1000
    )