戰略紀錄

如何用蒙地卡羅模擬股價?

上回我們使用最基本的亂數模擬器方法成功模擬出Mike Trout的上壘率,當抽取出來的亂數小於上壘率時,認定為上壘,而亂數大於上壘率時,則認定為出局,用簡單的大於和小於就可模擬出來的模型,股價模型就稍微複雜些了,基本款的股價路徑模型最少具有二種參數與機率分配假設,背後的數學推導與原理就請大家自行去看財務工程相關的書籍了,我們先列出一個股價過程的理論式如下: 有了最基本的理論公式後,首先,我們必須定義出參數,參數可以描述這個股票的特性,例如新興市場股票與成熟市場股票的報酬率與波動度都不一樣,電信與生技公司的股價也會相當不一樣,所以我們必須要利用過去的資料去推估參數的區間範圍。 mu = 0.1 #資產年化報酬率為10% Std = 0.2 #資產年化波動率為20% dt = 1/252. #模擬路徑為每天,每天經過252分之一年 Copy   第一步:先將理論式轉換為Python的計算語言,記得括號設對位置,再用相對應的科學計算函數帶入公式內 S1 = S0 * np.exp((mu - 0.5…
學程式助教
January 20, 2020
戰略紀錄

機器人理財(Robo-Advisor)真的能幫助到我們嗎?

