Create an investment management chatbot

Get the code Try the app Build on IBM Cloud Watch the tech talk


Create a Watson Assistant-based financial chatbot that enables you to query your investments, analyze securities, and use multiple interfaces.


Chatbots are rapidly gaining acceptance and becoming the norm for all kinds of customer interactions. In this code pattern, you will create a Watson Assistant-based chatbot that enables you to use an Investment Portfolio service to query portfolios and associated holdings. You’ll use a Simulated Instrument Analytics service to compute analytics on securities under a given scenario and will learn how to swap between a standard web interface and a Twilio interface.

When you have completed this pattern, you will understand how to:

  • Create a chatbot dialog with Watson Assistant
  • Set up multiple interfaces with the Watson Assistant bot: web & Twilio
  • Access, seed and send data to the Investment Portfolio Service
  • Send data along with a scenario to the Simulated Instrument Analytics service to retrieve analytics



  1. The developer can set up multiple communication channels (for example, WebUI or Twilio). The application listens for messages from either channel.
  2. The Assistant API takes in natural language input and breaks and maps it to intents and entities that it has been trained for. The app makes a call to the respective financial service based on the intent that was identified.
  3. The context of the conversation is saved to the Cloudant DB so that the Assistant API is able to save the state and track the conversation flow of the user.
  4. The Portfolio Investment API is called if there is a query asking for information around the holdings or portfolio. An asynchronous call is made through a \’Promise Request\’ to make the query and return the results. Subsequently, the results are parsed and formatted in a response object that is sent back to the Assistant interface.
  5. The Simulated Analytics API is called if the intent is identified as \’impact analysis\’. This call initially requires issuing an asynchronous \’Promise Request\’ querying the name of the holdings currently owned using the Portfolio Investment API. This is stored in an object that is subsequently sent to the Simulated Instrument Analytics service (SIA). SIA pulls the base and conditional price out of the object in order to compare against the potential market changes and return a measure of the impact to the holdings in this scenario. (In this use case, the change scenario is querying how the portfolio would perform if the S&P 500 drops by 5%. Results are parsed and formatted in a response object that is sent back to the Assistant interface.