For Investment Fund Managers ·
What you'll accomplish
Checking a long holdings file against position and sector limits by hand is slow, and the same check repeats every month. In this setup, you upload a holdings file to ChatGPT's data analysis, ask for the positions above the limit and the sector totals, and ask it to show the code it ran. You then confirm each result in your own spreadsheet.
Your spreadsheet and portfolio system stay the record. ChatGPT gives you a second pass and a way to see the logic.
What you'll need
Data caution for this workflow. Real holdings are sensitive. Undisclosed holdings, trade ideas and orders, the firm's models, investor and client names, and account numbers stay in the firm's systems unless the firm approved ChatGPT for that data and your CCO allows it. Material non-public information never goes into any AI tool. Holdings data exported from a terminal or data provider may be licensed, so check the licence first. This guide works on an invented file with invented names. If you later use column names and weights from a real strategy, get your CCO's approval first. Check ChatGPT's data controls for training and retention, and ask your CCO which tools are approved and how chats are kept.
The columns are Holding, Sector and Weight. All data below is invented. Strategy S, its limits and the weights are not real.
Holding,Sector,Weight
Company A,S1,11.0
Company B,S1,12.5
Company C,S2,9.0
Company D,S2,8.5
Company E,S3,13.0
Company F,S3,7.0
Company G,S1,12.0
Company H,S4,6.0
Company I,S2,9.0
Company J,S4,7.0
Cash,CASH,5.0
The invented limits for this example: a single position above 12.0 is over the limit, and a sector total above 35.0 is over the limit. Cash sits on its own row in the sector CASH.
What you should see: Eleven data rows and a header. The ten holdings add up to 95.0, and with cash the total is 100.0. Troubleshooting: OpenAI's data analysis help recommends descriptive headers, one record per row and no empty rows or columns that split the data. The file above follows that.
What you should see: A chat box with an attach option.
What you should see: The file name appears with the message box. Troubleshooting: OpenAI's pages list .csv, .xls and .xlsx among supported spreadsheet types. If the upload fails, check OpenAI's file upload help page for the current limits.
The attached file is invented practice data for a strategy. Columns: Holding, Sector, Weight. The row with Sector CASH is cash.
Limits: a single position above 12.0 is over the limit. A sector total above 35.0 is over the limit.
Task 1: List the holdings with a weight above 12.0. Say separately if any holding is exactly at 12.0.
Task 2: Show sector totals excluding cash, and list any sector above 35.0.
Task 3: Show the total of all holdings excluding cash, and the total including cash.
Task 4: Show the code you ran.
Do not give any opinion on the holdings. Do not suggest any trade or change. Label the output "Draft check for PM review".
What you should see: A short analysis with a table and a code panel or code listing. Troubleshooting: If ChatGPT answers without showing code, send "Show the code you ran for each task."
The correct results for the invented file are:
What you should see: The same results. Troubleshooting: A common slip is to treat Company G as over the limit. Ask ChatGPT whether the code uses a "greater than" test or a "greater than or equal" test. It should be "greater than" for this limit.
What you should see: A short script that filters rows and groups by sector. Troubleshooting: If you do not read code, ask ChatGPT to explain each line in plain words, and still check the numbers in your spreadsheet.
What you should see: The same numbers.
Count and sum checks:
Count the rows in the file and show the sum of the Weight column. Report any blank or non-numeric weight.
Duplicate check:
List any Holding that appears more than once in the file, with its rows.
Chart for the committee deck:
Make a bar chart of sector totals excluding cash, with a line at [sector limit from the guidelines]. Label the chart "Invented practice data" if the file is invented.
Explain the code:
Explain each line of the code you ran in plain words, for a reader who does not code.