用AI打造交易人需要的日常工具(零)

更新於 2023/05/17閱讀時間約 17 分鐘
使用AI如ChatGPT來提昇工作效率已經成為今年最熱門的顯學,透過提示工程(Prompt Engineering)不管是使用AI寫作,寫code,甚至快速寫出所需要的工具,都可以在比以往所需時間的一半甚至更少時間完成。這個工具系列挑戰就是想透過AI快速的建立一個交易人在交易的時候所需要的各種工具,包括報表,策略,技術分析,機器學習等所有工具。看完這個系列相信除了產生交易相關工具外,對怎麼使用AI加速工作效率也能略有領悟。
這篇文章是第零篇文章,將會透過介紹如何實作提示工程來產生所需要的文圖程式碼來產生一個紀錄交易小程式。(劇透: 本篇文章文字產生時間約為半小時,主要時間花在重複測試prompt與加入所需要的元素)。為區分AI與本人的寫作,AI寫作部分將由粗體字呈現。

要解決的問題: 產生一個交易紀錄小服務

在證券期貨商品交易的世界,一個好的交易者最重要的第一步就是保持交易紀錄,並透過檢視分析自己的交易紀錄來驗證自己的交易策略和績效是否符合期待。這個交易紀錄可以是最基本的google sheet或是excel檔,也可以是進階一些的網路服務(web app)。接下來示範如何透過AI(chatGPT)來產生此份需求。
通常正常人很難一次到位的把提示寫的盡善盡美。前史丹佛大學教授AI界大神Andrew Ng在他的Prompt Engineering課程中再三呼籲好的提示要能:
  1. 寫出清楚且明確的指示,給出AI必須擔任的角色。
  2. 給模型時間思考,也就是將工作條列式表達完成。
  3. 一步一步建構,每一次建構時都需回頭檢視哪裡沒有達到需求。
  4. 清楚表達所需要產生的格式,如python程式碼,csv檔案。
在不斷實驗下驗證下,以下是經過數次循環產生文件與程式碼並透過檢查輸出不斷修改出來的最終版提示,這邊以括號內的數字表示不同階段給的提示。
----
你是一位熟悉Excel或Google表格的專業人士,我需要一個工作表來記錄股票交易者的交易紀錄。該工作表應包含以下內容:
  1. 交易編號
  2. 入場日期
  3. 做多或做空
  4. 股票代號
  5. 交易股數
  6. 入場價格
  7. 當前價格
  8. 入場交易費用
  9. 其他費用
  10. 總入場花費 = 第5項 * 第6項 + 第7項 + 第8項
  11. 交易指標(例如通道寬度)
  12. 出場日期
  13. 出場價格
  14. 出場交易費用
  15. 其他費用
  16. 總出場收益 = 第13項 * 第5項 - 第14項 - 第15項
  17. 盈虧 = 第16項 - 第10項
  18. 入場評分
  19. 出場評分
  20. 交易評分
  • 請提供一段用於生成上述工作表的Python代碼。(一)
  • 將程式碼轉化成 streamlit網路服務介面並創造出相應之按鈕。(二)
(註:streamlit為資料科學家常用之雛形網路服務庫)
  • 接下來你是一個部落客作家,透過產生之程式碼寫出相應之文章。(三)
  • 加入以下引用: 引用自進入我的交易室一書第八章,作者亞歷山大·埃爾德(四)
  • 另外產生一個python檔案讀取生成之交易紀錄檔並產生Profit/Loss對應時間的圖表(五)
---
以下為AI產生出來的結果,確實很驚人!
標題:使用Python建立交易工作表:逐步指南(參考《進入我的交易室》一書,作者:亞歷山大·埃爾德)
簡介: 在股票交易領域中,準確記錄交易紀錄對於分析績效和做出明智決策至關重要。儘管像Excel或Google Sheets等試算表工具通常用於此目的,但我們可以利用Python創建定制的交易工作表。在本逐步指南中,我們將引導您透過Python建立交易工作表的過程,使您能夠高效記錄和分析您的股票交易紀錄。
先決條件: 為了跟隨本教程,您需要安裝Python和以下庫:
  • pandas:一個強大的數據處理庫。
  • streamlit:一個用於構建交互式應用程序的易用框架。
