Lithium Outlook 2022

2021.10.27 03:03 JSwyft Lithium Outlook 2022

Lithium Outlook 2022 I've mentioned previously that I don't like to look too far ahead, so this deals with 2022 only. I talked about how I expected prices to rise into the Chinese New Year in other posts, which I'm now thinking could draw out longer. This is a comprehensive update. If you see any mistakes, please let me know.
It's easiest to do this as a rebuttal to the most pessimistic lithium analyst: Morgan Stanley. Here's their report:
MS don't include annual overall battery grade lithium carbonate equivalent (LCE) demand totals. They are:
  • 2020: ~300,000 tonnes
  • 2021: ~460,000 tonnes (MS's 53% increase estimate)
  • 2022: ~566,000 tonnes (MS's 23% increase estimate)
In 2021, the market has moved into a suspected 10-20k tonne undersupply. Using the lower end of that range to be conservative, and adding it to the 2022 MS forecast of 106,000 additional tonnes of demand, I get: 10,000 + 106,000 tonnes = 116,000 of unmet LCE demand in 2022.
MS identifies the following sources of notable supply:
  • Kwinana (Tianqi & IGO @ Greenbushes)
  • Ngungaju (PLS plant 2)
  • Wodgina (MIN & Albemarle)
  • Atacama (SQM)
They seem to be lumping the Greenbushes tailings retreatment plant (TRP) into the Kwinana category, so I'm going to increase their 22ktpa supply forecast to 34ktpa (assume 10% failure rate). This accounts for the TRP being introduced to the market as either spodumene or lithium hydroxide.
There are 2 glaring ommissions for Albemarle: Silver Peak & La Negra. Last year, Albemarle stated they were bringing on 40ktpa of LCE in 2022. That was revised downwards in their most recent earnings call:
Joel Jackson (BMO Capital Markets analyst) I think you talked about maybe gaining about 30,000 tonnes LCE volume for next year with the different expansion ramping on. Kemerton 2 has delayed a few months maybe you've been pushing it a little more tolling now this year. Is it about 30,000 tonnes still the right number for next year?
Eric Norris (Albemarle President) So, Joel, I mean, I think it's -- you have to break it down. First of all, I don't think we've said 30,000 tonnes. We've talked about ramp rates on plants. So the Kemerton plant with a start-up in the early part of next year, there is a three-month delay to the second unit. We've talked about getting to full run-rate capacity by the end of the second year in that facility. Similarly, in carbonate, you'd see a phenomenon that is somewhat like that. I would say our run rate for carbonate by the end of '22 will probably be at the 30,000 run-rate basis at the end of the year, that ramps. It's a little bit different, ramping brine versus spodumene because Brian is obviously a harvested material versus a fixed input. But that roughly should -- between those two should be able to calculate sort of our guidance. The change would be a slight delay at Kemerton. And then a year-on-year growth that we can achieve in tolling. And that's going to be it's harder for us to predict now because it's a function of what's available in the market for us to toll with.
Kent Masters (Albemarle Chief Executive Officer) Yes. It's also a function of how fast we ramp up, right, so how well commissioning goes. And then there's -- when you'll commission, you'll be able to make products, but at lower rates, and that will ramp up over time, and it's how well we do in that ramp curve. And it's hard to speculate on that.
Tolling refers to the practice of supplying product to rivals (balancing undeoverproduction between them). It's murky, but the gist seems to be "expect up to 30ktpa of LCE some time in 2022".
With regard to the recently announced Wodgina restart, I've spoken previously about qualification periods. That should prevent Wodgina product from impacting the market in 2022. However, that qualification period won't be necessary if they sell spodumene on the market. The MIN/ALB joint venture hasn't clarified anything yet, and their strategy will probably define the lithium supply/demand balance for 2022.
As LCE facilities don't run at full capacity, a 10% penalty will be applied to all of these sources of new supply for 2022:
  • 17,000tpa by H1 2022 (PLS Ngungaju)
  • 34,000tpa by H1 2022 (IGO & Tianqi Greenbushes TRP)
  • 27,000tpa by H2 2022 (La Negra & Silver Peak Albemarle projects)
  • 40,000tpa by H2 2022 (SQM)
  • 30,000tpa by Q3 2022 (Wodgina) [but unlikely to be sold as spodumene]
  • 00,000tpa by Q4 2022 (CXO commissioning)
  • 00,000tpa by Q4 2022 (AGY commissioning/qualification)
  • 00,000tpa by Q4 2022 (Lithium Americas commissioning/qualification)
So 17 + 34 + 27 + 40 = 118,000 tonnes of optimistically predicted supply coming online to satisfy a conservative 116,000 gap.
Morgan Stanley originally predicted H2 2022 Chinese spot prices at US$8k/t. They've now moved to US$13k/t in this latest assessment. Their thesis rests solely on the Wodgina decision, IMO. Regardless, it can't come online before Q3 2022. So overall, demand will come in chunks, but when is uncertain. Though I originally somewhat agreed with MS's argument of prices calming from Q2 2022, I think it's doubtful now. I don't see any huge downward pressure between March and June '22, unless a big player has been stockpiling behind the scenes, which is unlikely.
Morgan Stanley's forecast of US$19,500/t for the current quarter has been swept aside. Prices are broadly hovering at about US$30k/t:
Chinese lithium carbonate prices across 26 markets (prices RMB/t)
I suggest that anyone with serious investments in lithium should be watching these prices, rather than using reporting agencies on a two week delay. Sharp movements can happen in days.
If prices do retreat, it may have serious consequences for stocks that are operating at outrageous PEs (relative to the mining sector). I'll adjust my peer comparison table PEs when I see softness. For hard rock producers, I believe moving up the chain to midstream or downstream processing, as PLS have done, is critical to counter potential pricing weakness. The brines should be more resilient.
There's been valid criticism on here that some/many lithium specs have run too hard, which I agree with in theory, but don't necessarily expect that they'll show much weakness this year without a catalyst. In general, I'm against blanket statements like 'lithium has peaked'. Stagnating/retreating prices should adversely affect most stocks, but I think well chosen specs should still bloom in an environment where spot prices are above US$20k/t. Of course, the market is sentiment driven, and events like Evergrande could have a notable impact.
submitted by JSwyft to ASX_Bets [link] [comments]

2021.10.27 03:03 ConsiderMeANoob Intermission loops and the game doesn't start

I wanted to make my own Squid game (cuz why not) so I followed a tutorial for that. Afterwards i thought "huh, an intermission system would be good" so i followed a tutorial for that and then plugged it into my game's script. After that though the after the intermission is done it teleports me to the game, then immediatly teleports me back to the lobby, while the game is running.
Anyway, here's all the scripts and the tutorials I followed

Main Server Script

local TweenService = game:GetService("TweenService") local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local Map = game.Workspace.Map local Bacon = Map.Bacon local TimerUI = Map.Timer.UI local InRound = game.ReplicatedStorage.InRound local Status = game.ReplicatedStorage.Status local LobbySpawn = game.Workspace.LobbySpawn local MapSpawn = Map.MapSpawn local Round_Duration_Seconds = 10 local Intermition_Duration_Seconds = 5 local IsRedLight = ReplicatedStorage.IsRedLight local SavedPlayerPositions = {} -- Logs all player positions on red light local SpinTweenInfo =, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut) local OriginalHeadCFrame = Bacon.Head.CFrame local GreenLightHead = TweenService:Create(Bacon.Head, SpinTweenInfo, { CFrame = OriginalHeadCFrame }) local RedLightHead = TweenService:Create(Bacon.Head, SpinTweenInfo, { CFrame = OriginalHeadCFrame * CFrame.Angles(0,math.rad(180),0) }) function DressCharacterInSuit(Character) for _, Object in pairs(Character:GetChildren()) do if Object:IsA("Shirt") or Object:IsA("Pants") or Object:IsA("ShirtGraphic") then Object:Destroy() end end local Shirt ="Shirt") Shirt.ShirtTemplate = "rbxassetid://7597521537" Shirt.Parent = Character local Pants ="Pants") Pants.PantsTemplate = "rbxassetid://7597288954" Pants.Parent = Character end function SecondsToTimestamp(Seconds) Seconds = math.max(Seconds,0) local Minutes = tostring(math.floor(Seconds / 60)) local LeftOverSeconds = tostring(Seconds % 60) if #LeftOverSeconds == 1 then LeftOverSeconds = "0"..LeftOverSeconds end return tostring(Minutes)..":"..LeftOverSeconds end function LogPlayerPositions(Players) for _, Player in pairs(Players) do if Player.Character then local HumanoidRootPart = Player.Character:FindFirstChild("HumanoidRootPart") if HumanoidRootPart then SavedPlayerPositions[Player] = HumanoidRootPart.Position end end end end function IntermissionTimer() while wait() do for i = Intermition_Duration_Seconds, 1, -1 do InRound.Value = false wait(1) Status.Value = "Intermission - ".. i .." seconds left" end end end InRound.Changed:Connect(function() if InRound.Value == true then for _, Player in pairs(game.Players:GetChildren()) do local Char = Player.Character Char.HumanoidRootPart.CFrame = MapSpawn.CFrame end else for _, Player in pairs(game.Players:GetChildren()) do local Char = Player.Character Char.HumanoidRootPart.CFrame = LobbySpawn end end end) function StartGame() InRound.Value = true GreenLightHead:Play() IsRedLight.Value = false SavedPlayerPositions = {} local PlayersInRound = Players:GetPlayers() local Winners = {} local SpinDelay = 5 local LastSpin = tick() local EndTouch for _, Player in pairs(PlayersInRound) do Player:LoadCharacter() DressCharacterInSuit(Player.Character) end EndTouch = Map.EndBarrier.Touched:Connect(function(Toucher) if not Toucher or not Toucher.Parent then return end local TouchChar = Toucher.Parent local TouchPlayer = Players:GetPlayerFromCharacter(TouchChar) if TouchPlayer then table.insert(Winners, TouchPlayer) local PlayerIndex = table.find(PlayersInRound,TouchPlayer) if PlayerIndex then table.remove(PlayersInRound,PlayerIndex) end end end) for i = Round_Duration_Seconds, 0, -1 do TimerUI.TimeLabel.Text = SecondsToTimestamp(i) if IsRedLight.Value then -- Store positions of players, check if they've moved for Player, SavedPosition in pairs(SavedPlayerPositions) do if Player.Character then local HumanoidRootPart = Player.Character:FindFirstChild("HumanoidRootPart") if HumanoidRootPart then if (HumanoidRootPart.Position - SavedPosition).Magnitude >= 1 then Player.Character:BreakJoints() -- Kill the player SavedPlayerPositions[Player] = nil -- Remove player from the round table local PlayerIndex = table.find(PlayersInRound, Player) if PlayerIndex then table.remove(PlayersInRound, PlayerIndex) end end end end end end if tick()-LastSpin >= SpinDelay then -- Has 5 seconds gone since the last turn if IsRedLight.Value == true then -- Make it green IsRedLight.Value = false GreenLightHead:Play() else -- Make it red IsRedLight.Value = true RedLightHead:Play() RedLightHead.Completed:Wait() LogPlayerPositions(PlayersInRound) end LastSpin = tick() SpinDelay = SpinDelay * 0.9 -- Make it spin faster each time end if #PlayersInRound == 0 then break end task.wait(1) -- Countdown Delay end -- Well, GAME OVER EndTouch:Disconnect() print("Round Over!") end -- Main Game Loop while true do IntermissionTimer() -- Start the Intermission StartGame() -- Start the Game end 