近兩年機器人理財(Robo-Advisor)這個詞大量出現在金融市場中,也有多家國內外金融機構在推銷這種型態的商品,並大量以智能與人工智慧(AI)來作為行銷的關鍵字,今天就要來仔細的分析幾類我所認識的理財機器人系統。 馬可維茲(Morkowitz)的投資組合理論(Portfolio Theory) 馬可維茲於1952年提出了投資組合理論,將金融市場中的各種資產簡化定義成預期報酬率、標準差與相關係數,在假設以上參數均為已知的狀況下,可以進行規劃求解得出「最小風險投資組合(Minimum Variance Portfolio)」與「最適投資組合(Optimal Portfolio)」,大部分的機器人理財業者均是以此種模型進行操作,除了有諾貝爾經濟學獎的加持外,對於現有的程式撰寫有相當的方便,許多程式均有規劃求解的套件可供使用。 馬可維茲的投資組合理論利用數學嚴謹的證明,資產配置對於投資組合波動度與報酬率有顯著的影響,將多種相關係數低的資產配置在一起,能夠降低投資組合波動度與提高預期的報酬率,例如債券與股票呈現負相關時,能夠配置出風險調整後報酬較高的組合,相對於單一股票或債券。 利用馬可維茲現代投資組合理論的機器人理財平台,通常會利用風險問卷來進行投資人分類,例如年齡、投資期間與風險承受度等,透過背後的評分邏輯將使用者分為三至四個風險屬性,假設情況如下: 投資人屬性 可承受年化波動率 積極型投資人 25%以上 穩健型投資人 15%~25% 保守型投資人 15%以下 利用過去各資產類別的走勢去計算報酬率、波動度與相關係數,作為投資組合評估的相關參數,由使用者作答的風險問卷來對應出可承受年化波動度,再以程式進行目標為「固定風險下的最佳報酬率」的最佳化,就可以得到最佳的權重組合。 Smart Beta Beta這個詞在金融市場中,代表市場報酬的相對於資產的變動係數,例如當S&P 500上漲1%時,你的投資組合上漲0.8%,大致可以說Beta為0.8,大多股票市場指數都是以「市值加權」的方式進行編制,背後邏輯就是每天在幫你追高殺低,以2018年為例,如果持有S&P 500指數而言,就會不斷的幫我們增持FAANG(Facebook, Amazon, Apple,…
學程式助教
January 20, 2020
戰略紀錄

想嚐嚐Javascript,Python,Ruby的味道嗎:工程師必喝的「程式語言咖啡」

  每天打程式的你,有想過程式語言變成咖啡,會是什麼味道嗎? 現在日本推出了一款超爆紅的程式語言咖啡豆「CODE COFFEE」,由日本工程師們挑選出來的! 總共有 C、Java、Perl、Ruby、Python、JavaScript、Go、Swift 八種口味, 如果你是這幾種程式語言的支持者,一定要來試試看XD 最後還可以在 Github 跟其他工程師交流你的飲後感想唷! https://www.youtube.com/watch?v=ftSjvrKB3XU&feature=youtu.be 我們來看看這八種程式語言吧! C語言咖啡豆   「一切的來源--基本語言咖啡」 由咖啡的來源巴西・哥倫比亞,來調配出一切程式語言的基礎–C語言的滋味。 語言特徵:SIMPLE 咖啡特長:來源 主要咖啡豆:巴西、哥倫比亞 價格/内容量:1000日圓(未稅)/100g Java咖啡豆   「歷史悠久、原始語言咖啡」 Java的LOGO就是一杯熱咖啡,這樣應該不難想像它跟咖啡的歷史其實很深遠吧XD…
學程式助教
January 20, 2020
戰略紀錄

學程式主題小聚–【區塊鏈懂不懂】

【區塊鏈懂不懂】 區塊鏈這個東西近幾年來一直是相當熱門的話題,大家也都紛紛加入這個行列,對於區塊鏈你真的懂它的原理嗎?我的回答是:「不懂」 在談到區塊鏈時,我們可以先來聊聊貨幣。 【貨幣是什麼】 〈貨幣的功能〉 交易媒介 計價單位 價值儲存 〈貨幣的演變〉 過去沒有貨幣產生的時代,人們所使用的方式為以物易物,但這種交易方式相當仰賴一個區域的共識,在A地區可能認為一頭牛換一帶米很合理,但在B地區卻認為一頭牛值得兩袋米的價值,因此,在不同地區進行交易,很難取得一定的共識。而後出現了所謂的金屬,但也因為金屬體積龐大,需要很大的儲存空間否金塊難以存放,到了現代,我們所使用的法幣(法定貨幣),由政府所發行的紙幣,成為了一種讓貨幣具有上述3種功能的一項媒介。 〈比特幣的誕生〉 然而,科技的進步促使了數位貨幣的出現,也就是大家現在所熟悉的—「比特幣」,由中本聰所發明,雖然目前仍然沒有人知道他的真實身分到底是誰,但卻也帶起了一股新的風潮。 比特幣是2009年所產生的一項數位資產,透過挖礦的流程來進行網路上的驗證交易。比特幣就像是礦產一般,而執行驗證交易的人則被稱之為礦工,以工作量來衡量成效,亦即努力做多少工作就會有多少收穫,預估在2040年時總量共有2100萬顆。 【區塊鏈原理】 〈錢包的概念〉 其實區塊鏈的原理並不難懂,Nic以錢包的概念作為舉例。只要有算法公式就可以隨機產生一個錢包(就將公式想像成數學的二元一次方程式,就會很容易理解囉!)。以下來看看Nic所提到的區塊鏈的名詞: 錢包地址—公鑰 操作錢包並與其配對的—私鑰 只要有了私鑰,就能夠回推出公鑰(也就是錢包的地址),這裡需要注意的是,只有私鑰可以回推找出公鑰,但不能由公鑰回推找出私鑰唷!說到這裡,一定有人還是會相當好奇,真的沒有辦法從公鑰推出私鑰嗎?這個就需要利用SHA-256加密算法來說明 〈什麼是SHA-256加密算法〉 SHA系列的算法是由美國國家安全局所設計出的一種密碼散列函數,又稱為安全散列算法(Secure Hash Algorithm),其版本有相當多種,而這裡我們所談到的是SHA-256加密算法。SHA-256加密算法可以想像成是:不論你輸入多少字,所得出來的結果都是256位的2進位字串,如此大的數字組合,造成了破解上的困難。所以說,在有SHA-256加密算法這層障礙下,如果你的錢包還是被偷了,那通常都不是因為被破解,而是透拓其他的手段被竊取,很多時候都是自己在沒注意的情況之下,落入別人的陷阱之中,不小心讓人知道你的私鑰 at https://utees.us/。…
學程式助教
January 15, 2020
戰略紀錄

解鎖 AppStore 3種生產力工具常勝軍,你使用了嗎?

追求效率,提高效能的數位化時代 我們今天要來揭開新創環境與團隊中常使用也都是Appstore排行榜上面的常勝軍同學們哈哈哈 像我其實是重度懶癌、拖延症以及很難搞不清楚先後順序 是非常需要有工具來幫我管理我的時程以及事情 之前我看過一部日劇叫作「我要準時下班」,女主角有提過到一個觀念假設你每天花時間找文件,一年就有可能會浪費到150小時 150小時根本超好發揮的啊~為了要狠狠抓緊這150小時,來了解什麼樣的生產力工具能幫助你工作生活吧! Trello 對於排程你的工作、生活與假期總是亂糟糟,沒有一個好地方能幫你收納好你的行程嗎 Trello將待辦事項變成卡片的方式來呈現 你的每個待辦事項都能加以描述也能夠壓Deadline,一旦你的期限快到了Trello會進行提醒的動作唷 也能將你朋友加入至Trello板上面,跟你一起管理你們可能要共同處理的事情 像是旅遊,可以透過每張卡片的標題來進行有效率的溝通也可以朋友與夥伴間記住每個人的任務喔! 我自己是喜歡將卡片加上圖片會更清楚每張卡片是有什麼功能!               Quizlet 由於我近期正在學習Python,初心者真的都要收集與整理超多資訊的 為了練好功,有些好文章好概念都會想保存起來,我都會將筆記放在Quizlet中 也能省下很多時間在我的書籤中找到某個特定網站有我想要的概念 本身是Apple的用戶,但是備忘錄整個分類都超鬆散的~…
學程式助教
January 13, 2020
戰略紀錄

Apple Pay 前往菜市場 免零錢鈔票出門 一鍵支付完成

行動支付近期越來越普及,就算忘了帶錢包出門還是很安心呢! 目前南門市場、台北花市、新北果菜市場等大家熟知的傳統市場已經能使用Apple Pay進行行動支付了,而且不需要刷卡機,只要掃描QRCode 就能使用啦~ 走進南門市場 體驗行動支付 這次呢,科技要聞決定走進南門市場,體驗傳統市場導入新興支付科技 南門市場所使用的行動支付為QR Code條碼進行,他會直接跳轉到結帳的網頁 進入南門市場的門口就可以發現有大大的招牌寫著『免付現』,店家的門上也會有明顯的招牌可供我們掃描唷 在結帳櫃檯或是顯眼處就會掛上店家的支付條碼,消費者只要打開手機的QRcode掃瞄器(iPhone使用者只要打開相機) 掃描多元支付條碼後,就會進入至結帳付款頁面,輸入付款金額、選擇要支付的方式 (可以選擇Apple Pay、Google Pay或是信用卡刷卡),按下完成付款就能結帳。)                   那今天的目標,學程式助教們決定蔬菜來補充一下體力,不然天天打程式還是得需要營養均衡…
學程式助教
January 7, 2020
戰略紀錄

