嘗試不寫任何代碼完全交由chatgpt做一個股票預測模型之第一部曲

更新於 2023/02/15閱讀時間約 17 分鐘
  • 文內如有投資理財相關經驗、知識、資訊等內容,皆為創作者個人分享行為。
  • 有價證券、指數與衍生性商品之數據資料,僅供輔助說明之用,不代表創作者投資決策之推介及建議。
  • 閱讀同時,請審慎思考自身條件及自我決策,並應有為決策負責之事前認知。
  • 方格子希望您能從這些分享內容汲取投資養份,養成獨立思考的能力、判斷、行動,成就最適合您的投資理財模式。
機器人會幫助我們獲得財務自由嗎?
毫無疑問,OpenAI 的 ChatGPT 非常出色!
我喜歡寫有關金融市場的文章,尤其是從數據科學的角度。
不用說,這個人工智能工具對我來說形成了一個很好的交集;
這能滿足我內心的書呆子,同時證明這工具對追求財務自由有價值嗎?
我問了一個非常直率的問題,直接對其進行了測試:
啊等等,我忘了我的禮貌!
好吧……很明顯,這種直接的提問是行不通的
可是等等!也許換種方式問會奏效?
如果我們要求它幫助我們編寫一些代碼來預測價格
他寫得出來嗎?
第 1 步 — 要求 ChatGPT 編寫一些代碼
首先,我讓 AI 給我寫一些代碼來預測股票價格。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.arima_model import ARIMA

# 导入数据
df = pd.read_csv('stock_prices.csv', parse_dates=['date'], index_col='date')
train_data = df[:'2021-09-30']
test_data = df['2021-10-01':]

# 可视化数据
plt.plot(train_data)
plt.title('Stock Prices')
plt.xlabel('Date')
plt.ylabel('Price')
plt.show()

# 拟合ARIMA模型
model = ARIMA(train_data, order=(1,1,1))
model_fit = model.fit()

# 预测测试数据
start_date = test_data.index[0]
end_date = test_data.index[-1]
pred = model_fit.predict(start=start_date, end=end_date)

# 可视化预测结果
plt.plot(train_data, label='Training Data')
plt.plot(test_data, label='Test Data')
plt.plot(pred, label='Predicted Data')
plt.title('Stock Prices Prediction')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.show()
挖還不錯他還給了我一些解釋
这个示例代码导入了股票价格数据,可视化了价格趋势,并使用ARIMA模型拟合了历史数据,并进行了预测。但需要注意的是,这个模型是非常简单的,并不能做出准确的预测,因为它没有考虑到所有可能的因素和变量。
ok我貼到colab去實際執行
啊……好像我們這裡有問題。我們沒有文件 stock_prices.csv。但或許 ChatGPT 也能在這方面幫助我們? 🤔
第 2 步 — 要求 ChatGPT 修復錯誤

好的,讓我們修復錯誤。

看起來可以用來下載股票價格讓我們開始吧!
好的……讓我們要求它修復錯誤:
ok成功了
讓我們來看一下資料
既然有了資料我們再來重新執行一次第一步的代碼
ok…..看來還有些問題,我們請chatgpt幫忙修正
ok看來他知道他哪裡寫錯並給了更新後的版本
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA

# 读取csv文件并将日期列指定为索引列
df = pd.read_csv('stock_prices.csv', parse_dates=['Date'], index_col='Date')

# 可视化股票价格时间序列数据
plt.plot(df)
plt.title('Stock Prices')
plt.xlabel('Date')
plt.ylabel('Price')
plt.show()

# 将数据拆分为训练集和测试集
train_data = df.iloc[:-30]
test_data = df.iloc[-30:]

# 创建ARIMA模型并训练
model = ARIMA(train_data, order=(1, 1, 1))
model_fit = model.fit()

# 使用模型进行预测
predictions = model_fit.predict(start=len(train_data), end=len(df)-1, dynamic=False)