Client Script
local Player = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local Label = script.Parent.LightStatus local Status = game.ReplicatedStorage.Status Status.Changed:Connect(function() Label.TextColor3 = Color3.fromRGB(255, 255, 255) Label.Text = Status.Value end) ReplicatedStorage.IsRedLight.Changed:Connect(function(IsRedLight) if IsRedLight then Label.Text = "Red Light" Label.TextColor3 = Color3.fromRGB(255, 0, 0) else Label.Text = "Green Light" Label.TextColor3 = Color3.fromRGB(0, 255, 0) end end) 

Squid Game
Intermission System
submitted by ConsiderMeANoob to robloxgamedev [link] [comments]

2021.10.27 03:03 VictoriaSecretsX I had fun last night....

submitted by VictoriaSecretsX to crossdressing [link] [comments]

2021.10.27 03:03 Emiyaglia Rust R1 level 90 or Blackcliff warbow level 80. what better for tortelini

submitted by Emiyaglia to childemains [link] [comments]

2021.10.27 03:03 JasmineDiamondMusic Roadtrip Music Hits 2021 [Road Trip Songs]

Roadtrip Music Hits 2021 [Road Trip Songs] submitted by JasmineDiamondMusic to treemusic [link] [comments]

2021.10.27 03:03 Lazy-Drummer-319 NO INVITES REQUIRED CHEC IT OUT!!

