跳到主要內容

AI程式小實驗 - 定期定額績效試算


最近我在嘗試用AI學習寫程式,想不到我這個coding能力很弱的資訊系逃兵,在有生之年還能和AI家教學習寫程式,真的是非常感動啊😍

我在研究所念的是資訊管理,不過其實我是在大三的時候才決定轉換跑道。

在那之前,我就讀公共行政系,可能很多人都不知道這個科系是做什麼的?坦白說其實我也不太清楚。在大學聯考結束選填志願的時候,我是用刪去法,根據我粗淺的認知,把沒有興趣的科系刪除,剩下的再依據分數排序填寫。

原本我填寫的領域是法律、政治、社會,結果錄取了這個科系,但真正進了大學才發現,我對這個領域其實完全不了解,對這個科系也不感興趣,一直到了大三時,覺得成年了應該為自己的人生負責, 才開始思考未來的方向(汗顏😓)。

後來決定轉換跑道,準備報考當時最熱門的資訊網路相關研究所,當然,順利轉換跑道很幸運,不過由於基礎並不扎實,所以念得有些辛苦。例如程式設計,當時我只能自己看書學習,沒有YT、也沒有老師可以請教,遇到看不懂的地方,除了多看幾本書對照,好像也沒有其它的方法。(順帶一提,那大概是我學生時期最用功唸書的一段日子,也真的去報名補習)

不過現在有了AI真的非常方便,不僅可以直接幫我們寫程式,甚至還可以教我們怎麼寫程式,逐段鉅細靡遺地的解說程式的內容,就像一個免費的家教一樣,而且不會累也不會有脾氣,真的是非常方便。

這大大地降低了學習的門檻,我相信現在的學生(或非學生),只要有心,都可以透過AI獲得很好的學習體驗,就算不是資訊背景,也可以很快學會運用程式軟體的基礎能力,幫自己提升工作效率。

我最近就嘗試請AI寫了幾個簡單的投資策略,測試我的投資想法,雖然還很陽春,但過程相當有趣,而且在整理教案時,也能夠有更實際的數據佐證,這是我體驗到AI帶來的便利。

以下是我用AI寫的一個小工具,計算每月定期定額投資1萬元在指定的標的上,所能夠得到的年化報酬率結果。對於想要參與「金雞計劃」的朋友,就可以用這個工具來實測投資標的以往的績效,作為未來的參考。

我運用的是TradingView pine script (v6)這個平台,有興趣的朋友可以複製以下的程式碼測試看看,當然,也歡迎發揮創意利用AI練習撰寫新的程式。說不定你會有新的發現!

🤔看完本文之後請想一想:
  1. 你聽過「量化交易」嗎?什麼是「量化交易」?你有興趣嘗試嗎?


以下是程式碼(若有疏漏謬誤之處也歡迎指教)

//@version=6
strategy("定期定額 DCA", overlay=true, initial_capital=0, currency=currency.USD, calc_on_order_fills=true, calc_on_every_tick=true)

//------------------------------------------------------------------
// 使用者輸入:設定投資的開始與結束日期
// 請依 ISO-8601 格式輸入 (例如 "2020-01-01T00:00:00")
//
// 注意:本策略僅於 startDate ~ endDate 區間內進行定期定額投資
//------------------------------------------------------------------
startDate = input.time(timestamp("2010-01-01T00:00:00"), "Start Date")
endDate   = input.time(timestamp("2024-12-31T23:59:59"), "End Date")

//------------------------------------------------------------------
// 定義 XIRR 函數:根據現金流及其發生時間,利用二分法求解 IRR
// XIRR 公式: Σ[ CF[i] / (1 + r)^((t[i]-t0)/365) ] = 0
//------------------------------------------------------------------
f_xirr(_flows, _times) =>
    n = array.size(_flows)
    if n < 2
        na
    else
        rLow = -0.99
        rHigh = 10.0
        // 以 50 次迭代達到足夠精度
        for i = 0 to 50
            rMid = (rLow + rHigh) / 2.0
            npv = 0.0
            t0 = array.get(_times, 0)
            for j = 0 to n - 1
                cf = array.get(_flows, j)
                t  = array.get(_times, j)
                // 將毫秒轉換為天數 (1 天 = 86,400,000 毫秒)
                days = (t - t0) / 86400000.0
                npv += cf / math.pow(1 + rMid, days / 365.0)
            if npv > 0
                rLow := rMid
            else
                rHigh := rMid
        (rLow + rHigh) / 2.0

//------------------------------------------------------------------
// 宣告全域變數:用來記錄每次投資的現金流與時間、累計買進的股數以及總投入金額
//------------------------------------------------------------------
var float[] cashFlows    = array.new_float()
var int[]   cashFlowTimes = array.new_int()
var float   totalShares   = 0.0
var float   totalInvested = 0.0

// 用來確保僅在設定期間結束後首次計算 XIRR 與累積報酬率
var bool computedResults = false

//------------------------------------------------------------------
// 判斷是否為新月份的第一根 K 線(month open)
// ta.change(time("M")) 回傳數值,需與 0 比較取得布林值
//------------------------------------------------------------------
is_new_month = ta.change(time("M")) != 0

//------------------------------------------------------------------
// 每月定期定額投資 10000 元:僅在使用者設定的期間內進行
//------------------------------------------------------------------
if is_new_month and time >= startDate and time <= endDate
    shares_to_buy = 10000 / open
    totalShares += shares_to_buy
    totalInvested += 10000
    // 記錄投入的現金流(支出以負值表示)
    array.push(cashFlows, -10000)
    array.push(cashFlowTimes, time)
    // 下單買入(strategy.entry 便於在策略測試器中觀察交易)
    strategy.entry("Buy", strategy.long, qty = shares_to_buy)

//------------------------------------------------------------------
// 當 bar 的時間大於或等於使用者設定的結束日期,且尚未計算結果時:
// 1. 計算最終組合價值 (持有股數 * 當前收盤價)
// 2. 加入正向現金流並計算 XIRR
// 3. 計算總累積報酬率 = (最終組合價值 - 總投入金額) / 總投入金額 * 100%
// 4. 利用 label 顯示結果
//------------------------------------------------------------------
if not computedResults and time >= endDate
    finalValue = totalShares * close
    array.push(cashFlows, finalValue)
    array.push(cashFlowTimes, time)
    irr = f_xirr(cashFlows, cashFlowTimes)
    computedResults := true
   
    // 總累積報酬率 (%)
    cumulativeReturn = (finalValue - totalInvested) / totalInvested * 100.0

    // 顯示 XIRR,轉換為百分比格式
    label.new(bar_index, high, text="XIRR: " + str.format("{0,number,#.##}%", irr * 100), style=label.style_label_up, color=color.green, textcolor=color.white)
   
    // 顯示總累積報酬率
    label.new(bar_index, high * 0.95, text="累積報酬率: " + str.format("{0,number,#.##}%", cumulativeReturn), style=label.style_label_up, color=color.blue, textcolor=color.white)

留言

這個網誌中的熱門文章

給爸媽的「幸福家庭投資長」線上讀書會 - 購書讀者免費參與

學員分享(高雄 歐先生, 50歲, 2個孩子的爸) 過去我只知道錢越多越好,卻因為沒有明確目標,常陷入焦慮。豬力安老師幫我釐清退休目標,以終為始,就像先畫好靶再射箭,不再盲目追高殺低。現在投資變得輕鬆無負擔,心境也更安定!感謝老師,讓我懂得善用複利的力量,退休終於有了清晰的路徑! 🚨時間不等人,退休規劃,你準備好了嗎? 你是家裡的財務總管? 😟 擔心通膨物價越來越高,錢錢的價值越來越薄?  😕 看著朋友的股票又創新高,自己卻不知道該買什麼?  【一次投資,終身成長】讓你在財務自由的路上不孤單! 🎯 這場讀書會,不只是讀一本書,更是一段成長的開始!   我常說,學習投資理財的終極目標就是要安心退休 關鍵在於,如何有效地將辛苦工作的收入,轉換成用錢賺錢的資產收入  你買對股票、基金了嗎?你的投資真的能實現退休目標嗎? 人兩腳,錢四腳,用對方法和工具才能賺得更省力😊💰 💰 超值回饋 ✅ 加入LINE社群,與志同道合的夥伴一起學習、長期成長  ✅ 加購第2本書(分送親友),就能受邀參加第2場進階讀書會,認識媲美股神的投資法,還有書上沒說的獨家指標,觀察企業獲利的成長脈絡,對投資更安心   📌 適合這樣的你   ✔️ 想擁有清晰的財務目標,不再焦慮迷茫 😌   ✔️ 希望掌握適合自己的投資工具,讓錢真正幫你工作 💼   ✔️ 想建立正確的風險管理觀念,市場震盪時能穩穩應對 😎   投資自己,是報酬率最高的選擇! 別再錯過成長的機會,現在行動,為未來打造更穩固的財富基石! 🏡「幸福家庭投資長」線上讀書會 👦對象  想釐清退休目標的家長、重視理財教育的朋友 🕒時間  以下方報名表為準 🏢地點  Google Meet線上會議 😊內容  只要1個小時,6個問題,讓豬力安老師用小學生也能懂的「 金雞計畫 」和「以終為始」的理財觀,帶您做好退休規劃,成為全家的投資支柱💪 🐷講師簡介  專業投資人20年、企業投資教練、親子理財講師、2019年帶孩子用壓歲錢執行 金雞計畫 至今累積投資報酬率75% 🎁驚喜優惠  教練課程原價1萬元,凡購買...

金雞計畫:和孩子一起養成億萬金雞 - 建立孩子的理財素養