用 Chatbot 打造超有趣線上 RPG :把同事變成 NPC !

完整架完95個模組,尿都變紅色的。 哈囉大家~新年快樂?? 在被期末考荼毒的同時我又來寫寫工具文了! 每次寫文章都會先列出架構,但還是會花費我蠻多時間,大約1至1.5小時,眼看期末要讀不完了我還在這裡寫案例 ㄏㄏ。 這次主題是《用 Chatbot 打造超有趣線上 RPG :把同事變成 NPC !》 最初分享《老闆惹怒工程師可以激起多大的社群效應:Chatbot 新手基礎操作案例》時,雖然自己分享了失敗的案例,但是出於分享的心情還是感到很興奮。 後來又發佈了《【教學】老闆惹怒工程師可以激起多大的社群效應: Chatbot 新手基礎操作案例》,因為我發現前一篇在操作面實在描述太少,原本是抱著「如果有新手想操作類似案例,操作面可以去看 BotBonnie 的教學」的心情,但是如果這樣依步驟拆解,讓人看案例的同時或是閱讀後可以上手,好像也是深層分享的一種方式。 教學版本的老闆惹怒工程師我還沒有上傳到Medium跟Blink,過幾天考完試再發佈。 By the way,BotBonnie什麼時候要找我當代言 ? 那我們開始來聊聊這次的案例吧!…
學程式助教
January 6, 2020
戰略紀錄

Python財金應用:Black-Scholes選擇權訂價模型(1)

