內容目錄
在當今金融市場複雜繁複的信息當中,投資者和交易員不再依賴傳統的研究方法,而是轉向高度智能化的數據分析工具,以便更好地理解股市趨勢、發現投資機會,並做出明智的財務決策。在這個快節奏的金融環境中,將大量的市場數據轉化為實際洞察是關鍵。
在這樣的背景下,LLM(Large Language Model)與TEJAPI的結合,提供了純文字分析的強大能力。LLM是一個基於自然語言處理的強大模型,具有理解和生成自然語言的能力,可以幫助我們探索市場新聞、公司報告、社交媒體評論以及更多形式的文本數據,以獲得對市場情緒和事件的深入理解。而TEJAPI提供了豐富的金融市場數據,能夠提供LLM進行精準的分析。
本文將探討如何將LLM與TEJAPI結合,以增進股市分析的效率和精確性。闡述這一整合如何有助於識別市場趨勢、分析股票表現、發現市場新聞中的關鍵信息,並提供第三方的投資見解。這個結合不僅對專業交易員和投資者有所幫助,對於普通投資者也提供了更多掌握市場的方式。
以乖離率作為交易策略進行提示
本文使用 Mac 作業系統以及 jupyter notebook 作為編輯器。
資料期間從 2023/05/20 至 2023/06/30,以台積電(2330)作為實例,抓取未調整的開、收盤價格進行分析。
import tejapi
api_key = 'your key'
tejapi.ApiConfig.api_base="http://api.tej.com.tw"
tejapi.ApiConfig.api_key = api_key
tejapi.ApiConfig.ignoretz = True
def get_stock_price(gte, lte, ticker):
stock = tejapi.get('TWN/APRCD',
mdate = {'gte':gte, 'lte':lte},
coid = ticker,
chinese_column_name = True
)
return stock
本次 LLM 使用的是OpenAI gpt-3.5-turbo-0301,先導入個人API KEY,可至 OpenAI 官網申請。
import os
import openai
os.environ['OPENAI_API_KEY'] = 'your api key'
openai.api_key = os.environ['OPENAI_API_KEY']
LangChain 是一個開源的 Python 庫,提供了構建基於大型語言模型 (LLM) 的 AI 應用所需的工具。開發者可以輕鬆地與 LLM 集成,完成文本生成、問答、翻譯、對話等任務。LLM本身是沒有記憶能例的,但是使用LangChain技術後能將對答紀錄儲存起來,提供流暢的對答體驗,有和真人交流的感覺。
from langchain.chat_models import ChatOpenAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferWindowMemory
llm_model = 'gpt-3.5-turbo-0301'
llm = ChatOpenAI(temperature=0.0, model=llm_model)
memory = ConversationBufferWindowMemory(k=5) # 設定只保留五次對話以前的紀錄
# 建立對話鏈
conversation = ConversationChain(
llm=llm,
memory = memory,
verbose=False
)
gte = '2023-05-20'
lte = '2023-06-30'
stock = get_stock_price(gte, lte, '2330')
# 時間 開收盤價格
date_price = ''
for i in range(len(stock)):
date = stock['年月日'][i].strftime('%Y-%m-%d')
# opens = stock['開盤價(元)'][i]
closes = stock['收盤價(元)'][i]
open_price = stock['開盤價(元)'][i]
date_price += f'date: {date} '
# date_price += f'開盤價: {opens} '
date_price += (f'open: {open_price} ' + f'close: {closes}\n')
prompt = f'幫我分析市場波動趨勢,以下為股價資料:\n'+ date_price + '幫我用繁體中文分析'
print(prompt)
print(conversation.predict(input=prompt))
print(conversation.predict(input='用三天的移動平均,幫我計算從六月開始每次收盤當天的乖離率,產出表格'))
print(conversation.predict(input='幫我用本金十萬元在六月第一天進場,前一天收盤價大於四天前最高價,且收盤乖離率>=0,則當天開盤價出場。\
在前一天收盤價小於四天前最低價,且收盤乖離率<=0,則當天開盤價進場,生成表格'))
print(conversation.predict(input='幫我產出詳細表格報表,包含獲利金額大小、總獲利大小'))
本次介紹利用 LLM 進行乖離率交易策略,當市場呈現超跌(乖離率<0)的情況且收盤價高於過去一段期間的最高價位時,判斷股價將逐漸回歸移動平均價位,因此進場做多;反之,當股價呈現超買(乖離率>0)且收盤價低於過去一段期間的最低價位時,認為股價已經漲過頭且有下跌的趨勢時,將原本做多的倉位平倉。再藉由語言模型的計算和分析能力可以快速的得到分析結論。
但還是要再次提醒本文所提及之標的僅供說明使用,不代表任何金融商品之推薦或建議。並且語言模型生成的過果不代表一定正確,需進一步確認。因此,若讀者對於建置策略、績效回測、研究實證等相關議題有興趣,歡迎選購 TEJ E Shop中的方案,具有齊全的資料庫,就能輕易的完成各種檢定。
電子報訂閱