# 可视化预测结果和测试集
plt.plot(test_data.index, test_data.values, label='Actual')
plt.plot(predictions.index, predictions.values, label='Predicted')
plt.title('Stock Price Prediction')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.show()
實際執行:
ok寫程式嘛debug是很正常的事情,再度要求chatgpt幫忙debug
原來是因為ARIMA模型需要的是單變量時間序列數據,因此CHATGPT
知道他寫錯了重新寫了代碼給我
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA

# 读取csv文件并将日期列指定为索引列
df = pd.read_csv('stock_prices.csv', usecols=['Date', 'Close'], parse_dates=['Date'], index_col='Date')

# 可视化股票价格时间序列数据
plt.plot(df)
plt.title('Stock Prices')
plt.xlabel('Date')
plt.ylabel('Price')
plt.show()

# 将数据拆分为训练集和测试集
train_data = df.iloc[:-30]
test_data = df.iloc[-30:]

# 创建ARIMA模型并训练
model = ARIMA(train_data, order=(1, 1, 1))
model_fit = model.fit()

# 使用模型进行预测
predictions = model_fit.predict(start=len(train_data), end=len(df)-1, dynamic=False)

# 可视化预测结果和测试集
plt.plot(test_data.index, test_data.values, label='Actual')
plt.plot(predictions.index, predictions.values, label='Predicted')
plt.title('Stock Price Prediction')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.show()
OK還是有問題依樣請CHATGPT反省
OK新的修正後的代碼:
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA

# 读取csv文件并将日期列指定为索引列
df = pd.read_csv('stock_prices.csv', usecols=['Date', 'Close'], parse_dates=['Date'], index_col='Date')

# 转换日期格式
df.index = pd.to_datetime(df.index)

# 可视化股票价格时间序列数据
plt.plot(df)
plt.title('Stock Prices')
plt.xlabel('Date')
plt.ylabel('Price')
plt.show()

# 将数据拆分为训练集和测试集
train_data = df.iloc[:-30]
test_data = df.iloc[-30:]

# 创建ARIMA模型并训练
model = ARIMA(train_data, order=(1, 1, 1))
model_fit = model.fit()

# 使用模型进行预测
predictions = model_fit.predict(start=len(train_data), end=len(df)-1, dynamic=False)

# 可视化预测结果和测试集
plt.plot(test_data.index, test_data.values, label='Actual')
plt.plot(predictions.index, predictions.values, label='Predicted')
plt.title('Stock Price Prediction')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.show()
執行:
OK還是一樣我繼續追問
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA

# 读取csv文件并将日期列指定为索引列
df = pd.read_csv('stock_prices.csv', usecols=['Date', 'Close'], parse_dates=['Date'], index_col='Date')

# 将数据拆分为训练集和测试集
train_data = df.iloc[:-30]
test_data = df.iloc[-30:]

# 创建ARIMA模型并训练
model = ARIMA(train_data, order=(1, 1, 1))
model_fit = model.fit()

# 使用模型进行预测
predictions = model_fit.predict(start=len(train_data), end=len(df)-1, dynamic=False)

# 可视化预测结果和测试集
plt.plot(test_data.index, test_data.values, label='Actual')
plt.plot(predictions.index, predictions.values, label='Predicted')
plt.title('Stock Price Prediction')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()

# 设置x轴刻度
plt.xticks(pd.date_range(test_data.index[0], test_data.index[-1], freq='W'))

plt.show()
看來他設置了x轴刻度
OK在執行看看
好這次完全沒有出現錯誤訊息不過圖片怪怪的
看看CHATGPT有沒有辦法解決
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA

# 读取csv文件并将日期列指定为索引列
df = pd.read_csv('stock_prices.csv', usecols=['Date', 'Close'], parse_dates=['Date'], index_col='Date')

# 将数据拆分为训练集和测试集
train_data = df.iloc[:-30]
test_data = df.iloc[-30:]

# 创建ARIMA模型并训练
model = ARIMA(train_data, order=(1, 1, 1))
model_fit = model.fit()

