Finance::Quote on MacOS and Windows

MacOS 上的 Finance::Quote 由于 Date::Simple 的 test 不通过会导致无法正常安装:

1
2
3
t/date.t ...... 1/227
# Failed test at t/date.t line 106.
# Looks like you failed 1 test of 227.

然而强制安装是可以正常运行的,所以使用以下命令就能强制安装了:

1
sudo env ARCHFLAGS='-arch arm64 -arch arm64e -arch x86_64' cpan -f -i Finance::Quote

Windows 稍有不同,首先安装 Strawberry Perl,然后打开 cmd,用 cpan -T 来跳过测试、强行安装需要的包。“需要的包”可以查看 gnucash 安装目录的 gnc-fq-update 文件,目前包括:

  • Test2
  • Finance::Quote
  • JSON::Parse

Read More

AFM Chapter 16

Announcement: All pictures are from the book Jonathan Berk, Peter DeMarzo - Corporate Finance (2024).

MM理论讨论了 tax shield 之后,变成了

给出的 optimal capital structure 就是 interest 等于 earning before tax,这样就可以完全不交税、实现 investor 收益最大化。然而现实世界里面的公司不会这样做,甚至负债水平远低于 optimal leverage。这一章讨论的就是还有什么其他的因素影响了公司选择 capital structure。


在 perfect capital market 下,if a firm:

  1. has access to capital markets
  2. can issue new securities at a fair price

那么只要 assets exceeds liabilities 就不会 default。


Decline in value is not caused by bankruptcy. 项目成败决定是否会出现 economic distress;leverage 影响是否会有 financial distress.

Read More

OpenGFW Experience

因为现在很多 App 会内置 resolver,只会跟系统的 DNS 请求一个它的 HTTPDNS 服务器的地址,后续就不会请求系统的 DNS 了,导致 DNS 广告过滤会失效。不想24小时开着 Surge,但是又想制裁广告的话,就只能用类似 SNI 阻断的方式了。

很久之前就听闻过 OpenGFW 的大名,这次终于找到了使用它的场景。恰好 AUR 里面有人已经做好了 PKGBUILD,直接一键安装就行。但是 service 文件得自己写,简单写一个:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Unit]
Description=OpenGFW
After=network.target nftables.service

[Service]
Type=simple
WorkingDirectory=/run/OpenGFW
RuntimeDirectory=OpenGFW
ExecStart=/usr/bin/OpenGFW -c /etc/OpenGFW/config.yaml /etc/OpenGFW/rules.yaml
ExecReload=/bin/kill -HUP $MAINPID
TimeoutStopSec=5s
PrivateTmp=true
ProtectSystem=strict
NoNewPrivileges=true
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target

最简单的屏蔽就是使用 geosite:category-ads-all 来确定哪些是广告域名了。我们针对 HTTP、TLS 以及最潮最 IN 的 QUIC 进行判断,可以写以下规则到 rules.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
- name: block tls ad geosite
action: block
log: true
expr: geosite(string(tls?.req?.sni), "category-ads-all")

- name: block http ad geosite
action: block
log: true
expr: geosite(string(http?.req?.headers?.host), "category-ads-all")

- name: block quic ad geosite
action: block
log: true
expr: geosite(string(quic?.req?.sni), "category-ads-all")

如此一来就可以 start/enable 了。试过确实好,不过不建议对路由器本机生效,也就是 config.yamllocal 要设置成 false我对 0.4.1 版本进行的 speedtest 测试发现,对本机生效的话,延迟从 1 ms 提高到了 11 ms,下载和上传从 900 Mbps 分别降低到了 800 Mbps 和 600 Mbps,损失很大。

Read More

Quick Walk in Sai Kung

西贡去一趟不容易,从家里接驳去西贡专线的小巴不好坐,下次还是坐观塘线过去彩虹再转车比较好。

不得不说这个地方的海真的漂亮,不加滤镜就能很好看。40块港币来回船票,在香港算是便宜了。

我们今天只爬到黑山顶就折返了,主要是赶着回家看书。下次比较空闲的时候再来一趟,从厦门湾爬到桥咀,走个全程。

塑料虾诱饵

黑山顶

可爱暴龙

蓝海

Read More

credit agricole group CIB宣讲会

今天参加了 credit agricole group 的 corporate and investment bank 的宣讲会,跟几个 representative 聊了一下,特别是跟 structuring 的 Edwin Fung 聊了比较多。这几位都很友善,特别是负责 trading 业务的 Patrick 可以说是幽默风趣又非常有实力,加上运气很好。

整个宣讲会的过程都在强调 interest、passion;和 Edwin 聊了之后,strength 也成了我的困惑的问题。他说 strength 是假设现在和其他人竞争,你绝对不会输的一个方面。可是我就是那种两个强项(金融和编程)都会但是都不突出的人,这就很困难了。