NO INVITES REQUIRED CHEC IT OUT!! submitted by Lazy-Drummer-319 to corinnakopfxx [link] [comments]

2021.10.27 03:03 Analyticsinsight01 How Does Alibaba Use Artificial Intelligence and Machine Learning?

submitted by Analyticsinsight01 to ArtificialInteligence [link] [comments]

2021.10.27 03:03 Ba6req 2 Redesigns of the Polish-Lithuanian Commonwealth. The first is Original and the Second is in the style of Austria-Hungary .

2 Redesigns of the Polish-Lithuanian Commonwealth. The first is Original and the Second is in the style of Austria-Hungary . submitted by Ba6req to vexillology [link] [comments]

2021.10.27 03:03 sportifynews Why Ethereum Buyers Should Consider the Trump SPAC’s Lessons

submitted by sportifynews to CryptoMoon [link] [comments]

2021.10.27 03:03 KANAXAX how do you know which side is right or left?

submitted by KANAXAX to AskReddit [link] [comments]

2021.10.27 03:03 sportifynews Why Ethereum Buyers Should Consider the Trump SPAC’s Lessons

submitted by sportifynews to Crypto_Currency_News [link] [comments]

2021.10.27 03:03 ColsonThePCmechanic The new graphics are on another level! Thanks so much CSS!!