經典的量化金融案例,也是每天在交易室會碰到無數次的內容,推導Black-Scholes formula就不是本篇的重點,有興趣我會在文章最底下附上推薦書單。 選擇權(Options)就是在未來某個時點可用某個價格買進或賣出標的資產的權利,投資人可以買進當作避險或樂透賭博,選擇權槓桿倍數相當大,如果將Gamma效果考慮進去,槓桿可以至百倍,而行情看錯則頂多失去權利金而已,Black-Scholes就是利用未來標的資產進入價內的機率去計算出選擇權權利金的。 有了這個評價公式後,我們可以衡量在設定波動度下的選擇權理論價值,也可以利用市場報價來反推選擇權的波動率,一般稱為隱含波動率(Implied Volatility)。 上圖就是選擇權的報價畫面,可以看到某個日期到期的選擇權鏈(Options Chain)的各履約價報價,並從中反推各種參數。 用Python撰寫Black-Scholes評價公式其實很輕鬆,按照公式的寫法轉換為套件的函數而已,同步還可學會函數的應用。 以上就是一個簡單的選擇權評價範例,給定五個參數數值後,就直接開始計算d1與d2,大家可以對照一下公式,就會發現其實很簡單,下面將每個區塊拆解並解釋。 1. 引入套件(numpy, scipy) 由於Black-Scholes需要用到指數(Exponential)與常態累積分配(Normal distribution c.d.f.)的科學運算 現有預設的Python是沒有這類函數的,則需要引用大量擁有科學運算函數的numpy與scipy。 2. 給定Black-Scholes參數 先行預設標的資產價格(S)、履約價格(K)、無風險利率(r)、具到期日(t)與波動率(Sigma),在整數位後幾乎都有加上小數點,就是為了將變數設定為浮點位,以確保運算正確。 (Python不用另行宣告變數型態) 3. 計算d1與d2 有利用的函數為numpy的log與sqrt,詳細可對照封面照的公式,要小心括號的擺放。 4. 計算Call的理論價格…
學程式助教
January 5, 2020
戰略紀錄

現在有「文言文程式語言」,你還用Python嗎?

你知道打程式會用到什麼語言嗎?沒錯,是英文,因此不管你是用 Python、Ruby、Javascript,你都至少要看得懂return、if等等,但是,有位中國工程師 LingDong Huang 在 Github 上發表了一款自己開發的「文言文程式語言」,把for 迴圈、變數定義,全部修改成文言文!你發現了嗎?寫程式最一開始的定義環境在這裡變成了吾有一術。名之曰「快排」。欲行是術。必先得一列。曰「甲」。乃行是術日。之後工程師先將這個程式定義為「列」,同時也定義行列的名稱及變數。吾有三列。名之曰「首」。曰「頷」。曰「尾」。再來是 for迴圈、if、else。其中「凡」代表 for,「若」代表 if,「若非」代表 else if。變成下方這樣凡「甲餘」中之「丁」。若「丁」小於「甲一」者。充「首」以「丁」。若非。充「尾」以「丁」也。云云看到這裡你應該也找到了一個蠻可愛的變動 XD,平常使用英文打程式,我們會用大小括號來代表迴圈的運算範圍,但是在這款文言文程式語言中,用了「也」、「云云」去代替,超級有趣!只有這些基本的還不夠,通常你會想在程式上作註解,讓其他工程師也能夠順利完成編輯或是溝通,而在這個文言文程式語言也做得到!批曰。「「曼德博集。亦稱曼德布洛特複數集合。複平面上组成分形之點之集合也。」」在英文裡我們會使用斜線,在這裡,斜線則被批曰取代,感覺就像詩人看完另一位詩人的作品後留下了評論!文言文程式語言在一周前被 Barret 李靖 發佈到推特上,隨即引起網友熱烈討論,有網友表示:「要打出這個,必須要文理雙全才行呀!」,同時也有不少網友留言表示這樣的程式語言,肯定會讓肯定會讓國文不好的工程師頭痛,甚至有出現想讓孩子學會的相關留言,如果古文程式語言真的盛行,未來要當個工程師,可能還得常常翻閱古文 XD人們在說的語言常被當作溝通的最大管道,每個語言之間都存在著邏輯可被推理,其實程式語言也是!雖然複雜程度與表現都有所差異,但是都有跡可循,因此如果你已經成功精通了一個程式語言,不妨往下一個程式語言邁進!不過如果你想精通「文言文程式語言」,真的還是再好好考慮一下吧!
學程式助教
December 25, 2019
戰略紀錄

加速建造開發環境,用 Docker 建立 Bitcoin 私鏈

開發時同步全節點太慢了,用 Docker 建立私有鏈更省時間。 一般在開發比特幣相關業務的情況下,會需要能夠跟 RPC server 溝通的需求,如果我們跑主鏈或是 testnet,同步全節點都要花上不少時間,在節點還沒同步完全以前,可能沒辦法準確的知道比方說 address 裡面的餘額之類。 但如果自己在本地掛個私有鏈起來,先搞定 RPC 之間的溝通或監聽,會是更有效率的作法。 Step 1: 安裝 Docker 載點:https://www.docker.com/products/docker-toolbox Docker 只要安裝過之後,就可以在本地跑起 linux 的虛擬機。 # 檢查是否成功安裝 docker…
學程式助教
December 23, 2019