第1步:環境設置 首先,在項目目錄中創建一個新目錄並初始化虛擬環境。打開終端或命令提示符,運行以下命令:
mkdir trading-worksheet
cd trading-worksheet
python -m venv env
source env/bin/activate  # 對於Unix系統
env\Scripts\activate  # 對於Windows系統
第2步:安裝所需庫 在終端中運行以下命令安裝所需庫:
pip install streamlit pandas
第3步:創建Streamlit界面 創建一個新的Python文件,例如trading_worksheet.py,並在首選的文本編輯器中打開它。將以下代碼複製到文件中:
import streamlit as st
import pandas as pd
# 創建一個空字典以存儲交易細節
columns = {
    '交易編號': [],
    '入場日期': [],
    '做多或做空': [],
    '股票代號': [],
    '交易股數': [],
    '入場價格': [],
    '當前價格': [],
    '入場交易費用': [],
    '其他費用': [],
    '總入場花費': [],
    '交易指標': [],
    '出場日期': [],
    '出場價格': [],
    '出場交易費用': [],
    '其他費用': [],
    '總出場收益': [],
    '盈虧': [],
    '入場評分': [],
    '出場評分': [],
    '交易評分': []
}
# 創建Streamlit界面
st.title('股票交易紀錄')
# 提示用戶輸入要記錄的交易數量
num_transactions = st.number_input('輸入交易數量:', min_value=1, step=1)
# 根據交易數量迭代
for i in range(num_transactions):
    st.header(f'交易 {i + 1}')
    # 提示用戶輸入交易細節並將其添加到字典中
# 從字典創建DataFrame
df = pd.DataFrame(columns)
第4步:收集交易細節 在迴圈中,提示用戶輸入交易細節,如入場日期、做多或做空、股票代號、交易股數、入場價格、當前價格、入場交易費用、其他費用、交易指標、出場日期、出場價格、出場交易費用和其他費用。將以下代碼更新到迴圈中:
for i in range(num_transactions):
    st.header(f'交易 {i + 1}')
    transaction_number = i + 1
    date_of_entry = st.text_input('入場日期(YYYY-MM-DD):')
    long_or_short = st.selectbox('做多或做空:', ['做多', '做空'])
    stock_ticker = st.text_input('股票代號:')
    number_of_stocks_traded = st.number_input('交易股數:', min_value=0.0, step=0.01)
    price_of_entry = st.number_input('入場價格:', min_value=0.0, step=0.01)
    current_price = st.number_input('當前價格:', min_value=0.0, step=0.01)
    entry_transaction_fees = st.number_input('入場交易費用:', min_value=0.0, step=0.01)
    other_fees = st.number_input('其他費用:', min_value=0.0, step=0.01)
    trading_metric = st.text_input('交易指標(例如通道寬度):')
    date_of_exit = st.text_input('出場日期(YYYY-MM-DD):')
    price_of_exit = st.number_input('出場價格:', min_value=0.0, step=0.01)
    exit_transaction_fees = st.number_input('出場交易費用:', min_value=0.0, step=0.01)
    other_fees_exit = st.number_input('其他出場費用:', min_value=0.0, step=0.01)
    total_entry_spend = number_of_stocks_traded * price_of_entry + current_price + entry_transaction_fees
    total_exit_gain = price_of_exit * number_of_stocks_traded - exit_transaction_fees - other_fees_exit
    profit_loss = total_exit_gain - total_entry_spend
    # 將值添加到字典的相應列中
    columns['交易編號'].append(transaction_number)
    columns['入場日期'].append(date_of_entry)
    columns['做多或做空'].append(long_or_short)
    columns['股票代號'].append(stock_ticker)
    columns['交易股數'].append(number_of_stocks_traded)
    columns['入場價格'].append(price_of_entry)
    columns['當前價格'].append(current_price)
    columns['入場交易費用'].append(entry_transaction_fees)
    columns['其他費用'].append(other_fees)
    columns['總入場花費'].append(total_entry_spend)
    columns['交易指標'].append(trading_metric)
    columns['出場日期'].append(date_of_exit)
    columns['出場價格'].append(price_of_exit)
    columns['出場交易費用'].append(exit_transaction_fees)
    columns['其他費用'].append(other_fees_exit)
    columns['總出場收益'].append(total_exit_gain)
    columns['盈虧'].append(profit_loss)
    columns['入場評分'].append('')
    columns['出場評分'].append('')
    columns['交易評分'].append('')