submitted by ColsonThePCmechanic to SatisfactoryGame [link] [comments]

2021.10.27 03:03 TheRozb Stormy day at the Oregon Coast (spent most of the day chilling in the back with the seats down listening to the rain)

Stormy day at the Oregon Coast (spent most of the day chilling in the back with the seats down listening to the rain) submitted by TheRozb to XVcrosstrek [link] [comments]

2021.10.27 03:03 sportifynews Why Ethereum Buyers Should Consider the Trump SPAC’s Lessons

submitted by sportifynews to CryptoCurrency [link] [comments]

2021.10.27 03:03 Inventing30 Is it worth EDing 5 Year BS-MHA Sloan Program ?

I am trying to decide , is it worth EDing 5year BS-MHA Sloan program at Cornell ?
If any one is current alumni, I would like to connect with. If not cornell's 5 year Sloan program then what are my options to apply for pursuing MHA as career ?
submitted by Inventing30 to Cornell [link] [comments]


OCTOBER 27TH DAILY CHALLENGES, ROLE CHALLENGES, MADAM NAZAR LOCATION submitted by DirtyTyler to RedDeadDailies [link] [comments]

2021.10.27 03:03 ShelfAboveMyDildo xQc on conflict RP with CG

xQc on conflict RP with CG submitted by ShelfAboveMyDildo to RPClipsGTA [link] [comments]