# 使用模型进行预测
predictions = model_fit.predict(start=len(train_data), end=len(df)-1, dynamic=False)

# 调整预测值的索引
predictions.index = pd.date_range(start=train_data.index[-1], periods=len(predictions), freq='D')[1:]

# 可视化预测结果和测试集
plt.plot(test_data.index, test_data.values, label='Actual')
plt.plot(predictions.index, predictions.values, label='Predicted')
plt.title('Stock Price Prediction')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()

# 设置x轴刻度
plt.xticks(pd.date_range(test_data.index[0], test_data.index[-1], freq='W'))

plt.show()
ok持續修正
來試試看照著他所說的修改
ok成功了沒有出現錯誤圖也正常顯示大功告成ya!!!
只是看起來預測值跟實際值差有點多啊…
看一下有沒有辦法讓模型更準確一些
好的這次他沒有幫忙修正代碼而是直接明白地說股票價格預測是一個複雜的問題單純基於時間序列分析的簡單模型是無法捕捉這其他影響股票價格的因素,並且告訴我如果想要提升預測經度可以考慮以下幾個方向,並列表示地把
1到4點整理出來,最後總結因為這是一個複雜的問題不存在一種方法可以達到
100%準確性,模型預測結果還要跟市場趨勢,分析師預測做比較來獲得更全面的預測結果
ok這個實驗算是結束了,先不說精準度的問題chatgpt確實可以自行撰寫出預測股價的代碼,並且在過程中如果代碼有問題他也有辦法自行理解問題並修正
最後在精準度的問題上他也給了四點建議,如果要寫我當然可以繼續從這四點建議追問下去,不過本文就會太長,因此本文就在這裡告一段落未來有機會
我再從這四點繼續追問chatgpt
總結
我可以看到chatgpt是一個超級強大的助手,特別是對於像我這樣的內容創作者。過去身為一個工程師我常常為一篇文章編寫大量代碼,但在這篇文章中,我什麼也沒寫。確實是一個不錯的休息🙂
感謝您的閱讀,希望您喜歡這篇文章!
如果您想要來支持我的內容創作那麼您可以用
請我喝杯咖啡讓我更有創作的熱情跟動力🙂
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
人工智能工作經驗跟研究
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你有沒有錯過 Binance 上的一個大型加密硬幣泵? 也許您正忙於工作,或者只是不夠快而無法抓住機會。 這是一種令人沮喪的感覺,尤其是當你看到價格在你眼前飛漲時。 但是,如果有一種方法可以實時識別這些爆漲? 在本文中,我們將向您展示如何使用 Python 快速輕鬆地識別加密貨幣暴漲。
首先可以這樣寫告訴chatgpt你希望他表現得像個linux terminal 不用寫解釋,只要回覆linux terminal應該回復的東西即可
google的以圖搜圖相信大家都不陌生,非常好用 本人這篇文章是紀錄一下自己如何利用本身在人工智能方面的知識 土法煉鋼一個以圖搜圖算法,至於跟google一不一樣就待討論了 首先以圖搜圖本身是一個相似度比對問題,人類怎麼做相似度比對呢? 好比給你一堆圖片,之後要求你選一張喜歡的,之後把剩下的圖片都拿
Google JAX是一種用於轉換數值函數的機器學習框架。 它被描述為匯集了autograd(通過函數微分自動獲得梯度函數)和TensorFlow的XLA(加速線性代數)的修改版本。 它旨在盡可能地遵循NumPy的結構和工作流程,並與各種現有框架(如TensorFlow和PyTorch)一起工作。
世界目前正處於人工智能 (AI) 革命之中。 人工智能有可能改變和徹底改變許多行業和我們生活的方方面面, 而且越來越明顯的是,未來世界將嚴重依賴人工智能。 人工智能將產生重大影響的關鍵領域之一是自動化領域。 自動化是指在沒有人工干預的情況下使用技術來執行任務,已經存在了幾十年。 然而,人工智能的
你有沒有錯過 Binance 上的一個大型加密硬幣泵? 也許您正忙於工作,或者只是不夠快而無法抓住機會。 這是一種令人沮喪的感覺,尤其是當你看到價格在你眼前飛漲時。 但是,如果有一種方法可以實時識別這些爆漲? 在本文中,我們將向您展示如何使用 Python 快速輕鬆地識別加密貨幣暴漲。
首先可以這樣寫告訴chatgpt你希望他表現得像個linux terminal 不用寫解釋,只要回覆linux terminal應該回復的東西即可
google的以圖搜圖相信大家都不陌生,非常好用 本人這篇文章是紀錄一下自己如何利用本身在人工智能方面的知識 土法煉鋼一個以圖搜圖算法,至於跟google一不一樣就待討論了 首先以圖搜圖本身是一個相似度比對問題,人類怎麼做相似度比對呢? 好比給你一堆圖片,之後要求你選一張喜歡的,之後把剩下的圖片都拿
Google JAX是一種用於轉換數值函數的機器學習框架。 它被描述為匯集了autograd(通過函數微分自動獲得梯度函數)和TensorFlow的XLA(加速線性代數)的修改版本。 它旨在盡可能地遵循NumPy的結構和工作流程,並與各種現有框架(如TensorFlow和PyTorch)一起工作。
世界目前正處於人工智能 (AI) 革命之中。 人工智能有可能改變和徹底改變許多行業和我們生活的方方面面, 而且越來越明顯的是,未來世界將嚴重依賴人工智能。 人工智能將產生重大影響的關鍵領域之一是自動化領域。 自動化是指在沒有人工干預的情況下使用技術來執行任務,已經存在了幾十年。 然而,人工智能的
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
【不夠善良的我們】究竟不夠善良的部份是什麼!? 這並不是一部講述愛情、親情甚至友情的故事,整個故事到最後揭露了過程中的各種"惡意",又是從哪裡感受到的呢!? 2024最夯的台劇【不夠善良的我們】,一次看到林依晨、許瑋甯、賀軍翔、柯震東同台飆戲,一步步帶我們走進人性的真實樣貌!!
Thumbnail
文章前警語: 小火車的投資筆記主要為透過基本面、財報做策略篩選並回測勝率後,(策略為部位-20%即停損,同時持有約240-300日)再加上個人研究公司的知識心得分享,並不帶有任何推薦意味、內容也並非投資意見。不會有任何目標價。希望您看完文章後,養成自我獨立思考的習慣。謹慎考慮,審慎投資。 你
Thumbnail
TenMax 作為台灣零售媒體第一品牌,秉持深度專業的理念,為你整理零售媒體最新發展與觀點分析,帶你更全面瞭解零售媒體產業動向。 
Thumbnail
最近,某房屋仲介公司主辦了一個名為「埋下誠實的種子」的徵稿活動。我是發自內心認為這不是一個好的題目,即使你立意良善,希望孩子體會誠實的意義,可是在獎金的利誘下,孩子反而可能寫出不誠實的內容,和你的立意背道而馳。
Thumbnail
重新整理以免讀者看不懂,日後更新以日期標註在,加在《後記》之中…… 以戰止戰迫不得已……所幸黎明將至…… 咱有把握這就是最終問題根源 親愛的本蛙訂閱讀者,長期日以繼夜鬧場,已經妨礙平台秩序與諸位權益,身為平台作者,有權利要求同平台作者,尊重本蛙發文權益,日後不再從事挑釁行為,這些要求絕對合理。
Thumbnail
  前幾年木曜四超玩開始拍攝一日系列,我一直很敬佩主持人邰哥,一直勇於挑戰各種工作,像是一日大客車司機,真的去考了大客車駕駛執照;又或者是一日氣象觀測員,真的到了玉山北峰,令人動容。   小時候總夢想著要成為太空人一天,可惜後來對理科沒什麼興趣,也就慢慢淡忘了這件事。看到這個問題才又想起了兒時的夢,