5步:此外,借助Python及其強大的可視化庫(如matplotlib或seaborn),您可以基於記錄在交易工作表中的盈虧數據創建深入的視覺化效果。通過將盈虧數據與日期進行繪製,您可以在視覺上對自己的交易績效有更深入的了解。
要生成盈虧的視覺化效果,您可以利用從交易工作表生成的Excel表格中存儲的數據。首先,導入必要的庫:接下來,將Excel文件讀取到DataFrame中:假設您的Excel表格中有一個名為「Date of Entry」的列,其中包含日期,以及一個名為「Profit/Loss」的列,代表每筆交易的盈虧情況,您可以創建一個折線圖來視覺化隨時間累計的盈虧情況。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('transaction_logs.xlsx')
# Convert the "Date of Entry" column to datetime data type
df['Date of Entry'] = pd.to_datetime(df['Date of Entry'])
# Sort the DataFrame by date
df.sort_values('Date of Entry', inplace=True)
# Calculate the cumulative sum of profit/loss
df['Cumulative Profit/Loss'] = df['Profit/Loss'].cumsum()
# Create the plot
plt.figure(figsize=(10, 6))
plt.plot(df['Date of Entry'], df['Cumulative Profit/Loss'])
plt.title('Cumulative Profit/Loss Over Time')
plt.xlabel('Date')
plt.ylabel('Cumulative Profit/Loss')
plt.xticks(rotation=45)
plt.grid(True)
# Display the plot
plt.show()
第6步:保存工作表 在這一點上,用戶已經輸入了所有必要的交易細節。要將交易工作表保存為Excel文件,在迴圈之後添加以下代碼:
# 從字典創建DataFrame
df = pd.DataFrame(columns)
# 將DataFrame保存為CSV文件
df.to_excel('transaction_logs.xlsx', index=False)
st.success('交易工作表已保存為「transaction_logs.xlsx」')
第7步:運行應用程序 要運行應用程序,打開終端或命令提示符,切換到項目目錄並執行以下命令:
streamlit run trading_worksheet.py
結論: 在本逐步指南中,我們展示了如何使用Python和Streamlit庫來創建交易工作表,並參考了亞歷山大·埃爾德的《進入我的交易室》一書中的原則。通過遵循本指南,您可以開發一個定制的工具,用於記錄和分析您的股票交易紀錄,幫助您深入了解自己的績效並為未來的交易策略做出基於數據的決策。隨著Python的靈活性和埃爾德博士的原則,您將能夠建立一個強大的交易系統。祝您交易愉快!
--
檢視以上AI產生的程式碼和文字,可以很坦白的說正確率尤其是程式碼部份極高。拜chatGPT大量閱讀程式碼之賜,現在的AI已經可以準確地寫出提示明確的程式碼。在文字部份也是基本符合給出的提示需求。最後產生出來的web服務測試過後略為修改一點點也可以正確啟用。如此一來AI已經可以幫助我們大幅度減少所需要的工時,而讓我們尤其是交易者可以專心思考重要的細節,如策略條件,產生何種技術分析。若是分析師也可以快速產生所需要的文字說明。
各位要不要也試試看呢?
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
滿地AI使用與AI四大天王消息,你聽累了,還是一股創業激情? 最近,你是不是被鋪天蓋地的AI新聞轟炸到頭昏腦脹?黃仁勳、李開復、Sam Altman、Demis Hassabis...這些AI界的風雲人物,他們的創業故事、人生哲學、甚至穿搭品味,都被媒體翻了個底朝天。彷彿打開任何一個社群媒體,都能
Thumbnail
如果要說2023的熱門話題,AI人工智慧一定是榜上有名的吧! 然而隨著越來越多的AI工具出現,你內心一定會有個疑問... 人類到底會被AI取代? 我認為,AI能取代的是「重複性高」的工作,而不是所有工作。
Thumbnail
相信各位朋友們對於 ChatGPT, AI 都不陌生,但實際上你是否已經有在工作流程中導入 AI 並且運用它來實現工作任務了呢?又或是你一直煩惱或疑惑著不曉得該如何將 AI 納入工作流程中、又可以如何幫助我們提升工作效率呢?NoTime NoCode 今天和你分享 7 個實用的 AI 自動化工作應用
Thumbnail
日記寫作不僅適合喜歡記錄生活的人,更適合在工作中希望不斷進步的職場人士! 通過日記,我們可以反思一天的所見所聞,並從中獲取成長與改變的機會。 而現在有了GPT4,我們的日記寫作更能提升到新的層次,在生活和工作中獲得更多收獲🤯! 下面3個步驟,是我雇用AI以後,用日記打造更好自己,每天都會做的3個步
Thumbnail
對於希望建立個人反思習慣的你, 這篇文章將教你如何利用AI輔助進行有效的反思, 並將這些反思轉化為具體的行動計劃! 步驟1 - 一分鐘自言自語,捕捉潛意識:在手機或電腦上開啟語音辨識功能,接著就進行一分鐘的自言自語!不要想太多,就說出你此刻的想法和感受吧!你會發現,這將幫助你探究自己潛意識中的關注點
Thumbnail
這篇來寫,嘗試用GPT4解決工作中,一個讓我渾身難受的問題。 任務說明 我要做的事情是,把word檔中表格的部分資訊擷取出來。下圖的示範表格即是一例。 我需要存取表格中特定元素資訊,例如 Net Calorific Value,我得存下Min. 4,750這個訊息,同理可知,Total Sulfur
Thumbnail
這一篇是Lora系列文的最後一篇,講一下如何使用Lora,如果你已經懂的使用Lora那可以跳過這一篇。
Thumbnail
這邊繼續上一集的內容,進入這一章節時,你應該是已經安裝好stable diffusion webui跟Kohya's GUI了。 這一章就真的要開始準備訓練Lora模型了,步驟有點雜,我拆成四個小步驟來看,這一章節也是最重要的,以後忘了步驟時,也只要回頭來看這一篇就行了。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
滿地AI使用與AI四大天王消息,你聽累了,還是一股創業激情? 最近,你是不是被鋪天蓋地的AI新聞轟炸到頭昏腦脹?黃仁勳、李開復、Sam Altman、Demis Hassabis...這些AI界的風雲人物,他們的創業故事、人生哲學、甚至穿搭品味,都被媒體翻了個底朝天。彷彿打開任何一個社群媒體,都能
Thumbnail
如果要說2023的熱門話題,AI人工智慧一定是榜上有名的吧! 然而隨著越來越多的AI工具出現,你內心一定會有個疑問... 人類到底會被AI取代? 我認為,AI能取代的是「重複性高」的工作,而不是所有工作。
Thumbnail
相信各位朋友們對於 ChatGPT, AI 都不陌生,但實際上你是否已經有在工作流程中導入 AI 並且運用它來實現工作任務了呢?又或是你一直煩惱或疑惑著不曉得該如何將 AI 納入工作流程中、又可以如何幫助我們提升工作效率呢?NoTime NoCode 今天和你分享 7 個實用的 AI 自動化工作應用
Thumbnail
日記寫作不僅適合喜歡記錄生活的人,更適合在工作中希望不斷進步的職場人士! 通過日記,我們可以反思一天的所見所聞,並從中獲取成長與改變的機會。 而現在有了GPT4,我們的日記寫作更能提升到新的層次,在生活和工作中獲得更多收獲🤯! 下面3個步驟,是我雇用AI以後,用日記打造更好自己,每天都會做的3個步
Thumbnail
對於希望建立個人反思習慣的你, 這篇文章將教你如何利用AI輔助進行有效的反思, 並將這些反思轉化為具體的行動計劃! 步驟1 - 一分鐘自言自語,捕捉潛意識:在手機或電腦上開啟語音辨識功能,接著就進行一分鐘的自言自語!不要想太多,就說出你此刻的想法和感受吧!你會發現,這將幫助你探究自己潛意識中的關注點
Thumbnail
這篇來寫,嘗試用GPT4解決工作中,一個讓我渾身難受的問題。 任務說明 我要做的事情是,把word檔中表格的部分資訊擷取出來。下圖的示範表格即是一例。 我需要存取表格中特定元素資訊,例如 Net Calorific Value,我得存下Min. 4,750這個訊息,同理可知,Total Sulfur
Thumbnail
這一篇是Lora系列文的最後一篇,講一下如何使用Lora,如果你已經懂的使用Lora那可以跳過這一篇。
Thumbnail
這邊繼續上一集的內容,進入這一章節時,你應該是已經安裝好stable diffusion webui跟Kohya's GUI了。 這一章就真的要開始準備訓練Lora模型了,步驟有點雜,我拆成四個小步驟來看,這一章節也是最重要的,以後忘了步驟時,也只要回頭來看這一篇就行了。