Automated CUSIP ID Data Retrieval System

Job ID: 38699334

Budget: $250 – $750 USD

Functional Requirements
Data Input

Input Type: The user provides a list of CUSIP IDs in a Google Sheet.
Input Location: The CUSIP IDs will be entered manually by the user into Column A of the Google Sheet, starting from row 2 (A2, A3, etc.).
Data to be Retrieved For each CUSIP ID, the system should retrieve the following details:

CUSIP ID: A unique 9-character code identifying the asset.
Asset Class: Type of asset (e.g., bond, stock, mutual fund).
Asset Name: The full name of the asset.
Market Value: The current market value of the asset.
Par Value: The face value of the bond.
Coupon %: The coupon rate of the bond.
Yield %: The yield percentage.
Issue Date: The date when the bond was issued.
Maturity Date: The date when the bond matures.
Call Date: The earliest date the bond can be redeemed by the issuer.
Automatic Data Retrieval

The system must automatically query an external API to retrieve the required data for each CUSIP ID.
The retrieved data must be populated in the Google Sheet in columns adjacent to the CUSIP ID (Columns B to J).
Error Handling

If a CUSIP ID cannot be found, an appropriate error message (e.g., "Data not found") should be displayed in the relevant row.
Logs of failed queries should be available for troubleshooting.
Scheduling and Automation

The user should be able to manually trigger the data retrieval for a new or updated list of CUSIP IDs.
Optionally, allow for automatic updates at scheduled intervals (e.g., every 24 hours).
Technical Requirements
Google Sheets

The system will be built within Google Sheets, leveraging its flexibility and the Apps Script feature for automation.
Data should be laid out in a clear table format where each row corresponds to a CUSIP, and the required data is shown in adjacent columns.
Google Apps Script

API Integration: Use Google Apps Script to make HTTP requests to a third-party financial data provider's API (e.g., IEX Cloud, Alpha Vantage, FINRA).
Data Parsing: Parse the JSON or XML responses from the API and populate the appropriate columns in the spreadsheet.
Function: A custom Google Sheets function (updateSheet()) will be created to handle the API calls and fill in the corresponding data for each CUSIP.
External API

API Provider: Use a third-party API such as Alpha Vantage, IEX Cloud, or FINRA for retrieving financial data.
Authentication: The API will require an API key, which must be stored securely in the Apps Script.
Rate Limits: Ensure that the system adheres to the API provider's rate limits (e.g., 5 calls per minute for free plans).
Column Definitions in Google Sheet

Column A: CUSIP ID (provided by user)
Column B: Asset Class (retrieved from API)
Column C: Asset Name (retrieved from API)
Column D: Market Value (retrieved from API)
Column E: Par Value (retrieved from API)
Column F: Coupon % (retrieved from API)
Column G: Yield % (retrieved from API)
Column H: Issue Date (retrieved from API)
Column I: Maturity Date (retrieved from API)
Column J: Call Date (retrieved from API)
Assumptions
API Accessibility: The financial data provider offers free or inexpensive access to the required data points, particularly for bonds identified by CUSIP numbers.
User Interface: The system will be managed through the Google Sheet itself. No separate user interface will be developed.
Data Validity: The system relies on the accuracy and completeness of the data provided by the third-party API.
Non-Functional Requirements
Security

The API key should be stored securely and not be visible to end-users of the Google Sheet.
Google Apps Script security best practices should be followed to ensure no sensitive data is exposed.
Performance

The system should be capable of processing a list of up to 100 CUSIP IDs within a few minutes, keeping in mind API rate limits.
For larger datasets, consider queuing or batching the requests.
Scalability

The system should be flexible enough to support additional CUSIP-based data points in the future.
Future Considerations
Expanded Asset Coverage: While the system is focused on CUSIP IDs for bonds, future iterations could support ticker symbols for equities or other financial instruments.
User Feedback: Include logging or notifications for errors or when data retrieval is complete.
Related categories: Finance Google Sheets Google APIs