Read More

InvPortAna Tutorial 1

今天上的课是 Investment and Portfolio Analysis 的 Tutorial 课程,主要介绍的是用 Excel 处理从雅虎等网站下载下来的股票数据,计算收益率、收益率的平均值、标准差、方差,以及如何画出正态分布的图的过程。另外还初步介绍了 Excel 的分析师工具,主要演示了怎么快速地把数据塞进自定义的 bin 里面做 frequency 直方图。

Read More

财经资讯

美国总统候选人的影响。特朗普当选:

  1. 美元强势
  2. 国债收益率高
    1. 特朗普倾向于减轻对金融机构的限制(特别是Fed最近想做的提高银行的capital 9%,特朗普上任的话这个政策几乎不会执行)
    2. 特朗普的贸易政策更加封闭
    3. 以上两点会导致美国的通胀压力更大,美联储的利率会更加谨慎

哈里斯当选:

  1. 美元和国债的波动不明朗
  2. 哈里斯对美联储造成的挑战会比特朗普少

降息其实有两方面影响:公司的负债压力降低(很直觉);但是公司的利息收入也会降低(导致Net interest income减少)。

Read More

Trip to Lantau Island

今天难得两个人都没有安排,所以决定去大屿山玩一下。首先必玩项目就是昂坪360缆车,我们只买了普通车厢,但是体验也非常好,因为多数人都会买更高级的车厢,所以普通车厢反而没有什么人坐,我们两个直接包厢了——官方渠道的保证包厢可是要3800港币的,赚麻了。

缆车上能够看到港珠澳大桥,从高处看就像盘在海上的龙;下缆车之后的大澳小艇游从海面看过去则更加震撼,真可谓超级工程。

缆车上看的港珠澳大桥

海面看港珠澳大桥

在缆车上还能看到一尊大佛,下缆车之后经过一个12生肖守护神小公园之后就能够爬一段长阶梯来到佛面前。这个景点印度人和其他外国人都很多,大家都爬得气喘吁吁但是也要上来看看这个大佛。佛的底座是个小厅,墙上都是牌位,其中最出名的就是梅艳芳的牌位。拜完佛下了楼梯还有一座庙,我们也进去转了一下;大雄宝殿的后面还有一个万佛殿,有五尊佛像,不过繁体字也看不懂是哪方神圣。

从缆车公交站坐车去到大澳渔村,先是坐了之前提到的大澳小艇游,然后再逛了一下渔村。她给我介绍了一下这里的棚屋区的历史和现时政策,比如有后代可以继承、没有的话就会被收回;门口供奉的是石头因为没有钱买观音像。大屿山直到现在也是因为远离维港而发展落后的地区,现在通了地铁、发展了一些旅游业,算是有了一点发展。

在那里我们吃了一家砂锅蟹粥,虽然坐下才发现有低消50每人,还要收服务费,但是后来突然横风横雨,甚至连手机信号都挂断了几分钟,感觉这点服务费也算是值了。

Read More

Notes on Configure iptables forwarding SSH

由于国情在此,所以从内地直连 H 地的 SSH 很快就会被阻断;但是连接 A 国的服务器则不会受到如此干扰。由于 H 地和 A 国的机器之间已经通过 WireGuard 连接起来,所以自然就产生了 “能不能通过在 A 国机器上设置防火墙规则 reroute 某个端口的流量到 H 地的机器上实现曲线救国呢” 的想法。

通过 Google 和 ChatGPT,得出的答案都是类似的:

1
2
3
4
5
6
# 1,启用 IP Forwarding
sudo sysctl -w net.ipv4.ip_forward=1
# 2,给 iptables 的 prerouting 加 dnat 规则
sudo iptables -t nat -A PREROUTING -p tcp --dport 10022 -j DNAT --to-destination <MachineH_IP>:22
# 3,给 iptables 的 postrouting 加 masquerade 规则
sudo iptables -t nat -A POSTROUTING -p tcp -d <MachineH_IP> --dport 22 -j MASQUERADE

但是这样下来 ssh -p 10022 MachineA_IP 依然是不通的。百思不得其解,因为 nat 表的那几条规则是真的在转发数据包了,但是就是不通。后来看到 Stack Exchange 上关于这个话题的帖子之后,被启发到可能是 FORWARD chain 出现了问题。给 FORWARD chain 加了临时 LOG 进行分析之后发现,由于 FORWARD 的 policy 是 drop,所以如果不添加规则来接受这些要被转发的包,那么它们也会被 drop 的。所以还需要以下命令来让转发能够完成:
Bash

1
2
3
4
# 去程 accept
sudo iptables -A FORWARD -p tcp -d <MachineH_IP> --dport 22 -j ACCEPT
# 回程 accept
sudo iptables -A FORWARD -p tcp -s <MachineH_IP> --sport 22 -j ACCEPT

Read More