Thumbnail
意識到我必須讓自己平靜下來,我起身去廚房,替自己倒了一杯水。我慢慢地喝水,讓自己平靜下來。 因著我與以往爭吵時不同的回應模式,先生也停了下來。一個喝水的舉動,讓我替雙方都爭取了冷靜下來的時間。 從此,我找到了切換狀態的鑰匙:讓自己從被情緒牽著走的原始人,切換成能好好說話的高情商人類。
Thumbnail
在某次的爭吵時,先生喊著「不然我們離婚啊!」 以前的我,會因為對方隨口就用「分手」或是「離婚」當氣話,而希望對方道歉,想要說服對方「他錯在哪裡」。 那天,正念冥想帶給我的收穫,讓我選了截然不同的做法。我在穩定自己能量後,化解了這場面臨離婚危機的爭吵,修復婚姻。
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
【不夠善良的我們】究竟不夠善良的部份是什麼!? 這並不是一部講述愛情、親情甚至友情的故事,整個故事到最後揭露了過程中的各種"惡意",又是從哪裡感受到的呢!? 2024最夯的台劇【不夠善良的我們】,一次看到林依晨、許瑋甯、賀軍翔、柯震東同台飆戲,一步步帶我們走進人性的真實樣貌!!
Thumbnail
文章前警語: 小火車的投資筆記主要為透過基本面、財報做策略篩選並回測勝率後,(策略為部位-20%即停損,同時持有約240-300日)再加上個人研究公司的知識心得分享,並不帶有任何推薦意味、內容也並非投資意見。不會有任何目標價。希望您看完文章後,養成自我獨立思考的習慣。謹慎考慮,審慎投資。 你
Thumbnail
TenMax 作為台灣零售媒體第一品牌,秉持深度專業的理念,為你整理零售媒體最新發展與觀點分析,帶你更全面瞭解零售媒體產業動向。 
Thumbnail
最近,某房屋仲介公司主辦了一個名為「埋下誠實的種子」的徵稿活動。我是發自內心認為這不是一個好的題目,即使你立意良善,希望孩子體會誠實的意義,可是在獎金的利誘下,孩子反而可能寫出不誠實的內容,和你的立意背道而馳。
Thumbnail
重新整理以免讀者看不懂,日後更新以日期標註在,加在《後記》之中…… 以戰止戰迫不得已……所幸黎明將至…… 咱有把握這就是最終問題根源 親愛的本蛙訂閱讀者,長期日以繼夜鬧場,已經妨礙平台秩序與諸位權益,身為平台作者,有權利要求同平台作者,尊重本蛙發文權益,日後不再從事挑釁行為,這些要求絕對合理。
Thumbnail
  前幾年木曜四超玩開始拍攝一日系列,我一直很敬佩主持人邰哥,一直勇於挑戰各種工作,像是一日大客車司機,真的去考了大客車駕駛執照;又或者是一日氣象觀測員,真的到了玉山北峰,令人動容。   小時候總夢想著要成為太空人一天,可惜後來對理科沒什麼興趣,也就慢慢淡忘了這件事。看到這個問題才又想起了兒時的夢,
Thumbnail
意識到我必須讓自己平靜下來,我起身去廚房,替自己倒了一杯水。我慢慢地喝水,讓自己平靜下來。 因著我與以往爭吵時不同的回應模式,先生也停了下來。一個喝水的舉動,讓我替雙方都爭取了冷靜下來的時間。 從此,我找到了切換狀態的鑰匙:讓自己從被情緒牽著走的原始人,切換成能好好說話的高情商人類。
Thumbnail
在某次的爭吵時,先生喊著「不然我們離婚啊!」 以前的我,會因為對方隨口就用「分手」或是「離婚」當氣話,而希望對方道歉,想要說服對方「他錯在哪裡」。 那天,正念冥想帶給我的收穫,讓我選了截然不同的做法。我在穩定自己能量後,化解了這場面臨離婚危機的爭吵,修復婚姻。