主页 > imtoken冷钱包手机版 > 用pandas进行加密货币基金的投资分析
用pandas进行加密货币基金的投资分析
免责声明:投资有风险。 本文仅提供思路,不承担任何投资成败的后果。
灰度资本及其比特币基金GBTC日前在朋友圈被提及。 几个有兴趣的朋友问我要不要用养老金投资GBTC,怎么投资。 对于此类问题,我一般的回答是:投资有风险,入市需谨慎。
也就是说,因为我真的打算把我Roth IRA的20%投入到一个加密货币基金中,所以我在圣诞假期用pandas做了一点不太成熟的研究。
在阐述我的研究成果和策略之前,我想说:
如果你长期不看好主流加密货币,那么这篇文章应该算是一篇技术文章,里面的思路也适用于其他金融产品的分析。
如果你长期看好主流加密货币,并愿意自己持有加密货币(在自己的钱包里或在可信赖的交易所),那么你应该选择合适的机会自己购买加密货币,而不是灰度资本基金发行的加密货币. 这篇文章作为技术文章也不错。
如果你长期看好主流加密货币,但由于税收原因不愿持有或增持加密货币或担心持有风险,想看看相关基金gbtc股票代码,那么本文的思路可能是对你有帮助。
❗
注:比特币目前处于历史高位,美国证券交易委员会最近对瑞波进行了重击。 整个加密货币市场存在较大的短期回调风险。 不要投入太多资金去追高。
背景知识
Grayscale Capital 是一家专门投资加密货币的基金。 其管理的基金产品可在其官网查看:
其中,管理规模最大、知名度最高的当属Grayscale Bitcoin Trust。 基金投资者可以选择在投资锁定期结束后(目前为6个月)通过在二级市场(OTC)出售所持有的GBTC退出。 从上图可以看出,GBTC在12/24/2020的收盘价为27.32美元,每个GBTC包含0.00095059个比特币(NAV - Net Asset Value Per Share)。 从BTC-USD实时收盘价来看,为22.56美元(Greyscale官网计算为22.36美元,因为BTC是24小时交易,而GBTC跟随纳斯达克的交易时间交易,所以BTC的“收盘价”不同于雅虎财经),大约溢价 17.5%。 Grayscale Bitcoin Trust 募集的所有资金(或比特币),除扣除管理费外,将直接购买比特币,不会购买其他资产,因此理论上 GBTC 的交易价格应该围绕 NAV 波动,不会偏离太多.
可能有人会质疑,我直接买BTC不好吗? 为什么买GBTC还要收近1/5的智商税? 这里有很多原因:
交易风险。 就像你可以在私人交易中购买比特币,得到的价格比在 Binance 和 Coinbase 等交易所要低得多,但你仍然愿意支付更高的价格在这些交易所进行交易。
可购买性。 有些投资账户里的钱不能直接购买加密货币,比如你的个人养老金账户。
税。 任何在美国的投资收益都会被课以重税。 如果买卖不超过一年,税金和其他收入将作为所得税计算,可以随意超过25%。
❗
注意:GBTC 不是 ETF。 目前灰度发行的任何可以在二级市场交易的基金都不是ETF,其投资风险非常高。
好的,这就是背景。 更多详情请谷歌或到灰度官网查看。 我和灰度资本没有任何关系,我也没有持有任何灰度基金。 我只是出于实验目的在二级市场购买它们。 一点GBTC。
GBTC有哪些好的交易机会?
作为一个硬汉程序员,看到这样的问题,自然会想:那我们把所有的历史数据都拿出来,看看NAV和币价有什么关系?
实现这样的代码非常简单,我们需要一个python库:yfinance,用于获取雅虎财经上某只股票(基金、加密货币)的历史数据:
import yfinance as yf
def get_ticker_history(ticker, period='3y'):
t = yf.Ticker(ticker)
return t.history(period=period)
然后,你可以在 Jupyter 中调用它来获取 BTC 的历史价格(返回一个 pandas DataFrame):
可以使用 mplfinance 库将此数据直接可视化为流行的烛台图表:
同样,我们也可以将 GBTC 数据可视化:
可以看出,这两种趋势之间存在很强的相关性。 简单计算收盘价与两者涨跌的相关性:
def get_close_prices(crypto, stock):
df = pd.DataFrame({'Crypto Close': crypto['Close'], 'Stock Close': stock['Close']}).dropna()
comp = df.pct_change().dropna()
return pd.DataFrame({'Crypto Close': df['Crypto Close'],
'Stock Close': df['Stock Close'],
'Crypto Percent': comp['Crypto Close'],
'Stock Percent': comp['Stock Close'],
'Stock Gain': comp['Stock Close'] - comp['Crypto Close'],
'Stock Outperform': comp['Stock Close'] > comp['Crypto Close'],
}).dropna()
可以得到价格(收盘价)的相关系数为0.962,相关性很强,涨跌相关系数为0.7097,相关性比较强。
你可能想知道,GBTC 比 BTC 好还是坏? 五年的数据告诉我们,GBTC的增速高于BTC的天数有599天,低于BTC的天数有659天。 但GBTC的平均增长率比BTC高0.05%。 一般来说,没有太大区别。
OK,我们现在先来看看BTC和GBTC的相关性。
开胃之后,让我们进入正题:找到GBTC NAV和GBTC之间的关系。 从Grayscale的官网上,我们可以得出这样一个公式:
资产净值 = 比特币 * 0.00095059
我们只需要对齐BTC和GBTC的数据,计算出NAV和溢价比例:
import pandas as pd
def get_crypto_and_stock(crypto_ticker, stock_ticker, crypto_per_share, period='3y'):
crypto = get_ticker_history(crypto_ticker, period=period)
stock = get_ticker_history(stock_ticker, period=period)
df = pd.DataFrame({'Value': crypto['Close'] * crypto_per_share})
df1 = pd.DataFrame({'Percent': (stock['Close'] - df['Value']) / stock['Close']})
df2 = stock.join([df, df1]).dropna()
# align crypto data and stock data to the same start date
return (crypto[crypto.index >= df2.index[0]], df2)
让我们调用它来查看数据:
该代码获取BTC和GBTC的历史数据,在GBTC的原始数据之上添加Value,对应NAV,Percent,对应GBTC对NAV的溢价占GBTC价格的百分比。
有了这些数据,我们只需使用 matplotlib 将其可视化:
本图上半部分为GBTC收盘价与NAV的对比。 两条线中间的部分是溢价区gbtc股票代码,时高时低。 下半年是溢价百分比,五年来最高达到59.5%,最低3%,25th-percentile 18.5%,75th-percentile 40.2%(我们在文章开头计算过,平安夜是17.5% , 低于 25%,记住这个数字)。
我很好奇,历史极佳的买入点(min)和历史极佳的卖点(max)在哪里:
果然,BTC的17年高位也是GBTC最疯狂的时刻,溢价接近60%; 而今年4月1日是历史最佳买入点,溢价仅为3.3%。 其实我们查一下数据可以发现,历史级别的好买点今年几乎都出来了(或者说2020年是十年一遇的投资机会),最后一个溢价低于8%的买入点是10月。 七号,你是不是觉得错过了一个亿?
从统计的角度来看(假设 BTC 长期看涨 5-10 年),如果我们以低于 18.6%(第 25 个百分点)的溢价买入,我们将获得不错的回报。 为了证明这个假设,让我们看看如果我们以低于 18.6% 的所有历史溢价买入并持有到今年的回报率是多少(为了比较,我们还计算了与 SP500 相比的回报率)。 代码还是很简单的:
def buy_at_25(df, df_sp500, cost=10000):
buy_point = df['Percent'] <= df['Percent'].describe()['25%']
cur_price = df.iloc[-1]['Close']
cur_price_sp = df_sp500.iloc[-1]['Close']
shares = cost / df[buy_point]['Close']
shares_sp = cost / df_sp500[buy_point]['Close']
values = cur_price * shares
values_sp = cur_price_sp * shares_sp
df1 = pd.DataFrame({'Shares': shares,
'Values': values,
'Values SP': values_sp,
'Percent': (values - cost) / cost,
'Percent SP': (values - values_sp) / values_sp
})
return df1
运行一下(我选择了投资SP500的ETF基金SPY作为参考):
(这张图相对于SP500的回归有一个负数,所以我用了line而不是area)
可见,历史上所有的买点都获利了(废话)。 同样的买入点,与 SPY 的收益相比,25th-percentile 的收益高出 124%。 最糟糕的买入点出现在 2017/12/07,这是我们策略唯一输给 SPY 的策略。
抛开2017年导致超额回报(十倍、二十倍)的“上古时代”不谈,我们来看2019年初至今:
出现的225个买入点,相对标普500都有惊人的回报。 其中,2019 年 2 月 5 日至 6 日,甚至有机会相对于 SP500 的回报率高出 400%。 即使是表现最差的买入点,2020/12/14,也比 SP500 上涨了 20.8%。
事实上,直到今年 12 月,在 25 个百分点的买入点买入 GBTC 的回报率超过 100%。 就连12月出现的5个买点,回报也惊人:
有没有突然发现12/24平安夜有个好买点? 当天 GBTC 的交易溢价“仅”17.5%,低于 25 个百分点。 我们将在几个月后回来查看它与 SP500 的比较情况。
再次声明,以上所有计算都是基于比特币长期看涨的前提。 如果遇到熊市,比如现在的价格就是今年3月18日的崩盘价:
那么,我们用同样的策略之后,会发现,从2019年6月开始,几乎所有的买入行为都会导致亏损,甚至是非常严重的亏损,几乎是难以挽回的。 这也是为什么前几波总会告诉我们:投资有风险,入市需谨慎。
那么,ETHE等可交易基金,有哪些好的交易机会呢?
在一开始的图片中,我们可以看到灰度资本还有其他场外基金。 比如ETHE对应以太坊,BCHG对应比特币现金,LTCN对应莱特币等。其中,除了流通量大的ETHE外,其他板块很小,二级市场交易量为甚至更少,因此不建议触摸它。
我们还拿 ETH 的历史价格走势:
以及ETHE的历史价格走势:
似乎两者之间的相关性很弱。 计算表明,交易价格相关系数为0.45,涨跌相关系数为-0.068。
让我们看看 ETHE 相对于 ETH NAV 的溢价:
第 25 个百分位数的溢价为 48%,相当惊人。 然而,即使在这种溢价下,收益率也比 SPY 好得多:
再看看2020年的买入点,最差的时候比标普500强79%。 刚好翻了一倍多的收益,9月底到10月初还有很多票:
但10月以来,ETHE与ETH NAV背离过大,近期溢价超过60%,买入风险很大,建议观望为主。
因为ETHE的溢价一直处于历史较高水平,所以25th-percentile是48%。 实在难以想象二级市场的投资者为何会承受这样的溢价。 黑格尔说:存在就是理性。 先不讨论为什么会有这么高的溢价。 从统计的角度来看,溢价48%算是一个不错的买入点。
概括
本文介绍如何使用pandas进行投资分析。 感兴趣的朋友可以尝试运行文中描述的代码。 本文使用的策略(在加密货币基金二级市场交易价格溢价的25%以内买入)仅供初学者使用,您可以使用更保守的策略,例如15%,或更激进的策略策略,例如:30th-percentile。
GBTC 和 ETHE 的潜在买入价:
注:我根据BTC 24694和ETH 626计算出对应基金的潜在买入价; 50th-percentile 是一个非常不明智的购买价格,与掷骰子无异,在此发布以供比较。
再次,如果你长期看好加密货币,但是因为各种原因买不到加密货币,只能退而求其次买灰度基金,这是一种在统计上可以长期赚钱的策略感觉。 但并不代表它在短期内可以赚钱,也不代表它是一个更好的策略(例如:它的表现肯定不如“比特币价格低于10000美元时买入GBTC”) ),但这似乎是一种更有效的策略。 可行的策略。
圣人时刻
我说的都是错的。 作为一个有统计基础,会写代码的程序员,应该自己计算验证。 另外,市场上99%的基金经理都不能长期跑赢SP500(>10年),别自以为聪明; 自己计算和验证自己的想法,那么你就可以克服这个市场上大部分的盲目和不开心。
如果您认为这篇文章对您有所启发,请捐赠。 大家圣诞快乐,新年快乐!