2021.10.27 03:03 noblessedraizel Epic seven or counterside? I need to stick to one! Help me decide, thanks!

I been playing both since launch and have majority of the characters at both end. I find playing both too time consuming and decide to only stick to one! Which do you recommend? Cheers!
submitted by noblessedraizel to gachagaming [link] [comments]

2021.10.27 03:03 Babyy_Pluto Should i buy more now ? Or wait for it to cool down !?

submitted by Babyy_Pluto to SHIBArmy [link] [comments]

2021.10.27 03:03 Fanashedstom -frases que beelce nunca dijo pero podria decir en un futuro

submitted by Fanashedstom to BeelcitosMemes [link] [comments]

2021.10.27 03:03 Fred517 Painting of Jesus in Work HR Office

I know religious rights at work are protected, especially in Utah. But is it worth complaining how uncomfortable that my HR director has a giant Yongsung Kim’s The Hand of God painting in his office? If you aren’t familiar it is as though you are under water as Jesus reaches a hand under to save you. Whenever I go in there I immediately start getting anxiety attacks from Bishop’s meetings. It wouldn’t bother me as much if it wasn’t the HR office where I feel like should be a safe place. My work has nothing to do with the church. He just is super TBM.
submitted by Fred517 to exmormon [link] [comments]

2021.10.27 03:03 No_Kaleidoscope6587 i thought keeho's sister was younger than him 😭

i knew keeho's sister but ive always thought she was the younger sibling until today i saw her ig story she called him baby brother 😭😭 thats so cute
im not an official stan just getting to know p1harmony :]
submitted by No_Kaleidoscope6587 to kpophelp [link] [comments]

2021.10.27 03:03 UwUmejorquenunca ✅ 🎰| Crypto Lottery | Stake to get up to 100% APY on your CHPZ | ✅Mayor Announcements Coming | Easy 10x | 🚀

💬Telegram :
💻 Website :
Chipz will be the first to introduce DeFi-backed solutions for betting situations, allowing gamblers to stake assets and earn yield over time based on the result of major events.
💎 What can you do with your CHPZ ? 💎
BET Place your bets in USDC, win in USDC
STAKE Stake your CHPZ to earn up to 100% APY
EARN Become a bookmaker to start making money right away !
The Chipz Drive Shop is now open for business. Claim your NFT to stock your virtual garage up for when Chipz Drive officially launches!
You can also bridge your CHPZ from ETH-BSC.
Make sure you take a good look at the project and the subreddit. We are starting heavy marketing and it will lift off soon. Don’t miss out !
Legendary 1 of 1 • Tier 1 on Auction:
💬Telegram :
💻 Website :
submitted by UwUmejorquenunca to CryptoMoonShots [link] [comments]

2021.10.27 03:03 juannonly1991 Stock Wash sale rule in depth

Someone suggested I should start a new thread for this question from my last post. So I understand the wash sale rules and that they apply to options as well. One day I bought 100 shares of an underlined stock and i sold a covered call on it way out of the money. I noticed that the stock was starting to skyrocket the same day I sold the call. I got greedy thinking is was gonna squeeze so I decided to buy back my covered call but at a higher price resulting in a small loss. Unfortunately the stock lost momentum so I decided to just resell the same call option. I know that this small loss is a wash sale since I sold the same call option within 31 days of closing at a loss. My question is if I decided to sell the underlined stock at a loss, will that be included in the wash sale as well?
submitted by juannonly1991 to tax [link] [comments]

2021.10.27 03:03 mobilechupa 26 [M4F] Can I Casually Stick My Finger Inside You While You Give Me Roadhead? QC

Can we just casually meetup and the only agenda is small talk and deepthroating while I drive around. And if it's cool, I might want to stick my finger inside your pussy too, so. It'll just be quick if you want it to be and we can grab drive thru coffee before or after.
Just a no BS meetup, chill and relaxed, smiles and all. You can choose what song you wanna deepthroat to 🤤
If interested, chat or message me!
submitted by mobilechupa to phr4r [link] [comments]