最無痛的投資法:只要每天66元,和孩子一起養成億萬金雞 您好:我是Julian,豬力安老師 您知道嗎,只要每天66元,從小開始引導孩子儲蓄投資,等孩子65歲退休時,就有機會養成一隻「億萬金雞母」,備妥財務安全網! 我是專職投資人,當了爸爸之後,一直天真地以為孩子也會「子承父業」對金融交易感興趣。直到2014年經歷了一場中年危機,我才發覺自己的天真,所以開始關注理財教育,思考「小朋友也能學會」的投資理財法。 我從2019年暑假開始,帶著孩子啟動一個為期10年的長期投資實驗,我稱之為「金雞計畫」。 作為公益推廣,我想邀請更多家庭加入這個計畫,帶領您的孩子用壓歲錢(零用錢)養成「金雞母」,和孩子一起追蹤記錄,就算是一個趣味實驗吧😊 歡迎有興趣的大小朋友一起加入,就從現在開始💪 需要費用嗎 這個計畫是公益推廣,不收取任何費用 不過如果您因此而受益,歡迎支持我的書【 學校沒教但孩子一定要學的9堂理財課 】,書中有更詳細的計畫說明 為什麼要推廣「金雞計畫」 身為家長,您是否和我一樣,有著「望子成龍、望女成鳳」的期許和焦慮? 在我的成長過程中,受的是傳統的填鴨式教育,一切分數至上,考好成績才有機會上好學校、上好學校才有機會找好工作、找好工作才有機會獲得好收入、才有好生活...似乎只有取得好成績,人生才有希望。 這是一段痛苦的回憶,除了分數,我不知道自己為何而學?大學聯考放榜選填志願時,我不知道各個科系要學什麼?也不知道自己的人生方向和目標在哪?所以我不希望孩子重蹈覆轍。 我期望孩子有更多的時間可以好好探索、認識自己,找出自己的興趣、熱忱與人生方向。行行出狀元,我相信他們有一天也會在屬於自己的舞台上發光發熱!同時,金雞計畫就是一份提供孩子財務安全保障的計畫! 我看到許多家長投資大量時間、金錢幫孩子安排補習、送進名校,無非是希望孩子更有「競爭力」,這真的能夠保障每個孩子的未來嗎? 金雞計畫參考歷史經驗,只要平均每天66元(每月2000元),及早開始,持之以恆,每個孩子都有機會在退休時養成一隻價值千萬、甚至億萬的「金雞母」,備妥財務安全網! 很可惜,我沒有看到學校課綱或補習班教案有這樣的長期規劃!相較於私校學費、補習費,金雞計畫的C/P值簡直高到爆炸! 媒體常說「贏在起跑點」,但人生本來就不公平,可是我不擔心,因為有了金雞計畫,就算我們的孩子不是學霸,就算工作待遇只是...

2025玩理財夏令營中學班(7~12年級)

💰少年股神養成計畫,就從今年夏天開始! 11歲的時候你在做什麼?課金玩手遊?還是...? 你知道嗎?股神巴菲特11歲就開始投資股票了! 成為投資高手不需要是數學天才,只要掌握正確的理財觀念,懂得用時間滾出複利雪球,你也有機會成為未來的少年股神! 📢全台第一!專業投資人親自授課! 透過超有趣的遊戲與模擬交易,帶你打開金融投資的大門,這些學校沒教的理財生存術,我們全都教給你!  ✨特色單元  🚀少年創業家:寫下你的創業計畫書,從天馬行空到商業提案,讓創意變黃金!  📈模擬交易室:坐上操盤人寶座,在變幻莫測的市場中運籌帷幄,你能Hold住壓力,穩穩賺進人生第一桶金嗎?  🏦ETF設計師:基金這麼多,到底該怎麼選?自己動手設計一檔ETF,就能掌握箇中訣竅囉!  🐣金雞計畫:沒興趣當投資高手?沒關係!學習用簡單有效的方法,讓你的錢自動生錢,退休時抱回千萬資產,連巴菲特都說讚!  🎯 這堂課,最適合這樣的你! ✔想學會如何管理自己的金錢 ✔想學投資、用錢賺錢 ✔想了解金融投資業到底在做什麼 ✔想掌握「財務自由」的秘密  ✔想提早成為一個懂理財的準大人 面對通膨怪獸和低利率的時代,學校沒教的理財黃金法則,我們一次交給你! 或許我們沒能贏在起跑點,但只要現在開始學習,我們都能贏在財富終點! 🔥名額有限,快來報名!讓這個夏天,成為你改變財富未來的起點! 👉對象:升7~12年級優先(4~6年級可參考 小學營隊 ) 👉時間:如下方報名表所示 👉地點: UT Studio  台北市中山區中山北路二段27巷4號B1 (近中山捷運站3號口) 👉內容:   ☑ 專業投資人親授營隊課程5天(價值16,800元)   ☑ 個人化學習成果報告(價值2,000元)   ☑ 豬力安老師親筆簽名書(價值420元)   ☑ 金雞計畫家庭任務(價值800元)   ☑ 爸媽安心退休線上教練課一堂(價值2,880元)   ☑ 營隊豐盛午餐+平安保險(價值1,100元) 總價值24,000元 ! 只要在以下期限前報名,就可以用超值優惠!獲得總價值2萬4千元的豐富內容! 👉優惠:   3/31前特早鳥優惠價12,800/人,2人團報11,800/人...