Your Simple Guide To Creating An Effective Rebalancing Tool
Rebalancing is a great method to ensure you sell high and buy low, it takes the emotion out of trying to call the bottom or the top. It really is a staple of investing, although most asset management firms rebalance for you whether its an index fund or your 401(k), for this tool you will have to do the trading yourself. Normally you see a stock portfolio rebalanced quarterly but in crypto a more aggressive rebalancing strategy may be necessary.
In light of this I'm going to share a new Google Sheet I put together that assists you in rebalancing your portfolio.
Features
Before we start here are some cool features:
- Prices pulled from Coinmarketcap
- Automatically tells you what to buy and sell in your portfolio
- Can account for adding recurring deposits to your crypto portfolio
Ok lets begin...
1 - Make a copy of this Google Sheet: Rebalance Tool
2 - Once the Google Sheet is copied open Tools> Script Editor...
3 - Remove default text when script editor loads.
4 - Copy and Paste this into the new script:
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "Refresh",
functionName : "refreshLastUpdate"
}];
sheet.addMenu("Refresh", entries);
};
function refreshLastUpdate() {
SpreadsheetApp.getActiveSpreadsheet().getRange('I5').setValue(new Date().toTimeString());
}
function ccprice(name, currency, datetime)
{
var url = "https://api.coinmarketcap.com/v1/ticker/" + name + "?convert=" + currency
var response = UrlFetchApp.fetch(url);
var json = response.getContentText();
var data = JSON.parse(json);
var priceval = { "EUR" : data[0].price_eur, "USD" : data[0].price_usd, "BTC" : data[0].price_btc,
"AUD" : data[0].price_aud, "BRL" : data[0].price_brl, "CAD" : data[0].price_cad,
"CHF" : data[0].price_chf, "CNY" : data[0].price_cny, "RUB" : data[0].price_rub,
"GBP" : data[0].price_gbp, "HKD" : data[0].price_hkd, "IDR" : data[0].price_idr,
"INR" : data[0].price_inr, "JPY" : data[0].price_jpy, "KRW" : data[0].price_krw,
"MXN" : data[0].price_mxn, "eur" : data[0].price_eur, "usd" : data[0].price_usd,
"btc" : data[0].price_btc, "aud" : data[0].price_aud, "brl" : data[0].price_brl,
"chf" : data[0].price_chf, "cny" : data[0].price_cny, "rub" : data[0].price_rub,
"gbp" : data[0].price_gbp, "hkd" : data[0].price_hkd, "idr" : data[0].price_idr,
"inr" : data[0].price_inr, "jpy" : data[0].price_jpy, "krw" : data[0].price_krw,
"mxn" : data[0].price_mxn, "cad" : data[0].price_cad }
var price = priceval[currency]
return price
SpreadsheetApp.flush();
}
4 - Save Script (any name is fine)
5 - Start editing for your data. Collumns B, C, D are the only manually entered data.
- B - Name of your coin
- C - Ideal value that coin should be in as a percentage of your portfolio
- D - Quantity of coin currently held (You can put 0 if you intent to buy some)
6 - To add or change a coin or the FIAT currency just select the respective $G cell and change the name of the coin. See this screen shot.
7 - To refresh the sheets prices anytime use the menu option refresh. Note: This actively calls the function which will require permissions - google will ask if you want to run it, follow the prompts to approve it. It will only do this the first time you run the script in a new sheet.
The end!
Hope you like the tool, if you have any questions or run into issues I'll try to support you in the comment section. I wish you the best in your journey to wealth!
Tips always appreciated:
BTC: 1LdHmPUAEggc5Rk6UmczSkfT8tYL68txb6
BTC: 1LdHmPUAEggc5Rk6UmczSkfT8tYL68txb6
Sources & References
Kick ass Coinmarketcap api script sampled from: rathergood Github
Refresh function to update google sheet sampled from: Stack Overflow
Cool, but why did you not address one of the most important questions: how often and when to rebalance? Once a year? Once a month? Once a week?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Well for one, this is a post sharing how to make a google sheet work as a rebalancing tool not an educational piece on the topic of rebalancing. I did however mention in the first paragraph that a more aggressive rebalance strategy may be necessary in comparison to a quarterly schedule. The reason is quite simple, there is no one size fits all time period nor is there a set deviation from you target allocation that triggers a rebalance.
Regardless let me cover this question because it does come up. First of all when is a function of how often the vast majority of the time.
So how often? Thats up to you. But if you're totally unsure start with a 2 week period.
Now when? At the end of the two week period unless your deviation from your target allocation on all assets is less than 5%. If nothing as moved more than 5% wait for the next 2 week period.
Everyone will have a personal decision to make about these two questions because withdraw fees, exchange fees, network fees can impact a small portfolio more so than a large portfolio.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I was also wondering how often to rebalance. This is definitely an helpful answer! Another factor that's important to me is how much time I want to spent on trading. So far I couldn't help myself checking coinmarketcap several times a day, with that constant FOMO feeling. Rebalancing with a set period gives me more peace of mind. So, many thanks for the balance sheet and the guidance! And @coinmasteryct thanks for sharing this on your youtube channel!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
This is truly exceptional.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
This looks great, thanks for sharing!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks @olyup!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Misspelled "Rebalancing" in the title. A quick fix for SEO.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Nice catch, here's a full upvote for that one!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Awesome! I'm excited to check this out. Thank you for sharing with the community. We're all in this together!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hope you like it! I thought it was valuable for me but then again, I'm bias :p
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Tip!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Appreciate the tip! I haven't used it yet but it would be a good way to support authors who's post passed their payout window.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Beep beep. Hi @thorthur22!
You have used tip! in your comment - that`s my magic word for sending tips ;)
Click here if you wish to learn more!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hi @thorthur22! @rexhafiz is sending you 0.1 SBD tip and @tipU upvote :)
@tipU quick guide | earn interest in @tipU profit
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Well done, like and resteemed!
Nice to see the CCC so active in here!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks @hco, CCC is a great crypto centric group to share and extract information from so it seems natural to cross post to each.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Excellent post. Thanks for sharing. I've resteemed it as well.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Awesome, glad you liked it and thanks for sharing!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Awesome tool! its a good way to robot sellings and buys and cut the emotion orders
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
That's one of the best aspects, which makes it effective for novice traders or investors who would normally get emotionally attached to a coins value or performance.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks for the info dude! Shoutout to coinmastery.com which led me to this.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
No problem. So how did Coinmastery lead you here? Not sure what their service is.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Carter Thomas's youtube channel. He talked about your spreadsheet in one of his videos and forwarded a link to it. http://coinmastery.com/rebalance
He did credit you on it of course.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ohh cool, I'll check out his content!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thank you so much, thorthur22.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
You're welcome! It would seem there is renewed interest in this tool, can I ask how you made your way here?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I think it was mentioned by Carter Thomas on his uTube video (Coin Mastery).
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Question for ya, how do would you determine the target allocations in a portfolio? Is it just arbitrary?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Yes, its arbitrary. You decide based on your risk appetite.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
thanks for sharing this. Have saw it first on CCC, so it's fair I comment it here. Keep up the good work!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
No problem @mdflorio, I hope you enjoy the tool :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Nice! I'm going to try it out. Thanks man
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Awesome! Let me know how you like it - I may release a version 2 down the road with updates from the community.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Looks awesome, I definitely want to put some thought into this and adapt it for my needs. More specifically, I've made a decision on the money I've put into crypto not to take it out - at least not for the short term..waiting til Bitcoin hits the high $6,000's (a la Clif High) before I consider pulling some crypto out to invest in more silver.
Anyway, what I'm trying to say is that whenever I "sell" an altcoin, it's just selling into Bitcoin for a bit of arbitrage profit. I want to use your spreadsheet simply replacing USD with Bitcoin (removing BTC from the Asset Class column and valuing all other cryptos in BTC instead of USD). That should work though! :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ya you can do that fairly easily. I will say that mostly defeats the purpose of rebalancing but if you make a strategy that works for you then its all good :) Good luck @jobsande!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Oh really, it defeats the purpose? Hmm...I'll have to put a bit more thought into it. It's just in times like these especially, where Clif High predicts the upper $6K range before hitting a major correction, then shooting back up to $11K at some point... in these times it really doesn't make much sense for me to pull out of crypto. When BTC hits those levels I MIGHT consider it at that point, just to lock in some gains :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Put 0% for USD/ USDT and put BTC at a higher allocation, this ensures your rebalance will allocate more to BTC. There are two things that make rebalancing valuable: removes emotional trading & ensure you sell whats doing well as it goes up and buy what down. Its absoultely critical though that you have very firm belief that all your assets will perform well over time otherwise you will always second guess whether you want to rebalance.
I would love to hear your results with this method you're doing, if you write about your results feel free to tag me so I can check it out!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Awesome tip, yes I definitely will! I mean I'll definitely let you know, not 100% sure if I'll be going through with it...just want to be careful making any commitments I can't keep. But if I do it, and write about it, for sure I'll let you know!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks very much for this tool! Just learned about it from Coin Mastery.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Right on, I was just watching his video talking about this tool! I hope it works well for you - best of luck!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Love this thank you! I saw this on CoinMastery Youtube page. Question: My portfolio is about 13 coins. I cut/paste the names/quantities of them from another spreadsheet, but the current coin price isn't refreshing. I updated the script and pressed refresh as you stated. Any thoughts...
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Paste your forumla you have in the cell G10. Did the prices update prior to copying your coins and quantities in?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
It's all good now. Thank you so much!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Sweet! Glad you got it figured out :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Very insightful tips, thanks.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
You're welcome! Hope you enjoy the tool.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks a lot for this article. Upvote from me.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
No problem! Although the payout window for the post closed awhile ago, I'll take the upvote as moral support :p
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Great post! Thanks alot. I have one issue thou. The "Current allocation" percentage Is completely of. It sums up to 700% and should 100% right. What could be wrong?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hmm well that percentage is just a sum and should always add up to 100 as you said. I would ensure the format of collumn F is percentages and then look at the E collumn formula to ensure nothing was accidentally changed. You compare the cell formula to the original sheet in the link above.
If you just cant identify the issue then making a fresh copy never hurts. I do it all the time to troubleshoot :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
This is Great ! Thank you for sharing!!! 👍🙌
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
No worries, enjoy!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks for sharing the Google Sheet.
I've added these functions to get data from Bitstamp and Bitfinex. Call them from the cells as you would ccprice (including the last parameter which references the cell I5 that gets updated with the timestamp upon refresh)
function bitfinexPrice(name, datetime)
{
var url = "https://api.bitfinex.com/v1/pubticker/" + name;
var response = UrlFetchApp.fetch(url);
var json = response.getContentText();
var data = JSON.parse(json);
var price = data["last_price"];
SpreadsheetApp.flush();
return price;
}
function bitstampPrice(name, datetime)
{
var url = "https://www.bitstamp.net/api/v2/ticker/" + name + "/";
var response = UrlFetchApp.fetch(url);
var json = response.getContentText();
var data = JSON.parse(json);
var price = data["last"];
SpreadsheetApp.flush();
return price;
}
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Would you address the comment posted by one guy under Giovanni post?
Quotation:
"maybe I'm just tired and not reading this correctly, but your calculation doesn't work.
If on day 2 when BTC goes up to 3000, and you rebalance "To rebalance your portfolio you sell the excess BTC and get USDT. This will give you a portfolio with 5 BTC and 13750 in USDT".
According to that you've just made USDT out of nowhere without actually selling any of your 5 BTC. I assume you mean that you sell 0.416 BTC to USDT which would actually leave you with 4.583 BTC and 13750 in USDT (the equivalent vales of both)."
and then:
"If you forgot to take away the BTC you sold each time in your calculations it would explain your crazy exponential graph.
After day 3 when BTC goes down to 2300 and you rebalance you'd actually have 5.281 BTC and $12,145USDT = $24290 value. Now this is still better than holding for sure, but does not put you in front of where you've started."
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
If you link his post or the comment in question I will take a look otherwise I think I'm missing to much info to provide an answer.
In general with stocks, rebalancing is best if its not done to much. I don't know the best timeline for crypto but I would speculate that its weekly or bi-monthly given the volatility.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Do you have any idea why Golem or LBRY Credits will not work?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
You have to use the name as coinmarketcap has it:
library-credit
golem-network-tokens
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Seems not all coin names can be found in my version of the rebalancing tool. Any idea why for example Stellar Lumens is not recognized?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Click on the coin on coinmarketcap, look at the URL.
CMC has it as just stellar
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks, that works!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Np!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Don't forget to mention rebalancing periods please
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
i did everything followed instructions ..still not showing the columns and calcs...what am i doing wrong!?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
You can always start from scratch if you think something isn't correct. Now keep in mind the coinmarketcap api has gone down or been unable to update price a few times so give it day and try to refresh again.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hi friend, very good !!!!!
You would help me with a vote in my Blog., Thanks !!! ;)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Amazingly useful stuff, man! Much respect to you for sharing this!!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hi
For some reason the table stopped to refresh the current price of the coins.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Is it possible to use this sheet to view the results of this strategy applied to the past month?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
thank you; one thing though: to add more coins, you didnt explain how; what im doin is copying the previous line and modifying it, currently figuring out if its working
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks for posting, really saves a lot of work! I've noticed prices Coinbase/GDAX differ a lot from those at coinmarketcap at times. As the former is where I trade atm, would it be possible to change the script to read prices from there? The API is there, but I've tried a few times to change the script - without success. :( https://developers.coinbase.com/api/v2
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks for posting, really saves a lot of work! I've noticed prices Coinbase/GDAX differ a lot from those at coinmarketcap at times. As the former is where I trade atm, would it be possible to change the script to read prices from there? The API is there, I just don't know how to write the Script. :( https://developers.coinbase.com/api/v2
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks, very helpful! :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
No Problem!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hello, Bitcoin Cash is not recognised? Do you know what to put? I've tried 'Bitcoin Cash' 'BCH' 'BitcoinCash' etc. Thanks in advance.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Just went through some comments above and tried - 'Bitcoin-Cash' ~ Works like a dream. Great tool. Thank you!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Try to rebalance your portfolio via coinwizard.me
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
This post received a 3.0% upvote from @randowhale thanks to @thorthur22! For more information, click here!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hi thor love your rebalancing spread sheet. Now coinmarketcap is updating their api data to v2. I see in your spread sheet your using v1. How would I or you implement the v2 api data to work with your spread sheet? I tried just changing v1 to v2 in the google Script editor but it looks like it didn't work once I saved it. Would it be possible for you to update your spread sheet? Thanks again.
s.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit