Archive for the 'Uncategorized' Category

凈現值(NPV), 內部收益率(IRR)及利用其評估P2P、花唄/白條、信用卡免息期等收益

凈現值(NPV), 內部收益率(IRR)及利用其評估P2P、花唄/白條、信用卡免息期等收益

簡單研究了下基本的關於貨幣投資收益計算的一些知識,整理了這篇文章出來。

基本知識

貨幣的時間價值(Time Value Of Money,TVM)

現在的錢比未來的錢更有價值,因為你可以用錢去投資賺取更多的錢。(除了投資,通貨膨脹也會產生影響,但這裡暫不考慮)

例如,假設一年的投資收益率是10%。現在的 ¥1000 一年後可以得到 1000 * 1.1 = ¥1100。現在的 ¥1000 等於一年後的 ¥1100。

現值 (Present Value, PV)

考慮貨幣的時間價值後的(預期的)未來貨幣現金的當前價值。

在上面的例子中,一年後的 ¥1100 其現值就是 ¥1000。

凈現值 (Next Present Value, NPV)

考慮流出的錢(投資或支出)後的投資價值,越大越好。

用例子說明:(來源 http://www.shuxuele.com/money/net-present-value.html)

<code>一個朋友問你借 ¥500,一年後會還你 ¥570。
如果你的錢(在其他地方投資)可以得到 10% 年利息,借錢給他划算嗎?

本投資的現金流:
現在:-500 (投資支出)
一年後:570 (投資收回)

PV = 570 / (1+0.10) ** 1 = 518.18

凈現值 = 518.18 - 500.00 = 18.18

所以,當利率是 10% 時,這個投資的價值是 ¥18.18
(就是說,這個投資比得到 10% 的利息好。)

但如果在其它地方投資的年利息是 15%,則計算出的凈值是¥−4.35,
此時這個投資就變得不划算了。
</code>

符號說明:

<code>** 表示指數運算符,右結合,優先級高於其它四則運算符。

比如 2 ** 3 = 8,3 ** 2 = 9

為什麼用這個運算符而不用「^」?因為在 javascript 和一些其他語言里,
** 就是標準的指數運算符,用它寫的表達式可以直接放到 console / node 里算。
</code>

如何計算 NPV ?最簡單的方法:用 Excel 公式 NPV(rate, …values)

內部收益率 (Internal rate of return, IRR)

評估投資收益的方式。當使用內部收益率計算投資的凈現值時,結果恰好等於0。

計算內部收益率沒有直接的公式,”猜測和檢查” 是最常見的求凈現值的方法,即已知一個投資的(預期)全程現金流,先假設一個 IRR 值,用其來計算該投資的 NPV,如果結果 > 0,則減小假設的 IRR 值後再次計算(反之亦然),直到找到的 IRR 值計算出來的 NPV 非常接近 0.

例子:(from http://www.shuxuele.com/money/internal-rate-return.html)

<code>今天投資 ¥2000,以後3年每年收到 ¥100,第三年另外再得到 ¥2500。

這個投資的現金流:
現在: -2000
1年後: 100
2年後: 100
3年後: 100 + 2500

通過嘗試-比較,當使用 12.4% 利率時,計算出來的凈現值接近 0,
則這筆投資的內部收益率(以年為單位)就是 12.4%。

計算過程:
現在:PV = −¥2,000
1年:PV = ¥100 / 1.124 = ¥88.97
2年:PV = ¥100 / 1.124**2 = ¥79.15
3年:PV = ¥100 / 1.124**3 = ¥70.42
3年(終極收付):PV = ¥2,500 / 1.124**3 = ¥1760.52

加起來:凈現值 = −2000 + 88.97 + 79.15 + 70.42 + 1760.52 = −0.94
</code>

實際利率與名義利率

(以下表述非專業術語,專業術語稱利率為「貼現率」)

投資的實際利率 != 名義利率,而是與投資期限相關。對於同樣的名義利率,期限越短,實際利率越高。

考慮到通常利率以「年」為單位標識,以下敘述都使用「實際年利率」和「名義年利率」來說明。

例如:

<code>如果一個投資的名義年利率是 10% (0.1),期限半年。
則考慮復投,投資1元,1年後能拿到:
(1+ 0.1/2)**2 = 1.1025
則這個投資的實際年利率是 10.25% (0.1025)。
</code>

「實際年利率」是評估某個投資實際收益率的標準,其含義為該筆投資等效於「一年期定期存款」時的存款年利率,專業術語稱為「複合年化收益率」(或簡稱「年化利率」),以下使用這個術語。

參考: http://blog.sina.com.cn/s/blog_51a238b401008w0x.html

<code>設 P0 為年初之初值(其同時亦為該年首季度和首月之初值),
P為年末之終值,I年度、 I季度 、I月度 分別為年度、季度、月度貼現率

則 P= P0 *(1+ I年度)= P0 *(1+ I季度)**4= P0 *(1+ I月度)** 12

於是,I年度 =(1+ I季度)**4 – 1 =(1+ I月度)**12 – 1

可見  I年度 ≠ 4 * I季度 ≠ 12 * I月度 。
</code>

一般的,對於一個期限為 m 月,名義年利率為 x 的(到期還本付息還款方式)投資,其複合年化收益率(實際年利率) y 公式為:

<code>y = (1 + x/(12/m)) ** (12/ m) - 1
</code>

以上的計算過程都是針對還款方式為「到期一次性還本付息」類型的投資而言的。

而對於分期回款的投資(比如「等額本息」還款方式),要計算複合年化收益率,需要先從(預期)現金流計算 IRR 。

計算 IRR 可以用 Excel 公式 IRR(…values)

對於 IRR 計算而言,需要選擇一個(名義利率)期限作為利率計算標準。例如:

<code>如果投資是最初一次性支出,然後固定間隔期限分期回款,
用 Excel 的 IRR 公式計算出來的是以"每期間隔"(設其為 b 月)為單位的利率,
假設計算結果為 a, 則複合年化收益率 y = (1 + a)**(12/b) - 1

例如: 投資10000元半年期年利率10%定期存款:(金額不能太小否則計算誤差大)
A1: -10000
A2: 10500
=irr(a1:a2) // 5% (0.05)
則複合年化收益率 = (1 + 0.05)**(12/6) - 1 = 10.25%
</code>

因此,對於「等額本息」還款方式的投資,可以直接用上面所述的 Excel 的 IRR 公式根據每月回款額來計算複合年化收益率(或許也可以直接推導?但我不會):

<code>假設放貸 1000000 (100萬)元,期限 2 年,年利率 10%,
等額本息還款方式每月回款。
則每月回款 46144.92 元(計算過程略,有公式,也可以找個貸款計算器算)

Excel:
-1000000 // a1
46144.92 // a2
46144.92
....
46144.92 // a25
=irr(a1:25) // 0.00833322
複合年化收益率: (1 + 0.00833322)**12 - 1 = 0.10471157744905524 (10.47%)
(注意這裡不能用 0.00833322 * 12 來算,會低估實際值)

如果其它條件相同,把貸款期限變成只有6個月(每月回款 171561.39)。
則計算結果 irr = 0.00833326
複合年化收益率:(1 + 0.00833326)**12 - 1
= 0.10471210332845904 (10.47%)
結果比之前略高(雖然差距很小)
</code>

可以看到,和「一次性還本付息」還款方式的投資相同,對於」等額本息「還款方式的投資而言,相同利率下也是投資期限越短,最終的實際複合年化收益率就越高。(但對「等額本息」這種還款方式的投資,期限不同導致的實際收益率差距不明顯)

可以合理推斷,對於「等額本息」還款類型的貸款(放貸),當期限很長時,其實際複合年化收益率趨近其標稱年利率。

「等額本金」還款方式的投資其計算結果應該與「等額本息」的一致。

知識應用

以下用上面的知識來分析生活中一些常見投資、消費場景的實際收益。

拍拍貸賠標實際投資收益率

根據之前的「等額本息」的月IRR計算方法來推導拍拍貸散標實際收益率(複合年化收益率):

(所有均以等額本息放貸100萬,月回款舍入到分計算得出)

標稱年利率9.5%,期限3個月的賠標(9.5%-3月陪):
月 irr = 0.007916661
複合年化收益率:0.09924750991929043 (9.92%)

10%-6月賠:
月 irr =0.00833326
複合年化收益率:0.10471210332845904 (10.47%)

11%-12月賠:
月 irr = 0.009166651
複合年化收益率:0.11571862834537927 (11.57%)

12%-18月賠:
月 irr = 0.009999986
複合年化收益率:0.12682484269970118 (12.68%)

12%-36月賠:
月 irr = 0.009999983
複合年化收益率: 0.1268248025356471 (12.68%)

(所以36月的12賠也不算太坑爹?)

(以前的)13%-12月賠:
月 irr = 0.010833323
複合年化收益率:0.1380323420102305 (13.8%)
算上提前還款的實際收益肯定超過14%,大平台中僅此一家,可惜現在降息了。

信用卡

消費

因為信用卡存在免息期,在消費日和還款日之間存在一段時間,相當於用「未來」的錢來消費買了「現在」的東西,根據「現值」理論,未來的錢沒有現在的錢值錢,所以這樣做實際上相當於商品價格打了折。具體等效於打折了多少取決於你的投資收益率和免息期長短。

假設你的投資複合年化收益率12%,每月10日是信用卡賬單日,28日是還款日(賬單日當天消費計入下期賬單)。

例:
1月10日:信用卡消費 10000 元。
2月28日:信用卡還款 10000 元。

<code>計算這次信用卡消費等效打折了多少:

這次消費的免息期為最長的 49 天。

由複合年化收益率 0.12 反推這49天的收益率為: 1.12 ** (49 / 365) - 1
= 0.015330309762151106 (1.533%)

所以2月28日的 10000 元的現值是:10000/(1 + 0.01533) = 9849.01
</code>

即相當於買東西打了 9.85 折。

如果你的投資複合年化收益率能達到 15%,則上面計算的結果會相當於 9.81 折。

上面的計算都是以「在最長免息期時消費」的前提下進行。消費日期距離(下個)賬單日越近,則計算出的信用卡消費等效折扣越低。對於上面的例子,在最短免息期(每月9日,免息期19天)時消費,則只相當於9.94折(複合年化收益率按12%計算)。

結論:(不考慮積分和其他信用卡優惠)信用卡任何消費都相當於打了折,但折扣聊勝於無。

套現

假設在免息期為 m 日時套現任意金額,套現費率為 x,

則套現的費率等效複合年化收益率為(有輕微誤差,因為套現手續費是在期初預先扣掉了):

<code>(1+x) ** (365/m)-1
</code>

例如,假設在免息期為 49 日時套現,套現費率為 0.5% (0.005), 則套現費率等效複合年化收益率為:

<code>(1 + 0.005) ** (365 / 49) -1
= 0.037850860687675514
= 3.78%
</code>

如果套現費率為 1%, 則計算結果等效複合年化收益率為 7.69%。

可見信用卡套現還是比較划算的,你套現的資金投資複合年化收益率只要比上面計算出來的結果高,那麼套現就有利可圖。

支付寶花唄 / 京東白條

免息分期

花唄賬單日為每月1日,還款日為每月9日或10日。每月的消費計入消費日(對於淘寶:確認收貨日)所在月的下個月的賬單。所以在每月1日的消費(或淘寶確認收貨)有最長的40天免息期,淘寶推薦每月19日以後下單,期間可以手動延長一次確認收貨時間(3天),到下個月初確認收貨,再下一個月才需要還款。

京東白條:新用戶激活白條當天就是「專屬賬單日」,白條老用戶的專屬還款日則定在用戶生日的當天。賬單日9天之後就是還款日。最長免息期40天。

如果不考慮分期,這兩貨就和信用卡差不多。但是這兩貨最大的好處是經常淘寶/京東經常有一些3/6/12期免息分期的優惠活動。來計算下這種分期免息的等效優惠幅度:

為方便計算,假設 1月10日 在淘寶用花唄 6 期免息買了一個 10000 元東東。則 2月10日-7月10日每月需要還款 1666.66 元。(如果是1月1日買的,那麼從消費到第1次還款的間隔不是30天,和後面的還款間隔不等,不能直接用下面的計算方式。)

<code>假設投資複合年化收益率為12%,則30天的收益率為: 1.12 ** (30 / 365) - 1
= 0.009358203165413581
(注意不能用 0.12 / 12 來算,原因之前解釋過了)

用 Excel計算下凈現值:
0.009358203165413581 //a1
1666.66 // a2
...
1666.66 //a7
=NPV(a1, a2:a7) // 9680.43
</code>

結果表明相當於打了9.68折。

如果是 12 期免息分期:結果相當於打了 9.42 折。

如果是 3 期免息分期,結果也相當於打了 9.82 折。

如果你的投資複合年化收益率能達到 15%,則3/6/12期免息分期分別相當於打折幅度:9.77,9.6,9.3。

結論:所以免息分期還是很不錯的,就是記住只買真正需要的東東,別看到什麼便宜的免息分期的都買,買回來一堆電子垃圾放那吃灰(就像我這樣。。)

不免息分期

如果使用花唄/白條不免息分期,需要收取一定手續費,花唄12期分期手續費率一般是(商品總金額的)7.5%,平攤到每月按月收取。10000元的商品分12期每月需還款 895.83 元。

從淘寶的角度,這將相當於淘寶借了一筆錢給我們。來計算下淘寶方這筆放貸的內部收益率(IRR):

<code>-10000 // a1
895.83 // a2
...
895.83 // a13
=irr(a1:a13) // 0.011305

淘寶獲得的(等效)複合年化收益率:(1 + 0.011305) ** 12 - 1
= 0.144421091883655 (14.44%)
</code>

(註:Excel 函數 XIRR(values, dates) 可以直接計算出一組現金流的複合年化收益率,但需要設置每個現金流事件時間。)

從我們的角度,可以計算下這些未來還款的凈現值。只有當你你的投資年化複合收益率超過了 14.44%,最後計算出來的凈現值結果才會 < 10000 元,這時的分期才是划算的。否則就肯定(與不分期直接付款相比)虧。

Android 雙層代理配置 (shadowsocks + VPN)

在 Android 環境下使用雙層代理,同時使用 shadowsocks 和其它VPN App:

手機 -> ss server -> VPN server -> Target

手機環境:
已 root
安裝 shadowsocks-android 和任一其它 VPN App

配置:

1. 在終端(adb shell 或任一 terminal app)里以 root 用戶執行命令修改路由:

ip rule add to <SS_SERVER_IP> lookup wlan0
ip rule add to <SS_SERVER_IP> lookup rmnet_data0

每次手機重新啟動後都需要執行一次上面命令。

2. 將 Shadowsocks-Android 設為 NAT 模式;編輯 profile 文件,開啟 per-app mode, 去掉 “bypass mode” 選項,app list 里只選中 VPN App。

3. 啟動 shadowsocks 和 VPN 即可,VPN 需要工作在 tcp 模式。

How it works:

當 shadowsocks 配置為以上模式時(步驟2),只會攔截 VPN App 的 OUTPUT 流量 (以及 dns 解析請求) 並轉發到本地 ss 端口。所以只有 VPN App 到 VPN Server 的流量會走 ss(VPN 的虛擬網卡流量是內核維護的,不屬於 VPN App,所以不會被捕獲),這樣就實現了雙層代理。

ivy_dsds:/ # iptables -t nat -vxnL OUTPUT
Chain OUTPUT (policy ACCEPT 11095 packets, 773246 bytes)
......
    1213    79262 DNAT       udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:53 to:127.0.0.1:1133
      33     1980 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            owner UID match 10124 to:127.0.0.1:8123

但是 VPN 啟動後會修改路由表默認路由,所以必須保證到 ss server IP 的路由直連。這個只需要用 ip rule 添加一個自定義路由規則即可(步驟1)

広辭苑無料利用サイト

暇つぶしで「広辭苑無料検索」というサイトを作ってきました。「広辭苑」などの國語辭典をご利用・検索ことができます。辭典データの情報源はネットでダウンロードした「EPWING」形式の辭典ファイルです。サイトのすべての機能が無料です、お気軽にご利用してください。

サイトの入り口:広辭苑無料検索

現在ご利用できる辭典リスト:

  • 岩波書店·広辭苑第六版
  • 小學館·中日日中統合辭書第2版
  • 三省堂·スーパー大辭林
  • 三省堂·必攜類語実用辭典
  • 三省堂·必攜故事ことわざ・慣用句辭典

サイトの開発フレームワーク:React + Redux

ゴールデンアワー

Getchu, CG, Torrent & CG Torrent, 空間

LE 出錯, 需要用 Ntlea 等轉區軟件運行

這作好棒.

まりか線我還以為是Bad End呢.

2017-08-12 All Clear.

True End 略鬱悶, 要是來個類似”神様のゲーム”結局那種伏筆就好了.

PS. 夏未線那個「梅田千尋」好像也是和惡魔簽訂300天死亡契約的吧, True 線里完全沒提…

PS. 好喜歡南浜よりこ的畫風. 哦想起來「ヒマワリと戀の記憶」我以前推了一半就放哪裡了, 找時間回頭把它推完.

AbemaTV android app 簡單破解去除區域限制

AbemaTV-無料インターネットテレビ局」是一個日本網絡電視台「アベマTV」出的視頻 App,裏面不少節目和視頻都是免費的。

但是我安裝後發現這個 App 有區域限制,啟動時全屏顯示 「このサービスはお住まいの地域からはご利用になれません。」提示,無法繼續。

簡單地嘗試下破解了這個 App 的區域限制。步驟如下:

1. 從 apkpure 下載 AbemaTV app 最新版的 apk

2. 用 apktool 這個工具解包下載的 apk. apktool 是一個 java 包,需要安裝 Java 運行。

java -jar apktool_2.2.4.jar d “AbemaTV 無料インターネットテレビ局_v3.5.1_apkpure.com.apk”

3. 解包後的文件在當前目錄下 “AbemaTV 無料インターネットテレビ局_v3.5.1_apkpure.com/” 文件夾。其中,res/ 是資源文件,smali/ 和 smali_classes2/ 是 java 源碼編譯後的 smali 文件。這個 app 好像沒怎麼加密什麼的。

在整個目錄里搜索 「このサービスはお住まいの地域からはご利用になれません。」 字符串,找到:

<string name=”error_abroad_description”>このサービスはお住まいの地域からはご利用になれません。</string>

搜索 error_abroad_description,找到:res/values/public.xml:
<public type=”string” name=”error_abroad_description” id=”0x7f0a0114″ />

搜索 0x7f0a0114,找到 smali_classes2\tv\abema\components\fragment\a.smali:

.class public Ltv/abema/components/fragment/a;
.super Ltv/abema/components/fragment/u;
.source “AbroadFragment.java”

const v1, 0x7f0a0114
invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(I)V

可以看到,這是一個 Fragment 類編譯成的 smali 文件,當 app 檢測到當前設備是日本以外區域(檢測方法未知,可能是檢測手機sim卡運營商信息)時就在當前 activity 上加載這個全屏 fragment 以阻止使用,所以最簡單的破解方法就是把這個「創建並顯示 Fragment」部分代碼去掉。

搜索 “Ltv/abema/components/fragment/a”,找到:
smali\tv\abema\a\jk.smali

.line 202
const-class v0, Ltv/abema/components/fragment/a;
invoke-virtual {p0, v0}, Ltv/abema/a/jk;->I(Ljava/lang/Class;)V

看起來就是這裡了,將這幾行用 “#” 注釋掉。

4. 最後,用 apktool 重新打包修改後文件生成 apk,參數就是之前解包apk文件所在目錄

java -jar apktool_2.2.4.jar b “AbemaTV 無料インターネットテレビ局_v3.5.1_apkpure.com”

生成的 apk 在 AbemaTV 無料インターネットテレビ局_v3.5.1_apkpure.com/dist 文件夾下。

生成的 apk 是未簽名的,無法直接安裝。可以手工用 java bin目錄下 keytool 工具生成密鑰,jarsigner 工具給 apk 簽名。(具體過程網上資料很多);也可以用直接用 apk-signer 這個圖形化工具來進行

最後在手機上安裝生成的 AbemaTV_v3.5.1_SIGNED_UNALIGNED.apk 即可,實測能夠正常進入主界面並觀看視頻,搞定。

附上我自己生成的破解區域限制的 AbemaTV apk:

AbemaTV_v3.5.1_SIGNED_UNALIGNED.apk

Update

修改 app 包後無法使用 Google Play IAP 內購功能。最完美的破解 root 檢測方法仍然是安裝 XPosed + rootcloat

Update.2 (2017-08-08)

類似方法解除 Hulu 日本Android app的 root檢測:

由錯誤提示「OSの整合性チェックに失敗しました。Root権限を取得している場合、起動できません。」跟蹤找到某個Fragment:


const-string v2, “su”

invoke-virtual {v1, v2}, Ljava/lang/Runtime;->exec(Ljava/lang/String;)Ljava/lang/Process;
:try_end_0
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0

move-result-object v0

const v1, 0x7f0900e8

這裡通過運行 su 檢測是否有異常來判斷機器是否已 root,所以最簡單的移除方法就是把 “su” 隨便改成個不存在對應命令的名字。

Hulu.jp_v1.0.11_apkpure.com_SIGNED_UNALIGNED.apk

Tweets Archive between 2017-05-22 and 2017-05-28

  • 幾年前通過github免費領了2000個ripple山寨幣就放那沒管,今天一看這貨對人民幣匯率竟然漲到2.2了。。要不要賣掉呢。。。 17:08:01, 2017-05-22

Tweets Archive between 2017-05-15 and 2017-05-21

Tweets Archive between 2017-05-01 and 2017-05-07

Tweets Archive between 2017-04-24 and 2017-04-30

母になる

看了這部日劇前兩集, 感覺就像吃了一堆屎一樣難受. 特別是第二話那封信. 麻子役大嫌い!

話說我為什麼要看這麼虐的劇集? 我還是去推廢萌 galgame 吧.