1.
chatGPT를 이용하여 금융서비스를 만들려고 하는 시도가 넘칩니다. 국내외 사례를 하나씩 살펴보면.
먼저 미국 Broadridge가 GPT API를 이용하여 BondGPT서비스를 출시하였습니다.
LTX by Broadridge Launches BondGPT Powered by OpenAI GPT-4
보도자료만 있고 BondGPT – powered by OpenAI GPT-4 – answers bond-related questions and assists users in their identification of corporate bonds on the LTX platform를 통해 신청자를 모집하는 중입니다. 어떤 서비스인지 영상으로 보시면 이해할 수 있습니다.
Broadrige는 chatGPT의 결과를 보여주면 회사가 보유하고 있는 채권관련 정보를 추가로 보여주는 방식을 선택하였습니다. 보도자료는 이렇게 표현합니다.
View robust, dynamic charting and graphing
솔직히 무엇이 혁신인지 알 수 없는 서비스입니다.국내를 보면 두물머리가 내놓은 Boolio Invest가 있습니다. 아래를 보시면 어떻게 동작하는지를 잘 설명해놓고 있습니다.
Boolio ChatGPT Plugin Tutorial & Best Prompts To Use
참고로 Overview Of AI/ChatGPT Plugin Boolio Invest에 올라온 Plugin API 문서를 보시면 좀더 자세히 동작방법을 이해하실 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 |
openapi: 3.1.0 info: title: Boolio ChatGPT plugin version: 2023.6.2 paths: /api/stock/summary: post: summary: Summarize stock info description: Summarize stock info of the given country and ticker operationId: postApiStockSummary requestBody: content: application/json: schema: $ref: '#/components/schemas/StockSummaryRequest' required: true responses: '200': description: '' content: text/plain: schema: type: string '400': description: 'Invalid value for: body' content: text/plain: schema: type: string '404': description: '' content: text/plain: schema: type: string '500': description: '' content: text/plain: schema: type: string /api/search/factor: get: summary: Search factor description: Search for factor by keywords. If the query is an empty string, `category` field must be set. operationId: getApiSearchFactor parameters: - name: query in: query description: Keywords in English to search for the factor required: true schema: type: string - name: category in: query description: The category the factor belongs to. Should be one of the examples when the query is empty. required: false schema: type: string examples: Example0: value: Scoring Example1: value: Value Example2: value: Efficiency Example3: value: Profitability Example4: value: Growth Example5: value: Stability Example6: value: Price Example7: value: Volume Example8: value: Statistics Example9: value: Shareholder Policy Example10: value: Analyst Outlook responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/FactorDefinition' '400': description: 'Invalid value for: query parameter query, Invalid value for: query parameter category' content: text/plain: schema: type: string '404': description: '' content: text/plain: schema: type: string '500': description: '' content: text/plain: schema: type: string /api/search/sector: get: summary: Search industry sectors description: Search for sector IDs by keywords. operationId: getApiSearchSector parameters: - name: query in: query description: Keywords in English to search for the factor required: true schema: type: string responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/Sector' '400': description: 'Invalid value for: query parameter query' content: text/plain: schema: type: string '404': description: '' content: text/plain: schema: type: string '500': description: '' content: text/plain: schema: type: string /api/custom-index/screen: post: summary: Screen stocks description: | Search for stocks meeting the given criteria. Note: Before calling this endpoint, please ensure to call `/api/search/factor` first to search for the factor. Please ensure the value is in the correct unit corresponding to the factor. operationId: postApiCustom-indexScreen requestBody: content: application/json: schema: $ref: '#/components/schemas/ScreenerRequest' required: true responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/ScreenerItem' '400': description: 'Invalid value for: body' content: text/plain: schema: type: string components: schemas: Direction: type: string description: The sort direction enum: - ASC - DESC FactorDefinition: required: - id - name - description - unit - category type: object properties: id: $ref: '#/components/schemas/FactorId' name: type: string description: The name of the factor description: type: string description: The meaning of the factor unit: type: string description: The unit of the factor category: type: string description: The category of the factor FactorId: type: integer description: The unique identifier for the factor format: int32 example: 1113 FilterCondition: required: - factorId - operator - value - searchMode type: object properties: factorId: $ref: '#/components/schemas/FactorId' operator: $ref: '#/components/schemas/FilterOperator' value: type: number description: The minimum threshold. If `searchMode` is `RELATIVE`, the scale of value is percent. format: double searchMode: $ref: '#/components/schemas/SearchMode' example: factorId: 1133 operator: '>=' value: 100.0 searchMode: Absolute FilterOperator: type: string description: Operator enum: - '>' - '>=' - <= - < GroupId: type: integer description: | The unique identifier for the group or sector. format: int32 ScreenerItem: required: - name type: object properties: name: type: string symbol: type: string ScreenerRequest: required: - prompt - region - limit type: object properties: prompt: type: string description: The latest chat prompt from the user region: type: string description: An ISO-3166-1 alpha-2 code of the country example: KR sectorIds: type: array items: $ref: '#/components/schemas/GroupId' description: Sector identifiers that can be found from at `/api/sector/search` filterRules: type: array items: $ref: '#/components/schemas/FilterCondition' description: The search criteria. Multiple conditions mean logical and (&&). The factors should be identified by numeric ID that can be found at GET /api/custom-index/factors sortRules: type: array items: $ref: '#/components/schemas/SortingRule' description: The sorting criteria, which can be used to find top N items that meets the search criteria. limit: type: integer description: The maximum number of stocks in the result format: int32 SearchMode: type: string description: Whether the type of value is absolute or relative. If `searchMode` is `RELATIVE`, the scale of value is percent. enum: - Absolute - Relative Sector: required: - id - name - level type: object properties: id: $ref: '#/components/schemas/GroupId' name: type: string level: type: integer description: The hierarchical level of the sector. The higher is the narrower. format: int32 SortingRule: required: - factorId - direction type: object properties: factorId: $ref: '#/components/schemas/FactorId' direction: $ref: '#/components/schemas/Direction' example: factorId: 1113 direction: DESC StockSummaryRequest: required: - prompt - region - symbol type: object properties: prompt: type: string description: The latest chat prompt from the user region: type: string description: An ISO-3166-1 alpha-2 code of the country example: JP symbol: type: string description: The identifier of the stock in the corresponding region example: AAPL |
혹 비슷한 서비스에 관심이 있다면 아래에서 찾아보시길.
Investment & Trading Plugins for ChatGPT Like Boolio Invest
2.
어떤 사물을 바라볼 때 선호하지 않는 것이 ‘의존’입니다. 어떤 생태계에 의존함은 삶이 누군가에 의해 좌지우지됨을 말합니다. 종속적인 생존입니다. 물론 협력적인 생존이라고 할 수 있습니다. 다른 해석입니다. ChatGPI API가 유용할 듯 합니다만 협력일지 종속일지 시각이 다를 수 있지만 종속이라고 생각하다면 다른 길을 찾아야 합니다.
위글에서 소개한 IndexGPT, BloombergGPT는 아마도 다른 길을 선택하려는 시도입니다. OpenAI에 막대한 API사용료를 지불하면서 서비스를 이용할 수 없기때문입니다.이럴 때 선택가능한 방법입니다. 다른 길을 이야기하는 오픈소스프로젝트입니다.
Data-Centric FinGPT: Open-source for Open Finance.
FinGPT는 수식어가 있습니다. Data-Centric입니다. 데이타를 보유하고 있거나 수집할 수 있는 곳이 선택하면 좋은 GPT 플랫폼이라는 뜻입니다. 만든이들이 “왜 FinGPT”이어야 하는지를 설명한 글입니다. 세가지 이유가 모두 좋습니다. 그중에서 “Democratizing”이라는 표현이 마음에 듭니다. Qunatopian이 처음 서비스를 시작할 때 했던 말도 “Democracy”입니다. “Occupy Wall Street” 운동의 연장선에 있는 듯 합니다.
Why FinGPT?
1). Finance is highly dynamic. BloombergGPT retrains an LLM using a mixed dataset of finance and general data sources, which is too expensive (1.3M GPU hours, a cost of around $5M). It is costly to retrain an LLM model every month or every week, so lightweight adaptation is highly favorable in finance. Instead of undertaking a costly and time-consuming process of retraining a model from scratch with every significant change in the financial landscape, FinGPT can be fine-tuned swiftly to align with new data (the cost of adaptation falls significantly, estimated at less than $300 per training).2). Democratizing Internet-scale financial data is critical, which should allow timely updates (monthly or weekly updates) using an automatic data curation pipeline. But, BloombergGPT has privileged data access and APIs. FinGPT presents a more accessible alternative. It prioritizes lightweight adaptation, leveraging the strengths of some of the best available open-source LLMs, which are then fed with financial data and fine-tuned for financial language modeling.
3). The key technology is “RLHF (Reinforcement learning from human feedback)”, which is missing in BloombergGPT. RLHF enables an LLM model to learn individual preferences (risk-aversion level, investing habits, personalized robo-advisor, etc.), which is the
secret” ingredient of ChatGPT and GPT4.
FinGPT가 제시한 모델입니다.
FinGPT와 관련한 자세한 설명은 FinNLP에서 확인하실 수있습니다. 그리고 관련한 내용을 논문으로 발표하였습니다.
FinGPT: Open-Source Financial Large Language Models
최근 몇 년동안 여러가지 프로젝트를 봤지만 도전해보고 싶은 프로젝트입니다. 독립적인 금융GPT를 만드는 일!!!!
불리오 GPT 자주 다뤄주셔서 감사합니다 ㅎㅎ
빠르게 업그레이드 해나갈게요. 독립적인 금융 GPT, 기회가 많은 땅 같아요!!
항상 마음속으로 응원합니다…