【處處極限不存在的函數】
.
我記得自己剛升大一在學習微積分的時候,教授問了一個問題,「有沒有哪一種實變數實值函數是任何一點的極限都不存在的」,那時候我想了很久,總是想不出來到底要怎麼設計,才有辦法完成教授的要求。那時候我一直想不透的癥結點是,如果要在任意點的極限都不存在的話,那可能要先解決一個問題,那就是在設計了一個在某一點,例如說 a 點,極限不存在的函數以後,要如何改造這個函數,才有辦法讓 a 點「旁邊」的點其極限也不存在。
.
(接下來的內容,建議同學們可以拿支筆在紙上按照說明把函數畫出來)
.
舉例來說,如果我們設計了一個在 x = 0 這個點極限不存在的函數(例如設定這個函數在 x 小於 0 時其函數值均為 0;而當 x 大於 0 時其函數值均為 1),那麼要如何改造或調整這個函數,才有辦法讓這個函數在 x = 0 的「旁邊」的點其極限也不存在呢?針對這個例子而言,或許可以這樣做:先將這個函數在 x 大於 1 以後的函數值改成 0.5,那麼這個函數就會變成在 x = 0 和 x = 1 的時候極限都不存在,但因為 1 並非 0「旁邊」的數字,所以顯然還要再調整,於是我們再將 x 大於 0.5 以後的函數值都改成 0.5,那麼這個函數就會變成在 x = 0 和 x = 0.5 處其極限不存在,但同樣地,因為 0.5 並非 0「旁邊」的數字,所以我們繼續調整這個函數,下一步當然是將 x 大於 0.25 以後的函數值都改成 0.5,依此類推,再下一步就是將 x 大於 0.125 以後的函數值都改成 0.5,持續這樣的步驟,最終我們會得到一個當 x 小於 0 時其函數值為 0 而當 x 大於 0 其函數值為 0.5 的函數。這個函數當然仍然在 x = 0 的時候其極限不存在,但是原本在調整時的兩點極限不存在,卻因無限持續這樣的步驟,而變回了僅在 x = 0 極限不存在的狀態。這結果實在令人沮喪。
.
之所以會產生這樣的狀況,是因為持續了無限次將新增的極限不存在的點向 x = 0 處靠近的緣故。既然如此,那如果不要持續上面的步驟無限次呢?如果僅持續有限次的步驟,那麼在該次步驟的下一次,一定可以把 x = 0 右邊新增的極限不存在的點向 x = 0 再靠近一些,這個推論的結果就是,如果僅持續有限次上述的步驟,那麼就無法達成創造一個在 x = 0 的「旁邊」的極限不存在的點。結果,無論是有限次或無限次操作上述的步驟,最終都無法達成我們的目標。這真的真的非常令人沮喪,因為這意味著從一個點的極限不存在出發,去逐步改造出一個處處極限不存在的函數,方向很可能是錯誤的。
.
那麼,該怎麼辦呢?
.
面對這個問題,當時的我最終並沒有自己解出來,而是一個比過奧數的朋友在老師公布答案之前成功地解了出來,並告訴我他的想法。
.
他告訴我,既然從一個點的極限不存在開始是行不通的,那就一次就創造一大堆極限不存在的點吧!例如一開始的函數乾脆設定成這樣:當 x 介在 n 和 n + 1 之間且 n 為偶數時,將其函數值設定為 0,而其他地方則設定為 1。例如,當 x 介在 0 和 1 之間或介在 2 和 3 之間時,其函數值就是 0,而當 x 介在 1 和 2 之間或介在 99 和 100 之間時,其函數值就是 1。如此一來,我們就獲得了一個在每一個整數點其極限都不存在的函數。
.
以此為起點,比起我想的那個例子最初的樣子一次新增了無限多個極限不存在的點,似乎好像有了長遠的進步,但到此階段實際上並沒有解決我最一開始講的問題的癥結點,那就是如何在一個極限不存在的點的「旁邊」創造一個極限也不存在的點。
.
為了解決這個問題,我的朋友告訴我,下一步是在每一個「區間」裡進行調整。用例子來說明而剩下類推的話,大概是這樣操作:例如,在 0 和 1 之間,函數值原本都是 0,但接下來把這個區間切割成 10 等分,然後第 1、3、5、7、9 個區間(也就是在 x 介在 0 和 0.1、介在 0.2 和 0.3、介在 0.4 和 0.5、介在 0.6 和 0.7、介在 0.8 和 0.9 之間的這幾個區間),我們把函數值調整成 1,其餘的不動,那麼我們就可以得到一個,除了在所有整數點極限都不存在的函數以外,這個函數在 0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9 的極限也不存在。那如果是在原本函數值為 1 的區間,則在等分割成 10 個區間以後,將第 2、4、6、8、10 個區間的函數值調整成 0。若將上面這些動複製到其他區間的話,那麼在每一個整數區間(就是 n 到 n + 1 的區間)裡面,其十分位數的位置其極限都不存在。
.
接下來,再將函數值為 1 的區間等分割為 10 個區間,然後第 2、4、6、8、10 個區間其函數值都調整成 0,而函數值為 0 的區間一樣等分割為 10 個區間,但是是將第 1、3、5、7、9 個區間的函數值調整成 1,那麼,這個函數就變成了一個除了在所有整數點極限都不存在以外,但在每一個整數區間裡面其百分位數的位置極限都不存在的函數。
.
再接下來,繼續進行上面的動作,不斷地十等分分割之前產生的區間,並且適當地調整其函數值,使其在任一階段裡面都是前一個區間裡面的函數值是 0 且後一個區間裡面的函數值是 1 ,或前一個區間的函數值是 1 而後一個區間裡的函數值是 0 的狀態,持續無限次,最終就會得到一個在任一點其極限值都不存在的函數了。
.
要證明這個函數處處極限不存在有分簡單版和嚴格版,這邊我們先講簡單版,以後有機會再談嚴格版。對於這個函數而言,固定任何一點 a,其左極限只有兩種可能,0 或 1,但因為這個函數被分割地非常地密,而且連續幾個區間在任一階段裡面都是一下子 0 一下子 1 這樣變動,所以這個函數在 a 點的左極限不存在,因此這個函數在 a 點的極限並不存在。最後,因為 a 這個點是任意取的,所以我們可以說這個函數的極限值在任意點都不存在。
.
這個答案真的很猛,因為當時在班上只有我那位奧數的朋友給出了教授點頭的答案。
.
雖然當初他並沒有辦法清楚地講出左極限不存在的原因,也因為我們還沒學到極限的嚴格定義,所以沒辦法用嚴謹的敘述來證明這樣的函數確實處處極限不存在,但現在回想起來,那位奧數朋友還是很猛!因為他就好像那種天生的小說家一樣,信手拈來就寫出了一本傑出的小說,而我們凡人卻連寫一篇普通的文章都很成問題。
.
講到這裡,今天的故事似乎已經講完,但其實還沒,因為這樣聰明的人,並不會只出現我們班上甚至是這個時代而已。
.
關於「是否存在一個處處極限都不存在的函數」這個問題,其實在 19 世紀時,就有一位叫做 Dirichlet 的德國數學家,他所創造出來的一種函數(後來稱為 Dirichlet 函數),就是處處極限不存在的函數。這個函數的定義如下:當 x 為有理數時,其函數值是 1;當 x 不為有理數時,其函數值是 0。這樣的函數確實也處處極限不存在,也是我教授當時給同學們預設的答案。
.
在這邊我就不文字解釋為何 Dirichlet 函數處處極限不存在了,但我有拍一部影片來說明,如果你想繼續看下去,可以點開我貼在本篇文章留言處的這部影片,我有盡量簡單地解釋為何 Dirichlet 函數處處極限不存在。
.
雖然 Dirichlet 函數處處極限不存在,但其實當初 Dirichlet 所面對的問題,並非「是否存在處處極限不存在的函數」,而是「是否存在無法圖像化的函數」。在經過可能類似這篇文章最一開始的那些推敲以後,Dirichlet 創造了 Dirichlet 函數,而這個 Dirichlet 函數就是一個「客觀存在」但「無法圖像化」的函數。並且,除了無法圖像化以外,Dirichlet 函數在數學上也有著很重要的地位,因為他常常是一些直覺上無法察覺的現象的重要例子。例如我們直覺上都會認為只要函數有週期,那麼就會存在最小週期,但 Dirichlet 函數就是一個不具有最小週期的週期函數,因為任意有理數都是它的週期。
.
關於 Dirichlet 函數的性質我們就講到這邊,或許以後有機會可以專門寫一篇跟 Dirichlet 函數有關的文章,不過有很多性質都是需要具備更多數學知識以後才能介紹的,所以如果真的要寫的話,那可能就還要再等一陣子了。
.
最後,跟大家介紹一下我上面所提到的影片,那是我在 2020 年時所拍攝的一系列微積分教學影片的其中一集。該系列影片基本上有觀念講解、精選範例和補充教材,近期我會開始陸續上傳到這裡,但不是每一部影片都會寫文章來搭配,所以如果你想跟著我上傳的速度一部一部看,而且不漏掉系列裡每一部影片的話,可以關注我在西瓜視頻、騰訊視頻和優酷視頻的頻道;如果你想一次看完我全系列的影片的話,可以關注我在 YouTube、bilibili 或 Pornhub 上的頻道,上面已經上傳了張旭微積分全系列影片。另外這系列影片都有講義電子檔可以搭配使用,如果你想要取得該電子檔的話,請幫我按讚這篇文章和這個粉專、分享這篇文章,並幫我到我的臉書粉專評論處寫個評論,然後私訊我的臉書粉專,我的夥伴就會回覆你講義電子檔的連結。
.
感謝你的觀看,希望這篇文章對你有所幫助,有任何問題或想法也歡迎在下面留言告訴我。另外,本文章同步發佈於數學老師張旭的 YouTube 頻道社群、微博、今日頭條、Medium 和 HackMD,若你也有上面提到的那些帳號,歡迎按讚、分享和關注!
同時也有1部Youtube影片,追蹤數超過16萬的網紅邦尼幫你,也在其Youtube影片中提到,立即加入邦尼頻道會員計畫:https://www.youtube.com/c/isbonny/join (#你的恐龍會隨著你的會員等級一起成長哦!) ------ #GooglePixel3 完整開箱評測實測、評價、推薦、值不值得買。透過超完整測試對比 Note 9 , iPhone XS Max,...
簡單整數比定義 在 龔成 Facebook 的最佳解答
【龔成問答信箱】(Q20921-Q20940)
Q20921:
Hello 龔sir,請問寶威控股(0024)依個股本重組係乜野意思?對買左依隻股票既人有乜野影響?謝謝!
龔成老師︰
這是一些會計上調整,數字會抵銷過往累積的虧損。但這不是實際業務賺到的錢,只是會計數字,係考慮公司賺錢能力時,係不會作考慮。
寶威控股(0024)從事鋼鐵貿易及鋰業務。
這企業規模好細,過去多年虧損,睇唔到有投資價值。而且核數師多年都係給予財務數據「保留意見」、「不表示意見」,明顯佢一直以來盤數都有問題。
特別是佢在停牌前,核數師意見已經有幾年表示「保留意見」,反映盤數有問題!
這類股票,當然唔值得投資。
此股由2019年8月一直停牌至今,初步睇佢情況都幾麻煩,有機會除牌、甚至清盤。暫時投資者無野可以做。如果佢有機會復牌,最好盡快沽出。
否則,若佢真的除牌或清盤,投資者最後只能自行聯絡該公司,看看如何處理其手上股票。
------------------------------------------------
Q20922:
我好想好想 長坐1177 10年 上100蚊。 但 石藥 同 中生,成日聽到 帶量採購 呢個負面東西。 想請教你, 帶量採購是否不用擔心??
龔成老師:
當我地分析時,最重要睇企業的長遠價值,而不是只睇這刻的情況,首先,要上$100不是易事,佢的生意要有好大的增長先有機會做到,因此現價已經唔算平,所以股價上去$100,已不是炒作問題,而是一定要有實質的企業價值提高。
至於帶量採購,都會對佢有負面影響,之前的相關政策已對佢的藥價受壓,影響了賺錢能力。
但我地作為投資者,分析企業應該更全面及能分析「延伸發展」,不能單睇表面分析。
中生製藥(1177)本身有一定質素,佢在行業都有一定的優勢,而帶量採購令行業整體的賺錢能力受影響,這反而會對一些規模較細及質素較弱的企業有較大影響,而過一段時間,市場就會適應新的規模,令到較有優勢的企業較易賺到錢。
因此,長遠中生仍是能賺錢的企業,加上人口老化令佢長遠有唔錯的增長,無論是政府投入的行業資源,又或是人民生活質素令可控制資金上升,都令人們更在醫療方面投入更多。
佢已建立一套完整的商業系統,有多個已賺錢的藥品類別,同時毛利高,可以不斷將錢投資在新藥裡,這模式運作很好。
但這類藥物企業,難免有一點風險,因此要久不久檢視,中短問題不用理會,但如果有一些核心性的問題,就要再全面分析。
就這刻來說,這股可以一直持有,因為商業模式理想,高回報,不斷再投資令股東利益快速增長。加上睇翻佢的業績,保持增長,這令企業價值有實際的上升,令股價得以支持。
------------------------------------------------
Q20923:
誠哥!!而家新經濟股同恒指跌咗唔少,係咪可以開始分注入啲3067同2800?
另外,想問其實2800或3067呢類etf需唔需要做止蝕呢?
謝謝你!
龔成老師︰
近期雖然跌唔少,但依然有部份新經濟股係輕微過熱。
現價計,盈富(2800)在合理區,而安碩恒生科技(3067)則在合理區較頂位置,都可分注入貨。
至於沽貨,我不會有明確的止蝕價。
我賣出基於下列幾個原因:由於我買入的是優質股,若買入後發現自己犯錯,這股不是優質股,又或這股核心的質素轉差,變成非優質股,這時無論賺蝕都會沽貨。
又或是市況過熱,市場處牛市三期的狂熱狀態,例如2015年的大時代狂熱時,我便會採用多沽少買的策略
但當時的市況未到極度狂熱,所以我亦只是沽出了一部分的貨。
此外,股價要是嚴重高估,例如市況狂熱,又或自身的原因令股價爆升,都有可能沽出。
------------------------------------------------
Q20924:
龔sir你好,不好意思,又有問題想請教你
1. 1183澳能建設:之前不斷升幅,現在卻跌得一蹋糊塗,但又未見有人大手沽出,
想請教一下到底是什麼因素影響?如果現在低價買入,買唔買得過?
2. 0853微創醫療:之前有詢問過這隻股票的方向,現在見到佢一樣不停下跌
原持有53蚊3000股,若想低價買入多少少,希望虧少D,請問這個方法還可行嗎?謝謝你的回覆
龔成老師︰
1) 其實一隻股票中短期下跌,唔一定關佢本身質素事,可以係其他原因。
澳能建設(1183)以過往的業務來睇,只是中等,業務發展不算強,整體不差但又未算好好。
佢最近宣布,同德國創新科技企業Ubitricity達成戰略合作,於大灣區拓展大灣區開發、製造及分銷電動汽車充電業務。
睇翻澳能果邊,主席表示,目標係兩年內在港澳大灣區安裝500至1000個充電裝置。
企業發展力都有,但近期股價其實有點超前反映。這刻投資值博率未算高,如果你睇好,最多都係小注好了。
2) 唔好因為想拉低個平均價,而盲目加注,咁係好錯。
微創醫療(0853)市盈率去到近180倍,好明顯係唔平。佢增長係快,但市場估值包含左不少「前景」因素,令變數好大。
再加上佢負債不輕,再加注風險唔少。如果你現貨佔組合比重不多,可不理股價,長線去持有佢就可以。
------------------------------------------------
Q20925:
你好,龔SIR!,我開始買股票冇耐,呢排市場比較差
令我有D不知所措,唔知應唔應該重新整理下持倉股票
我25歲, 目前持有組合如下:
03800 1000@$3.18
03067 300@$18.81
01810 600@$22.15
01799 400@$21.90
01448 2000@$7.85
00400 1000@$4.56
00175 [email protected]
想請教配置上有冇重組需要? 謝謝龔SIR
龔成老師︰
唔好比市場氣氛影響判斷,我地持有一隻股票與否,關鍵位是企業質素、前景,不要被中短期架波動影響自己。
你持股大致上都可以,但要留意以下3隻。
保利協鑫能源(3800)質素只是一般。佢主要為光伏行業製造多晶硅及硅片;銷售電力;開發、投資、管理及營運光伏項目。
市場炒緊佢前景,但當中存有不確定性,股價大上大落。此股不宜佔組合太多,小小注好了。
新特能源(1799)佢盈利好波動,近年更有減弱架情況。
佢本身負債都唔輕,此股投資價值一般。由於你只係小注,可以守住先,再觀察佢未來發展。
科通芯城(0400)主要在內地從事銷售集成電路、電子元器件,以及相關融資服務。
佢業務係有,但見佢生意一直下滑,賺錢能力越來越差。此股投資價值一般,長線計換至其他優質股較好。
另外,餘下股雖然相對好少少,但你持股中有都係波動性較高架股票。唔係話唔投資得,但會令組合風險偏高,故不宜持有太多。
未來,你可以集中翻D係平穏增長股,令組合更平衡。
平穏增長股︰盈富(2800)、金沙(1928)、恆基(0012)、平安(2318)、中銀(2388)、港鐵(0066)、煤氣(0003)、長建(1038)、領展(0823)、粵海(0270)。
------------------------------------------------
Q20926:
你好龔老師,最近見到跌市,見到很多平貨,很興奮呢,已經好有衝動想入貨。
雖然有看到你説恒指到22000-24000才是便宜區。
1/ 請問1211是否$120以下才是便宜區?
2/ 請問700和388的便宜區是多少?
3/ 請問京東和阿里巴巴那隻較優質?
4/ 我發現自己好濫,好多股票都想買(當然資金有限唔容許), 例如騰訊,港交所,阿里巴巴,京東,金沙,銀娛等,都想有。而我持有的股票(有10隻以上)
但每隻都係得1手至幾手,變咗老師説的賺一倍放一半的方法,我未必能應用到。
我是否應該糾正我這個想呢?如是,應該可以怎樣做?
先謝謝老師回覆。
龔成老師︰
近期大市出現回調,但整體只算在合理區,而且有部份新經濟股,依然輕微過熱。
1) 比亞迪(1211)$120只係合理區,未到平宜。
2) 騰訊(0700)和港交所(0388)現價依然略貴,回到1成倒才算合理區。若要平宜,要回3、4成。
3) 阿里巴巴(9988)和京東(9618)2隻都係有質素,前者會較平穏,後者會較高潛力。
4) 組合維持10隻左右,會較理想。
其實優質股最好長線持有,"賺一倍放一半"純粹係比不懂定平貴,或較保守投資者用架策略。
你所講架股票都有質素,適合年青至中年人士。若你資金不多,可以考慮盈富(2800)、安碩恒生科技(3067)這類ETF。
或者等集中翻,只投資個別行業中最優質個隻,去減少股票數量。
------------------------------------------------
Q20927:
Hi成哥!投資新手想問月供盈富基金($500)同安碩恒生科技($500)可以嗎?
點睇美股?邊隻有增長空間?
謝謝你!
龔成老師︰
可以,這個組合有一定增長性,適合年輕到中年人士。
但長線計,你最好加大佢地供款額,否則月供成本會太高,拖低長線回報。
我自已無研究開美股,比唔倒建議你。如果你不太懂選擇美股,可以投資相關ETF。好似Vanguard標普500指數ETF〈VOO〉,是追蹤標普500指數的ETF,有投資價值。
------------------------------------------------
Q20928:
阿sir, 點解1475,個市升佢又跌, 個市跌佢又跌...
本質唔差架個企業, why 呢? thx
龔成老師︰
首先,個別股票走勢,唔一定會同大市一致。
而且,唔好太集中係中短期股價波動。佢下跌原因不一定是本身質素出問題,可以其他原因。只要長線質素無變,中短期波動我地唔需要理會,長線持有就可以。
日清食品(1475)不差的,都算有質素。
佢由日清日本(於東京證券交易所上市)分拆上市,主要於香港及中國內地從事生產及銷售麵條、蒸煮食品、冷凍食品、飲料產品及零食。
本身有品牌,加上業務穩定,盈利都不差,但比較大的問題,是增長慢,發展潛力不算強,所以只能視為平穩增值類別,不要對潛力有太大期望,長線持有係可以。
------------------------------------------------
Q20929:
老師,多謝你上次既回覆!我參考完加上平時睇你fb,最近建立左個組合,想請教下你意見!
A)背景
28歲,月入3萬多,每月可儲$12000, 可動用資金尚餘大約40萬。
B)現持有
平穩增值:
00003香港中華煤氣 [email protected]
00270粵海投資 [email protected]
潛力:
1448福壽園 [email protected]
1686新意網 [email protected]
3067安碩恆生科技 [email protected]
9988阿里巴巴 [email protected]
3319雅生活服務 [email protected]
收息:
0778置富 [email protected]
0435陽光房地產 [email protected]
亂買買錯:
02131云想科技 1000@11
C)計劃
月供(準備下星期開始):
$4000 2800盈富
$4000 3067 安碩恆生科技
每月另儲
1. 想問下夠唔夠平均?洗唔洗加多d平穩增值類?房地產類會唔會太多?
2. 我本身對1928金莎 2318平安都有興趣,但金莎未買就突然升左6蚊,呢兩隻係咪適合放入我既組合?
記得你講過每人最好只持有5-10隻股票,如果要加入應該捨棄邊隻呢?同想請教合理價係幾多?
3. 云想科技 係當初乜都唔識時玩下亂買既,前一段時間老師有提醒過有風險,小注可先持有。其實前排已想快手放左佢,但因為工作忙完全冇時間睇,錯過左時機。見佢由買入既$11跌到宜家$7.65,都真係好掙扎下
唔知及早止蝕定等待長遠發展好。
龔成老師:
1)以你的年齡,平衡度無問題。
當我地進行人生財富累積,會運用「先增值,後現金流」作方法,年輕人應投資較多增值類資產,而較年長的,則應投資較多保守類項目,因為年輕人的財富系統未成形,同時負擔較少,可承受的風險度較高,所以會著重增值為先。
因此,你持有的煤氣(0003)及粵海(0270),你不用加注,持有就得,始終佢地偏向收息。增長力不強。
至於你的月供計劃,可以進行。
2)我相信以你的年齡,銀娛(0027)會較適合你(因為佢增長力比金沙強),現價合理區中上部,你可考慮月供。
至於平安(2318)適合你的,現價合理。
平穩增長股:考慮盈富(2800)。
另外再加1、2隻(每隻$1500):銀娛(0027)、恆基(0012)、港鐵(0066)、平安(2318)、粵海(0270)、領展(0823)、希慎(0014)、太古地產(1972)等,你可以了解下這些股票,然後從中選股。
潛力股:安碩恆生科技ETF(3067)
另外再加:阿里(9988)、騰訊(0700)、港交所(0388)、舜宇光學(2382)、小米(1810)、GX中國電車基金(2845)、中生製藥(1177),但就要明白波動性比上述會高左,同時風險大左,你要自己平衡。部分要等回少少先入。
現時大市波動,可以一邊投資一邊留現金,而餘下現金的運用,就是等大跌市時出手,如果你能在這段時間學好選股等技巧,到大跌市時就能把握機會,財富增值會更明顯。
3)雲想科技(2131)不是劣質,佢業務都有發展,不過就較波動,不適合持有太多。
佢係中國的短視頻營銷解決方案供應商,以及集中於泛娛樂的線上內容服務供應商。
如果按短視頻廣告所產生的總賬單計算,們為中國第三大線上營銷解決方案供應商,市場份額為3.4%。佢亦有透過其花邊網站及其移動端統稱「花邊平台」運營一個泛娛樂內容平台,向互聯網用戶展示引人注目的泛娛樂文章及照片。
睇翻佢營運模式,佢主要通過向廣告主及廣告代理提供線上營銷解決方案,包括用戶流量獲取、廣告素材製作及廣告效果優化;及花邊平台向廣告聯盟及廣告主提供的廣告位產生收入。
佢與多家網路平台維持良好的關係,包括中國六大短視頻平台,例如抖音、快手、西瓜視頻、抖音火山版及騰訊微視,以及其他領先的內容分發平台,包括小紅書及趣頭條。
佢客戶主要包括廣告主及廣告代理,以及第三累計方廣告聯盟及廣告主。
過往的生意與盈利增長快速發展正面,長遠相信有發展,不過估值都唔平。
另外,這股業務變化較大,佢可能發展得好勁,但如果出現一些行業的不利情況,佢可能變到好差。因此本身風險較高。
佢是有風險,有潛力的類別,這類股不是不可投資,但要明白股價波動,同時小注投資好了。
------------------------------------------------
Q20930:
龔成老師你好﹐我已經29,有一位兩歲小朋友。
我們開始了投資股票,現時手上有
9988 @250.6 X 100
1928 @33.8 X 400
1810 @ 31.5 X 400
2158 @ 65.1 X 200
0305 @ 2.75 X 10000
1448 @ 7.89 X 1000
2382 @180.9 X 100
你經常建議的長線投資策略,至少要5年或以上。如果希望3-5年能升值至100萬,有機會嗎??
老師可有建議,由於我有太多想法,但總是礙於能力和金錢上,除了投資股票外
上年還開始了網店(想作小孩和寵物方向的買賣),但總是提出很多疑問
令自己卻步(例如貨物不比別人優秀、沒有方向感從那裡進貨、希望有自己的手作出品,但方向又是濛糊),但時間就不等人,驚覺浪費很多時間在想方向,但始終都找不到答案。
平時見老師給大家意見很正面和有意思,希望可以得到一些啟發。
龔成老師︰
創業方面,如果你無頭緒,可以參考一些較成功架網店。了解一下佢地的商業模式,最始好大型及小型都有,先以小型作學習對象,然後就試下佢地的模式,能否成為你創業的方向。
同埋,最好唔好做得太雜,要專注在某一範疇,等人容易記得你。
其實,創業的最大關鍵,就是「做」。
你只要去做就得,市場好多時都是試出來,當你不斷試不斷改進,就會有機會成功,唔好想太多,要做就做!
小孩和寵物方向,都有市場,你定位清楚D就得,最初不斷試,找到市場就集中發展。
至於持股方面,你主要係潛力股,佢地雖然有增長潛力,但同時波動風險都唔細,故不宜持有太多。
未來,你可以集中翻D係平穏增長股,令組合更平衡。
平穏增長股︰盈富(2800)、金沙(1928)、恆基(0012)、平安(2318)、中銀(2388)、港鐵(0066)、煤氣(0003)、長建(1038)、領展(0823)、希慎(0014)、太古地產(1972)
另外,醫渡科技(2158)整體係有質素,但由於佢未有盈利,個估值都係市場估估下。如果發展不似預期,有機會出現較大調整。此股唔係唔可以投資,但緊記暫時不可大注。
五菱汽車(0305)質素算中等,業務都不算差,潛力度有的,但同時都有風險,故同樣不宜太大注。
以恆指過去年平均回報10%計(連股息再投資),要做到5年100萬,除了以上持股外,你最少每月投資$12000(直接買股或月供),才有較大機會做到。
------------------------------------------------
Q20931:
本人現況是三人家庭,我同先生係80後,家庭收入約5萬頭,計劃生多一個小朋友。
14年尾購入實呎約350呎藍田居屋(已補地價),想賣出換約500-600呎單位,如賣出,
手持大約200萬。
由於我是公務員,想先賣出現單位,排公務員隊抽居屋,成本低啲,較乎合預算。
計劃賣出後,先租待抽到再買,但有機會等數年。
請問上述操作會否冒險?
賣樓後現金買優質增長股是否較好(投資初哥,正努力睇書學習)謝謝!
龔成老師︰
若你賣出現有住所,就等同沽空樓市。雖然透過這個計劃買自住居屋,成本較低,係好事。但我地唔會知在你排到綠表資格前,樓市係升定跌。
苦果升得好利害,比你用優質股增值仲要快,你換樓成本反而會增加。而且,中間架租屋成本,都係一個變數你要考慮。
另外,我唔排公務員隊抽居屋的機會率高低,如果小過一半,就唔值得博。如果高過一半,你就要考慮我上述所講的風險,自己是否承受。
一般情況,較理想方法係應該保留現有物業。同時間,新資金就投入優質股做增值,令到時換樓會有更多本錢係手。
但我明白公務員申請綠表資格,係必需無物業在手。如果你要決定落實此計劃,建議你用200萬增值時,投入較多係地產類別股份,令資產跟樓市較為同步,去減少樓市變動造成架風險。
------------------------------------------------
Q20932:
老師,你好,本人現在將近30歲,已婚,二人月入約8萬
2年幾前購入一個單位自住月供約萬8
扣除其他必要開支兩人約可儲蓄2萬5至3萬
現在港股持倉約50萬
其中約一半為較高潛力股票(1177,1211,1810,9618,9988)
其他則為比較穩定嘅藍籌股
另外約有90萬做緊定期有5%利息
想請教一下老師幾個問題:
1. 每月可以儲起個筆錢會否建議全數投資落股票?
2. 因為定期已經有穩定利息,會否建議再增加潛力股之持倉百分比?有否推薦購入那隻股票?
3. 如果將來計劃生育儲蓄計劃應如何作出改變?
4. 比亞迪曾經於260落過車,後來因自覺落錯車於24x重新上車,雖然覺得此舉似乎做錯,但現在是否應選擇繼續持有?而在來年應否再增注?
5. 如果預計未來人工不會大增而又需要繼續供樓情況下,40歲能否達至財務自由?
6. 如果未來想再買樓投資有無推薦?
感謝老師
龔成老師︰
1) 現時大算未平,只係合理區。每月儲蓄一半月供,一半儲起等機會,咁會較好。
2) 定期有5%,要睇你是外幣、港幣、還是有特別限制或條件,如果港幣有5%這是有吸引力的,部分資金存於這裡可以。但相較恆指及其他優質股,平均年增長8-10%都係少,對需要財富增值年齡的你,唔係咁合適,因此都唔會太多。
長線計,你應將定期資金,慢慢投入有增長力架優質股,咁會較有效率。
3) 你可以照月供先,到你生育時候,才按實際情況,調整月供投入金額。
4) 記住唔好估走勢,你以為佢見頂,想先沽貨,平D再入番。但最終佢機會係一直升,令你進退失據。
比亞迪(1211)有很高質素,現貨可持有。至於入貨,現價明顯偏貴,最好等到$120左右,才出手,起碼都$150。
5) 財務自由,每個人定義都好唔同。有人想退休後,年年去幾次旅行。有人想平淡咁過生活,所以這個好睇你個人。
簡單咁講,以恆指過去年平均回報10%計(連股息再投資),你每月投資$25000 + 現有投資和資金(共140萬),10年後大約會增值至800萬。
若你將這筆資金,投入收息資產,以5%計,每月可為你產出3.3萬現金流,去支持從工作退下來架日常生活開銷。
6) 除左鄰近商區地段,好似中環、東九。你都可以留意一些潛力較高地區,好似堅尼地城、大圍、黃竹坑等。
------------------------------------------------
Q20933:
想請教老師我持有909明雲源.47入,重注,因今個月中是6個月禁售期解禁,股價會否下調很大,我是否要在禁售期前趕快沽出?
感謝老師
龔成老師︰
要緊記一個重點,我地投資係長線,所以著眼點一定係睇佢企業本質和行業前景這類因素。
禁售期,跟佢本質無關,我地唔應將佢放係考慮之列。而且禁售期過後,只代表相關股東可以將之前配股時購入之股票出售(但唔代表佢一定要出售)。
但如股東真係出售,可能對股價造成短期波動。但我們投資著眼點應該是企業質素,故此解禁其實對公司無任何實質影響。
明源雲(0909)主要透過合約安排在中國為房地產產業提供軟件解決方案。
此股上市不久,沒有太多有用數據可以參考。因為好多上市公司都要2年才會見真章,故此刻估值唔易。
初步用佢2019年盈利2.16億計,市值郤去到740億,絕對唔平。只能說,投資係可以,但絕不能大注。
以你現時情況,你必需慢慢沽出部份持股,去降低風險。
------------------------------------------------
Q20934:
成哥你好!本人48歲!由於爛玩爛賭!月光一族!沒有儲蓄!但現在已清醒!
想的起心肝儲錢遲嗎!?本人月入4萬!扣除衣食住行開支,可儲15000!
想問一下以我年紀現在以15000應該選擇月供那幾款股票好呢!?謝謝!
龔成老師︰
有心唔怕遲,只要你現在開始認真去做理財和財富增值,依然可以做到一定效果。
係投資增值策略上會用「先增值,後現金流」方法,初期投資較有潛力股票,去做財富增值。
記住,我地投資不是賭錢,是「儲優質股」,成為我地財富組合其中一部分。
到一定金額後,可轉較平穩增值的股票。最後有相當財富時,才換成收息股去為自已創造穏定現金流。
以你現時人生階段計,依然有一定增值空間,但同時間策略要保守少少。你先用每月5成儲到的錢做月供,其餘先儲起,用一邊月供一邊儲蓄的策略。
選股上,以年紀你可以集中投資在平穏增長股︰盈富(2800)、銀娛(0027)、恆基(0012)、中銀(2388)、港鐵(0066)、長建(1038)、粵海(0270)、領展(0823)。
如果你對這些股票,唔係咁認識。你可以集中盈富基金(2800)先,佢係包括55間質素不錯上市公司股票的組合,係一個唔錯架選擇。到你有一定能力,才買其他我建議的股票。
而儲下的另一半現金就等機會,當大市出現較大回調,就加大力度掃貨,然後作長線投資。
------------------------------------------------
Q20935:
老師好,想問下我現有的股票,分配得夠唔夠平均嗎?謝謝老師
月供方面, 仍然進行中:
2800(供3000);2388(供1000);788(供1000) ; 2382(供1000);1810 (供1000)
另有股票如下:
3988 (31000股);2238(2000股);
2388 (1000股);9988(100股);6 (1000股);788 (8000股);2018(500股);3067(400股);1398(5000股);1810(1000股)
龔成老師:
上述持股,都有質素的,基本上可以持有。
至於平衡度足夠的,在同一行業裡,見你銀行股有點多,你要注意翻,同一行業最多佔組合比例30%已是上限
另外,你都要留意組合與年齡是否配置,我見你組合「收息股」「平穩增長股」「潛力股」都有。如果你是年輕人,收息股就不宜太多。如果年長,潛力股就不宜太多。
整體上,組合無大問題。
你最好在月供同時,留有基本的現金,當面對跌市時就有資金買平貨。
------------------------------------------------
Q20936:
龔sir,想再請教一下,現時我32歲,月入4萬5,定期有160萬,收息基金76萬(每月息再投資,現金的話等於4000左右),股票就係
恒大汽車$57.75@500
信達生物$91.225@1000
美團$411.2@200
保利協鑫$2.86@5000
恆大物業$15.86@500
海底撈$73.1@1000
中銀$3.4554@13000
恒生銀行$182.1@200
如果我想5年內買800萬左右樓,請問應該點做可以增值得好d?以上股票組合我需要調整嗎?
同埋我d定期一直定落去還是羅岀黎再投資好?
麻煩你。
龔成老師:
如果你打算5年買樓,其實可以善用這幾年去進行財富增值,投資股票可以,到接近買樓的一年,就開始適度套現,準備資金。
你可以投資平穩增長股,小注潛力股,利用這5年時間去增值。
現時持股,恒大汽車(0708)信達生物(1801)保利協鑫(3800)恆大物業(3333)都是較高風險的股票,你小注持有好了。
至於恆生(0011),只是收息股,又唔太適合你。
另外3隻問題不大。
至於現時的現金,你應該更有效利用。至於收息基金,其實未必適合你,因為你的年齡,以及投資目標,其實應該「增值」。
你如果要5年滾存$800萬並買樓,其實有2個方法。
第一,現時投資細價樓,同時並行投資股票,到5年後轉為大價樓。
第二,全部利用股票增值。
我建議你睇《5年買樓4部曲》,你睇完後會更具體知點做。
------------------------------------------------
Q20937:
你好!還有問題想問吓,本人還持有一些股票,可以幫忙看看,應該繼續持有定溝貨定買出!謝謝
2389,72000股,成本價1.103
8153,80000股,成本價0.225
8158,10000股,成本價11.475
139,210000股,成本價0.026
以上都係放了6年以上
還有最近入了以下幾隻
285,5000股,成本價49
1810,5000股,成本價24.2
968,10000股,成本價15.6
981,5000股,成本價25
我都知以我以上股票都不是平行組合,希望呀sir可以多多幫忙,能夠做一個分析!
之後有機會過黎澳門開班,再跟呀sir學嘢!
謝謝
龔成老師:
首先你要明白一個概念,我地持有一隻股票與否,關鍵位是企業質素、前景,不要被買入價影響。買為我地買股票就是買企業。
買入價,你的賺蝕,只是一個心理因素,該企業長遠的發展,才是我地是否值得持有的重點。
如果企業有質素,但股價短期下跌,就不用擔心。
如果企業無質素,但你現時蝕錢中,繼續持有只會令你財富繼續貶值,因此要賣出。
如果企業質素轉差,就有可能要減持,因為這股佔你組合的比例,未必值得太多。
北控醫療健康(2389)業務有向下情況,建議減持。
法諾集團(8153)中國再生醫學(8158)中達集團控股0139)質素都不佳,建議賣出。
至於最近買入的股票,有質素,可長線,但全部都是近期較熱炒的類別,你這樣會出現集中風險。建議你加入其他優質股,平衡翻組合,例如盈富(2800)、港鐵(0066)、領展(0823)。
------------------------------------------------
Q20938:
龔sir, 請問我幫小朋友儲起左利是錢約5千多元,想幫他投資3067,睇中3067原因是佢每手唔貴,而小朋友咁細個承受風險高啲,由細開始儲,需然無息收,但儲番7~8年都應該有唔錯效果....
還是應該同小朋友投資435陽光房地產有啲息收可以?
睇完你之前的post(賣樓好定加按好)及大富翁, 更加令我想將層樓套現約30萬再設定收息組合,待樓價跌再買多層,但我case係未供完樓
仲有120萬先供完,會唔會唔適合用以上方法呢?
龔成老師:
安碩恒生科技(3067),有長線投資價值。
這基金追蹤恆生科技指數之表現,而恆生科技指數,都是一些有質素的潛力股,例如阿里(9988)、騰訊(0700)、小米(1810)、美團(3690)等的新經濟類公司,長遠有潛力。所以有長線持有價值。由於基金有30隻股票,比起單一股票,風險能減低。
不過,現價都唔平,大約在合理區頂至略貴,因此,這刻不能大注投資。最好的策略,就是月供,或自行分注小注慢慢收貨(例如每月買一次、或2個月買一次),總之慢慢入,不能用盡現金,原理如同不斷儲貨,這樣就能平均買入價,減少風險。然後就長線持有。
你可以不斷投資3067幫小朋友儲錢,長期進行,但要留意,如果組合100%集中3067始終有風險,因為這是潛力型基金,建議久唔久,加入一手盈富(2800)你組合會更加平衡。
因此,2800+3067是較適合你配置,至於比例,就要睇你的風險承受能力及投資目標。
加按套現投資,的確可以提高創富速度,因為現時按息低,只要爭取到比利息回報更高的回報率,就值得做。不過,加按原理是增加負債,我會建議有「明顯機會」才做,而不是為做而做。而這刻未見有明顯的投資機會。
------------------------------------------------
Q20939:
龔成sir,我打算月供股票如下
如果月供$7000
778,1448,823,1810,1177,3033/3067,2800,1928 我應該怎樣分配呢?
1810 本身已經有1200股,$29.5
龔成老師:
上述都是有質素的股票,至於點配置,好睇你年齡及風險承受程度。
如果是年輕至中年,可考慮2800+3067作為核心。然後再加上其他股去月供。
想潛力度高D,就供1177、1810。
如果想平穩增長,就考慮1928、0823。
如果本身年長,就考慮月供收息股。
另外,現時大市波動,要一邊月供一邊留現金,而餘下現金的運用,就是等大跌市時出手,如果你能在這段時間學好選股等技巧,到大跌市時就能把握機會,財富增值會更明顯。
------------------------------------------------
Q20940:
老師,想問下關於買樓方面
我有首期 供樓都供得起 不過現時香港租金回報率唔高 供樓仲要供30年 就算出租
租金都要用返黎供樓 難有正現金流 買樓都係賺長期既樓價升幅 雖然話長期樓價必然上升 但係會升幾多都真係預計唔到 見到有人會寧願買REITS 你會點睇買樓vs REITS 呢?
REITS既好處係門檻低 又唔洗處理租務問題 又可以隨住樓價升而上升 每年又有息收
其實多唔多人會用槓桿買REITS 取代買樓呢?
最後想問按揭方面 因為依家係受薪人士所以依家做按揭應該唔大問題 但係如果之後幾年變成自僱人士 或者想停一段時間唔做野休息下
會唔會影響到我係受薪時候做既按揭呢?
謝謝!
龔成老師:
香港樓,自住的價值有的,始終香港樓有一定的自住需求。
香港樓市,中短期會有少少上落(但不會大跌),長遠會向上。
首先要睇經濟基本面,如果經濟持續地差,失業率上升,樓市終會向下,這會對樓市有中期性的影響,不過,就算跌,都不會大跌,最多只是小跌,如果經濟差的情況不是太大,甚至不跌,這是由於背後的需求大。
在長遠計,我仍相信樓市在長遠計,因供求關係,仍是向上多。因為現時香港買樓的需求仍大,而長期供應不足,加上政府往後施政只會更加困難,好多所謂的大計劃都未必能夠實行,又或最後規模細左。
另一方面,需求大,我見唔少適婚年齡的朋友,都正等機會買樓,但未買樓,這些是「潛在需求」,過往每年不斷累積,只要樓市跌少少,就會有需求走出來,這令樓市不能大跌。
另外,樓市另一作用是「投資」,現時的租金無大跌情況,以投資回報率的角度分析,樓價都不會大跌,因此樓市平穩。
長遠計,租金及樓價會平穩,有少少向上,但不是倍升,不會好似過往般倍升,而是平穩向上。
但如果講投資,這刻就唔算好高,租金回報率去到3%。不過,部分投資者買樓投資原因,是因為按息低,現時按息約2%,租金回報率仍高過按息,產生息差利好因素。
但從整體的投資價值,這刻香港樓的確唔算高,如果我有一筆資金打算投資買樓vs REITS ,我會選REITS,回報率較好。
如果你現時有固定收入,買樓按揭當然會較簡單,當銀行這已批了,你之後的收入情況,已經唔關事,只要你準時供樓就得。
----------------------------------------------
若你有問題想向本人發問,可在龔成的fb專頁中(www.facebook.com/80shing)inbox龔成,但要注意如無特別聲明,有可能將問答放上網,當然,會將發問者的身份,以及有關個人資料的部分刪去。
另外,我所給予的各種意見,只是供大家參考,當中無任何銷售及推介,不涉及任何利益,其實大家應該要有獨立分析的能力,我只是給予一些方向及純參考模式。
由於提問人數眾多,見諒無法即日回覆,如果是普通的提問,預起碼要7天以上才能回覆,若然是較複雜的提問,起碼要10天才能回覆,希望各位能諒解。
簡單整數比定義 在 Taipei Ethereum Meetup Facebook 的最佳解答
📜 [專欄新文章] Uniswap 解析:恆定乘積做市商模型 Constant Product Market Maker Model 的 Vyper 實作
✍️ 田少谷 Shao
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
在 🦄 Uniswap v2 到來之前徹底了解 v1 的設計與演算法!
Image source: https://uniswap.org/
Outline
一. 前言二. 恆定乘積做市商模型 Constant Product Market Maker Model 1. 計入手續費 2. 程式碼結構 3. 演算法核心與實作 4. 段落小結三. 流動性 Liquidity 1. 第一筆流動性注入、決定k值 2. 除了第一筆以外的情況四. 結語
一. 前言
暨上一篇開始接觸了 Vyper 後,我找了 Uniswap 的程式碼來更加熟悉 Vyper 的實作方法,順便研究了其演算法,然後就又寫了一篇 xD
類 Python 的合約語言 Vyper 開發入門:與 Solidity 差異、用 Truffle 部署、ERC20 賣幣合約實做
Uniswap 是以太坊上非常成功的自動做市商 Automated Market Maker (AMM)。本次我將用的 Uniswap 的程式碼搭配由 Runtime Verification 這家審計公司對 Uniswap 所做的形式化驗證結果來解釋恆定乘積做市商模型的 Vyper 實作 (2018 審計時 Uniswap 就已經是用 Vyper 而非 Solidity 了):
智能合約程式碼:https://github.com/Uniswap/uniswap-v1/blob/master/contracts/uniswap_exchange.vy
合約審計結果:https://github.com/runtimeverification/verified-smart-contracts/blob/master/uniswap/x-y-k.pdf
本文將以講解實作概念及數學推導為重點,程式碼的部分只是輔助。審計結果將恆定乘積做市商模型演算法的數學推導寫得非常清楚而有趣(?),建議有興趣者可以整份看過一遍,相信得到很多收穫!
至於更多 Uniswap 的介紹有興趣者可以參考 吳冠融 Roger Wu 所撰寫的簡介與使用流程:
解析 DeFi 項目《Uniswap》(一)Uniswap 是什麼?
解析 DeFi 項目《Uniswap》(二)Uniswap 如何使用?
在開始前的最後,先預告本文頗長,所以來播個被 Youtube 推薦的歌吧:
二. 恆定乘積做市商模型 Constant Product Market Maker Model
交易所如果要去中心化、也不使用掛單 order book,就需要靠演算法自動算出交易標的的數量與價格,而 Uniswap 使用名為恆定乘積的演算法,其來源可追溯自 Vitalik 的這篇文章:點我。
公式非常的簡單:x * y = k。令交易的兩虛擬貨幣為 X 和 Y,各自數量為 x 和 y,兩貨幣數量的乘積 x * y 恆等於 k,k 值是由第一筆注入的流動性所決定 (於 三. 流動性 Liquidity 解釋)。
因此,用 ∆x 數量的 X 幣來購買 Y 幣所能得到的數量 ∆y、或是為了購買 ∆y 需要付出的 ∆x 數量,依照此公式進行計算:(x+∆x)(y-∆y) = k,而交易的價格就是兩幣量 ∆x 和 ∆y 的比。
以下公式用 α = ∆x / x 和 β = ∆y / y 來表示 ∆x 和 ∆y 及 X Y 兩幣在交易發生後的新均衡數量:
圖一
1. 計入手續費
在 Uniswap 進行的每一筆交易都會被收取 ρ = 0.003 / 0.3% 的手續費回饋給流動性提供者 liquidity provider ,因此要將手續費納入公式的考量:
圖二
上圖的公式或許不太直覺,我建議不要從 x’ρ 及 y’ρ 開始理解,而是從 ∆x 和 ∆y 兩值開始:手續費 ρ = 0.3% 的意思是會從付款中扣掉 0.3 %,也就是從 ∆x 扣。在有手續費的情況下 ∆x 就變成了 (1-ρ)∆x ,若令 γ = 1-ρ 則為 γ∆x。因此,將圖一中的 ∆x 換成 γ∆x,就會得到以下式子:
source: https://www.codecogs.com/latex/eqneditor.php
將等號左方的 γ 移到右方後就得到了圖二中的 ∆x。同理,由於 ∆y 中的 α = ∆x / x ,用 γ∆x 代換 ∆x 就會得到圖二中的 ∆y (有 α 的地方乘上 γ )。而 x’ 還有 y’ 就可以由 ∆x 和 ∆y 推出來了!
然而,將圖二中得到的 x’ 和 y’ 相乘,會得到:
source: https://www.codecogs.com/latex/eqneditor.php
也就是說,當有手續費使得 γ != 1 /ρ != 0,x’ρ * y’ρ 的值其實會稍微和 xy = k 不同:在實作上 γ = 0.997 / ρ = 0.003,因此 1/γ-1 ≒ 0.003。β = ∆y / y 代表的是換得的 Y 幣佔總量的比例,即使最大值為 1,誤差也只有 1 * 0.003,故可知手續費 = 0.3% 對於 k 值的影響極小。
2. 程式碼結構
了解了基本的公式後,就可以開始研究程式碼是怎麼撰寫的。首先來看各個函式的功能:
addLiquidity() 及 removeLiquidity():轉入與轉出資金,留到 三. 流動性 Liquidity 中說明
getInputPrice() 及 getOutputPrice():最主要的函式,用以計算給 ∆x 所能換得的 ∆y 數量、以及為了得到 ∆y 所要支付 ∆x 的數量。此兩函式會被其他負責進行交易、匯幣的函式使用
三組 (eth->Token, Token->eth, Token->Token) 的 swap() 及 transfer():swap() 的收幣人就是付款人、transfer() 的收幣人不是付款人而是指定的對象。基本上這兩函式就是呼叫 getInputPrice() 或是 getOutputPrice() 後進行匯幣的動作,因此不再多做解釋
3. 演算法核心與實作
在研讀程式碼前,先回顧一下 ∆x 和 ∆y 的公式:
首先我們考慮用 ∆x 所能購買到的 ∆y 的 getInputPrice():
什麼…就這幾行程式碼?是的。
以上的程式碼和公式表達方式不同,因此先將 α = ∆x / x 和 β = ∆y / y 代換回來並將上下同乘 x:
source: https://www.codecogs.com/latex/eqneditor.php
由於 γ = 0.003,可以將上下同乘 1000 後得到:
source: https://www.codecogs.com/latex/eqneditor.php
接著就能來對照程式碼了:
(109行) numerator: input_amount 是欲支付的 X 幣數量 ∆x、output_reserve 是 Y 幣數量 y,再乘上 997 後就是等式右邊的上方 (= 997∆xy)
(110行) denominator: input_reserve 是 X 幣的數量,乘上 1000 再加上剛剛算過的 997∆x,就得到了等式右邊的下方 (= 1000x + 997∆x)
此處要注意的是 Vyper 的除法是無條件捨去,等同於 floor() 函式。這會不會造成嚴重的影響呢?如果熟悉 ERC20 的人應該記得,在發幣時輸入的四個參數中有一個參數代表小數點的位數,如同下方程式碼中的 2 代表最後兩位在小數點後。舉例來說,當 getInputPrice() 收到 1234567 為這個幣的 input_amount 時,代表使用者擁有的幣的數目實際上是 12345.67。因此,即使將結果捨去 0.67 後的數字,影響真的不大,況且如果不捨去而選擇無條件進位,那代表交易所反而要虧損一點點啦,太佛心了吧 xD 有興趣者可以看看審計報告的內容,有更詳細地去定義這些誤差所影響的範圍!
再來我們看若要購買 ∆y 需要付出多少 ∆x 的 getOutputPrice()。
一樣先將 α = ∆x / x 、β = ∆y / y 和 γ = 0.003 代換並上下同乘 1000y 得到:
source: https://www.codecogs.com/latex/eqneditor.php
我們已經看過 getInputPrice() 一次了,所以應該能發現第 122–124 行得出的結果和上式相同。要注意的是這邊的結果反而是無條件捨去後直接 +1,因為這是在計算使用者要付多少 ∆x 才能購買到 ∆y,為了不讓交易所虧只能選擇請使用者多付一點點。
4. 段落小結
以上就是撇除匯幣等函示,恆定乘積做市商的 Vyper 實作,沒錯就這樣而已!Uniswap 之所以可以做到低 gas 消耗就是因為這個演算法本身就非常簡單,所需的運算也就是兩三次乘除法而已!
不過我們還沒結束,接下來要談談如何投入資金/注入流動性,而這部分也包含了決定 k 值的精妙機制!
三. 流動性 Liquidity
流動性指的是交易市場中能夠交易的資金/標的物的量。使用自動做市商 (AMM) 而非掛單的最大好處就是市場一定會有流動性,而缺點就是如果交易量越大就會造成越大的滑點 Slippage,意思就是交易價格變動會越大、得到的價格越差 。
source: https://ethresear.ch/t/improving-front-running-resistance-of-x-y-k-market-makers/1281
我們可以用上面提到的 V 文章中的圖片來迅速帶過,畢竟有關注 Uniswap 的讀者大概都已經看過這圖很多次了。
當要兌換的幣的數量越大/占比越重,例如:20% Y 幣的流動性,就會造成要付出比兌換少量時極為不對稱的高額 X 幣。
接著我們要來探討注入流動性的原則,依照市場是否已經有流動性而區分為兩種情形:
1. 第一筆流動性注入、決定 k 值
以下程式碼是 addLiquidity() 函式中 46-48, 51, 及 64-74 行。當市場上還沒有任何流動性時,不會滿足第 51 行而是進入 64 行的 else。
在第 65 行我們可以看到 msg.value ≥ 10¹⁰,以及在 67 行 token_amount 就是其中一個輸入值 max_tokens。這邊代表的是第一個注入流動性的使用者可以自行決定要注入多少 Ether (≥ 10¹⁰) (= x) 以及相應的幣的數量 (= y),也就是上方提到的 k 值 (= x* y),在本例的 X 幣就是 Ether。(本處先不解釋剩餘的程式碼,留到 2. 除了第一筆以外的情況)
那麼問題來了:第一個注入流動性的人要怎麼決定提供各自多少的兩種幣呢?最好的辦法是依照當時兩幣的市價比,讓兩者的價值 (數量 * 價格) 相同,例如:當 1 Ether 的價格為 100 Dai,注入 1 Ether 以及 100 Dai 是最好的,因為兩種幣的總價值是一樣的,以下舉例說明原因。
當 1 Ether 市價為 100 Dai 時,假設第一人決定注入 1 Ether 和 50 Dai (k = 50),總價值為 150 Dai,我們考慮兩種兌換方法:
Ether -> Dai:用 0.1 Ether 來購買 Dai,依照上方公式 (1+0.1)(50-y) = 50 可得 y ≒ 4.55,也就是說得到的價格是 0.1 Ether = 4.55 Dai,遠低於市價 0.1 Ether = 10 Dai,相信沒有人這麼傻~
Dai -> Ether:用 2 Dai 來購買 Ether,依照上方公式 (1-x)(50+2) = 50 可得 x ≒ 0.038,也就是說得到的價格是 2 Dai = 0.038 Ether,高於市價 2 Dai = 0.02 Ether,那麼眼尖的人就會立刻衝來套利了xD
那麼即使如此,第一人有所損失嗎?當然有!假設路人 A 手上有 30 Dai (= 0.3 Ether),A 看到機會後就把 30 Dai 全換成 Ether:(1-x)(50+30) = 50 可得 x = 0.375,大於原本持有的 Dai 的價值 0.3 Ether。此時,第一人即使立刻抽出現存的全部資金 Ether = 0.625 及 Dai = 80,總價值也只剩下 142.5 Dai,比起原本的 150 Dai 還少。以上的計算還有手續費沒有納入考量,但也只有 30 Dai 的 0.3% = 0.09 Dai。
由上例可知,第一位提供流動性的人為了避免自己的損失,確實得依照當時兩幣的市價比去提供相應的數量。傑克,這真是太神奇了0…0
2. 除了第一筆以外的情況
如果市場已經有流動性,使用 addLiquidity() 來注入流動性就會進入第 51 行的 if。
source: https://github.com/Uniswap/uniswap-v1/blob/master/contracts/uniswap_exchange.vy
(53行) eth_reserve: 由於使用者已經透過函式 addLiquidity() 將錢匯入了合約,因此將合約所擁有的 Ether 數量 self.balance (= x + ∆x) 減去使用者匯入的錢 msg.value (= ∆x),得到使用者匯錢之前合約內所擁有的 Ether 數量 (= x)
(54行) token_reserve: self.token 是一個餵入幣地址的 ERC20 instance;透過呼叫 ERC20 的函式 balanceOf() 即可查出合約所擁有的 Y 幣的數量 (= y)
(55行) token_amount: 透過將合約所擁有的 Y 幣的數量 token_reserve (= y) 乘上使用者匯入的錢 msg.value (= ∆x) 對合約原本擁有的Ether 數量 eth_reserve (= x) 的比例,代表使用者應該相應地注入多少 Y 幣 (∆y = y * ∆x / x)。除法一樣是無條件捨去
(56行) liquidity_minted: 將原本交易所中的總流動性 total_liquidity 乘上增加的比率 msg.value / eth_reserve (= ∆x / x) ,代表增加的流動性,隨後會在第 58 行記錄下來
(60行) transferFrom() 函式將使用者應付的 Y 幣數量 token_amount (= ∆y) 匯入當前合約,就完成了流動性的注入。小提示:智能合約中的 assert() 會確保函式內的條件如果失敗就整筆交易 transaction 直接取消,因此只要傳入的參數已經被計算好,於 60 行再進行 transferFrom() 其實與放在前面並沒有太大的差別
以上就是注入流動性的大致實作內容。取出資金 removeLiquidity() 其實與 addLiquidity() 的做法大同小異,因此就不再贅述。
四. 結語
呼,真的累。恆定乘積做市商模型的概念雖然簡單,但解釋起來還是挺複雜的!其實本文並未著墨於審計報告中的主要議題:評估因為整數除法 (不使用浮點數) 而造成的誤差範圍,因為講起來非常複雜、也不是真的這麼需要知道。不過,恰巧就是這些程式碼的細節有可能讓程式產生預期之外的結果!因此,對於有興趣了解該如何去分析智能合約整數除法的讀者,可以研究一下;而 Uniswap 的程式碼因為是用 Vyper 實作,可讀性非常高、同時也不難,因此也非常值得打開來看看、甚至動手實作自己的版本!
最後,如果本文有任何錯誤,請不吝提出,我會盡快做修正;而如果我的文章有幫助到你,可以看看我的其他文章,歡迎一起交流 :)
田少谷 Shao - Medium
Uniswap 解析:恆定乘積做市商模型 Constant Product Market Maker Model 的 Vyper 實作 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
簡單整數比定義 在 邦尼幫你 Youtube 的精選貼文
立即加入邦尼頻道會員計畫:https://www.youtube.com/c/isbonny/join
(#你的恐龍會隨著你的會員等級一起成長哦!)
------ #GooglePixel3 完整開箱評測實測、評價、推薦、值不值得買。透過超完整測試對比 Note 9 , iPhone XS Max,除了告訴你 Google Pixel 3 值不值得買外,更讓你能夠一窺 SnapDragon 845 + 4GB Ram , 快充以及 Google Pixel 3 F1.8 1220 萬畫素單鏡頭模組、Super ResZoom 高解析變焦、Top Shot 絕佳鏡頭、Night Sight 夜拍、Super HDR , Google Lens 智慧鏡頭、超廣角自拍、Google PlayGroud AR 應用;Flexible OLED 螢幕 + HDR 顯示效果、 Google AI 人工智慧語音助理 Google Assistant 並實際測試效能及測試,搭載 Qi 無線充電、Active Edge IPX8 防水防塵、快充效能等超完整實機實際測評。
安兔兔、Benchmark4、3DMark、PCMark 完整數據:https://www.isbonny.com
#邦尼評測:超深入 3C 科技使用體驗
#邦尼LOOK:3C 科技產品開箱快速動手玩
#邦尼LIFE:屬於邦尼幫你團隊的私密生活玩樂
#邦尼TALK:有內容的聊聊科技資訊吧!
你訂閱了這麼多頻道,就是少了一個幫你評測幫你了解科技生活的科技頻道,立即訂閱「邦尼幫你」吧!
訂閱邦尼幫你:https://lnk.pics/isbonnyYT
邦尼幫你 FB:https://www.fb.me/isbonny
邦尼幫你 IG:https://www.instagram.com/isbonny/
邦尼Line官方帳號:@isbonny(http://line.me/ti/p/%40isbonny )
邦尼信箱:service@iwaishin.com
邦尼評測(產品合作):me@iwaishin.com
快來找我們玩!!!!
本期卡濕:
露點的:Google Pixel 3、 威信、驢子
主謀(製作人):邦尼
內容創作:威信
色影師:又民
剪接 / 後期:又民
麥聲人:歐登
內容夥伴:IWAISHIN 愛威信 3C 科技生活
特別感謝:Google 每一個看影片的「你」
我們是邦尼幫你:
以「邦尼幫你」為出發點,秉持著「科技很簡單,新奇可以好好玩」的初衷,以更多實境使用場景及戲劇內容豐富以往艱澀難懂的科技資訊,回歸消費者角度思考產品價值,並以「幫你玩、幫你測、幫你試」等實測內容給予產品評價,此外更期許能夠成為「更貼近消費者觀點」的內容創作者及具有媒體影響力的科技內容創造團隊。