As welcome to the makeup lecture for Wednesday, February 24th, and we're going to continue talking about semantics. So the idea here is we've been talking about semantics and how we can really define what it means to be a programming language. So what are the semantics behind a programming language and how do we know? So we talked about the C scoping rules. So we've talked about that C uses block level scopings and that declarations are valid in the block that they're declared and they're not global unless their global decorations are valid for any program that can use them otherwise if the static keyword is used then the declaration is valid only in that file. So we left on Monday and we saw an example of block level scoping in C. So here we have a function main and we have our block and here inside this block we have an integer declared so we have a variable declared that's name is i and type is int we're setting int to be 10,000 we're printing it out then in another block we are printing out the value of i. So we saw that when trying to compile this C program we get an error where the compiler tells us that hey i is undeclared at line 11 which should be this line right here. i is undeclared because even though i is declared up here this i is valid only for this it's enclosing block. So in this other block we can't access that i in there. So this green brace shows us that this scoping rules that i is valid only within that block. So part of what you should be doing with these examples is I think it would help to try to execute run these examples to make sure you understand what's going on here in this program. So if we continue we can look at a different program very similar structure we have our int main function and inside this function we have one block where we declare the integer i we set i to be 10,000 and we print out i. In the second block we define a new and we declare an integer i and we print out the value of i. So now the question you should be asking yourself okay how does this change what we had in the previous example right? The previous example had only there's only one line that's been added here and that's the declaration of int i right here on this line. So now we want to think okay is this program going to compile? So if I compile this program with gcc is this program going to compile? So those are the type of questions you should be asking yourself so you should be thinking A is this program going to compile? B if it's not going to compile is it going to have the same error that it had in the previous example? Same error or different error right? The previous example said that hey this i is an undeclared identifier. So if we think about it okay and we try this we can see that okay this program does compile correctly and then this creates an executable program called a.out. We can execute a.out. So now the question in your mind needs to be what does this program output? So what is the output of this program? And this is a good self-check of your ability to understand and interpret C code and C synantics. And this is going to be important information that you're going to need for midterms and finals because you're going to be looking at a lot of code and having to simulate its execution by hand by that big beautiful computer called your brain. So let's step through this what we think should be executed. So we have in this first block we have the i is declared we set i to be 10,000 and so we're going to print out should be we're going to print out 10,000 and a new line. Then when we enter this next block we have a new i we're going to print out i but now the question is the key question is what is this i value that's going to be printed out? Is it going to print out 10,000? Is it going to print out something different? And so let's see one execution of this so one execution it prints out the 10,000. It's the wrong number of zeros there that's 10,000 that's 100,000 but it should be 10,000. Then it's going to output zero so this other print f is going to output zero so you think huh that's weird why did it output zero? So knowing what we know about programming languages right so we can know that this in i here so the key thing is when resolving this identifier i we want to resolve it to the closest declaration to this value so we know that this i refers to this declaration of i in this block that means that what happened to this i in this block even though it has the same name right these are different declarations which means they are considered different variables and should be completely separate so that setting i here to be 10,000 has absolutely nothing to do with this i over here and that's a key point that I want you to be thinking about is okay they may have the same name right but they actually refer to different declarations which is why they are different and why changing this i has no bearing on this i in this other block so now back to the question of okay what is being output here with this zero and it turns out that well if we look at this block right there's only two lines so it's pretty easy to reason about what's going on here so we have a declaration of a variable and then we're printing out that variable but we've never initialized i to any value so what we have here is basically a case of an uninitialized variable and so we're going to so c allows this and maybe the some of you have noticed or maybe you can notice now that I didn't add the dash capital W all flag here to gcc to show all warnings if I had it would have told me that hey there's a warning here because you're using i before it's initialized but that's not an error this isn't a that's not a compile time error that's actually not even a semantic error according to the program what it is is undefined behavior so the spec does not say in c the specification does not define what the value of uninitialized variables are and so the implementation is free to do whatever it wants so in this case in this first example is run on a sento s67 machine so here it outputs zero but if we run this on my mac which is actually going to use a completely different gcc it's actually going to use clang under the hood not gcc but that doesn't matter it's gonna we can compile it it's hopefully going to compile just fine right so if it's a valid c program it should compile both on linux and on mac and so once it compiles when we execute it it's going to successfully output 10 000 as it should yay and then it's going to output whoa some other junk what is that one two one one billion six hundred and sixty nine thousand no six hundred sixty nine million six hundred fifteen thousand six hundred and seventy okay so wow completely big difference but we can see here we've actually done some behavior that the specification does not define therefore it's completely okay from this the semantics of c that this program when run on two different the same c program when run on two different operating systems outputs different values because the output of an uninitialized variable the value of an uninitialized variable in c is not defined okay and then as we get closer and I think we'll actually get into what's being printed out here but for those that are curious it's essentially whatever was on the stack at that point in the program's execution so for whatever reason maybe because difference is the stack layout something zero is printed out in this case whereas this other value is printed out in this case which is probably some sort of address is my guess okay so now we've seen examples of c scoping and we've seen examples of c block level scoping now the real question that we want to try to answer is right this duality of declarations right so the semantics of how long a declaration is valid for right the flip side of that is how do we resolve a name so when we see an identifier we need to be able to map it to the declaration right and this is critical because we know that every every use of a declaration is going to be the same variable right so if we use so this is what's important right the name alone does not tell us that it's the same variable just as we saw in the previous example we had two different variables called i right exact same name but affecting one didn't affect the other even though they had the same name and this is because the important thing is the declaration not the actual name itself so resolving a name is key so that so when we see that identifier when the compiler sees the usage of id or i how does it map it back to that declaration so the compiler does this using a data structure that we're gonna that's called the symbol table and this is a very simple table it basically maps names right so it maps names to declarations and attributes so what would be a declaration well we saw so we'd see that hey this is the i online one two three four five and this is i online one two three four five six seven eight nine ten online ten and attributes would be any additional information about that declaration and that name for instance attributes can be types attributes can be class attributes so visibility symbols attributes can also be is it a function or is it a value right or is it a pointer right all these things are additional attributes about a declaration so when resolving a name there are two types of scoping rules that are used and one type which is the type that you're most familiar with so this will probably be pretty natural for you to understand and to use because this is how you're used to thinking about programming languages so static scoping rules the basic idea is you resolve a name to a declaration statically so you can actually look at the code just like we were able to look at those c examples and you can match up usage of an identifier usage of a name and you can match it up to that declaration and in essence what this means is that the compiler creates the symbol table and it does it statically while it's compiling the program so you can think of that the compiler is going through the parse tree and whenever it sees a new scope and new declarations it adds those declarations to its symbol table and then when it sees identifiers it looks up in its symbol table hey do I see an identifier in my symbol table if so then I know how to treat that that name right and so this is why this symbol table is is really important to compilers and this is exactly how the compiler is able to tell that you have an unidentified an undeclared identifier error because it sees an identifier right and we've actually seen how to define an identifier it's defined using tokens so when the parse tree is going through the parse tree when it encounters an identifier it's able to say and look up in its symbol table and say huh I actually have no recollection I have no entry for this name in my symbol table therefore this must be an error this has to be an error I can't compile this program it's it may be syntactically correct but it's semantically incorrect so the flip side of dynamic scoping which we're going to get into is that the resolution so the idea is this mapping of names to declarations actually changes dynamically when the program executes so the idea is instead of the compiler creating this symbol table statically while it compiles the program the symbol table is actually going to be created dynamically at runtime and this lookup mechanism is going to happen off the bat this lookup mechanism is going to happen right away so let's let's go back to our notes we're going to look at some examples here so we're talking about static scoping rules so the first key thing to understand is that scoping rules are hierarchical blocks are hierarchical right there's nested blocks so if we label this as block one and then inside there we have another block and I have some if condition I'm going to put dots in there because I can't think of what to put in there right but this would be block two block three right so by looking at that we can see that there's a parent child relationship between one two and three so if we were to draw this static scoping as a tree we'd have something like okay one and two and three right so I know that two and three are both siblings and then if there are any blocks let's say inside three this would be four and so on so at each of these blocks variables can be in each of these blocks variables can be declared right so let's take in this example so the question is okay okay let's say here in block one and here I'm going to use this kind of abstract tree structure for right now so I don't have to just write out a program and have everyone yell at me because it's not a valid program so let's say we have an an integer i right we have an integer i declared here and in two we have in x three we also have in x and in four we have an integer called i right so these are all declared so it should be fairly trivial and one thing you can do to check yourself is say can I take this tree block structure and turn it into blocks like this right you don't have to worry about this if this if statement but it should be pretty clear here so now to do static scoping right and to resolve a symbol so let's say inside block two right inside this code here it's a terrible arrow inside this code here I have we'll say x is equal to x plus one right and you can think about actually what we have here is a tree the parse tree for this but for right now we can not think so concretely in that terms and we'll deal with the code that we're used to thinking about so the compiler sees this x right and so we can think of okay it's already tokenized the lexer has already tokenized this so it's turned this x into the abstract token id it's created a parse tree out of this the parser has created a parse tree so there's a node that's called an id but I have as we've seen in our lexer we store the current the value of this token right so we'd have id and the string x right so now when I'm going through and I want to check the semantics I say okay how do I map this identifier x to a declaration is it a global is there some global in x how do I do that so what I'm going to do is starting in my current block I'm going to look up in my symbol table and say in my block and say okay is there an x declared in my block and here I say yeah so I see okay yeah bang that that right there that's good if it's not in my block then I go to my parents block and I say is there a if it wasn't here I would say is there an x declared in block one and then if that's not true then I would keep going up and up so for instance in three right so if we have right here if I say I is equal to I plus one so let's do something else let's do x is equal to I plus one right so when I get to this I I want to resolve this name I to a declaration so I would first look in block three and I say okay is I declared in block three and I say well no clearly the only thing here declared in block three is into x now note right I'm in here I'm in three I haven't entered block four so this in I has no bearing on it we don't even look at our children we look at the parent and say okay it's not in three so let's look at the parent of three okay here in block one is there an I and I say yes and so I can map that I to that declaration but in four right then the same thing with this x I can map the x I first look in block three it's not in there I look in block one now in this four now if I see an I when I look that up which block do I look in first well following the same pattern I look up in block four and I say is there an I declared in block four and we say yes so this I refers to this declaration of I so note that we have two names right in one and in four but this one refers to this I and this refers to this I so let's look at an actual example of a program so here I have a block I have an integer I I said I to be 10 these are all braces sorry my braces game is kind of sloppy right now so here I have an integer x I said x to be 10 and then here I say x is equal to x let's have an integer I I is equal to 100 x is equal to I plus x okay close close close close up here close up here right so this hierarchical nature essentially means that so here we just have so if I draw this I have one two three right and all of these scopes are nested within each other so there's a parent child relationship here and in here I have an int I in block two I have an int x and here block three I now have an int I so this use of I I can see is in block one this line of code is in block one and this line of code is going to change this variable and set this I to be 10 so we'll just add the value here and then I'm going to execute this I'm going to say okay how do I map this up oh that maps over here so this is going to set this x to be 10 and then I go here I say okay which is this I well I just look at this chain and I see oh it's this I so I'm going to set this I to be 100 and now here when I say x is equal to I plus x I'm in block two now I've left block three I'm in block two and so now I'm going to say okay x is equal to I plus x so I's current value is not defined a block two defined a block one is 10 x's value is 10 so I'm going to say x is 20 yeah that is 10 plus 10 good math but note that I didn't say x is equal to 110 right and that's the key thing so this I essentially what we call shadows this declaration of I because it's there's actually no way I can reference this outer I once I've declared this inner I variable okay so then let's look at a more complicated example so here we have we're including our standard IO.h function so we get access to the printf functions we declare an x and so self-check how far is this what how far is this scope valid how far is this declaration valid and so the answer is well it depends on what our semantic rules are so I'm telling you we use C style semantics here so this means that this is a global declaration of int x and so x is valid from here to the end of actually the program so any other files can include this x but right now we'll just focus on this file assuming this is a standalone file so I have another one so then if we're in class I would say so is this a declaration and we'd have a discussion about it and so hopefully you can convince yourself that yes this is the way you declare so what am I declaring here well I'm declaring so the first thing is what is the name of the thing I'm declaring and you can see by my highlighting that the name is bar but the idea here is that I'm declaring that there is such a thing called bar and what is the type of bar so here just like in this previous declaration I'm declaring a variable x and I'm declaring that x isn't has type integer just as here I'm declaring that there's a thing called bar and bar is a function right so what is the type of that function bar is a function that takes in no arguments which is indicated by the fact that there's nothing between the parentheses and it returns nothing so it returns void nothing but the key difference is with the semicolon here this is bar without a body so I'm saying there exists a function called bar and here is the here are the parameters here or what it returns but I don't know where the body like I haven't actually defined the body yet so this is just a declaration we're just declaring that there is a very there is a function called bar but we're not necessarily saying where it is or what the definition is flip side of this is I can declare and define a function right and so this should be pretty natural in seeing in your programming and once again the point is not to reiterate simple concepts but to get you to think more deeply about the current things that you already know so and inside this function foo so here now with these braces we've started a new block we started a new scope so inside this scope we define a character C and we set it to the character C then we call bar and then we print out the value of X and the value of C so important thing to note even here where is this bar resolved to right and saying well remember when we're doing resolutions we're trying to map names so here the name bar we're trying to map bar to the declaration where it's declared right so this bar would map to this declaration here just like this X maps to this X here and this C maps to this C here and we can define other functions let's call it Baz. Baz prints out the value of X and sets X to be 101,337 now we have the body of bar right so this is the function bar inside this function we set X to be a hundred and then we call Baz so finally we have our main function where we set X to be 10 then we create a new block we define a new variable right so let's pick this declaration of part based on the semantics we're defining we're declaring a variable whose name is X whose type is char star and whose value is initialized to the string testing and then we print out X if you don't understand the printf direction directives here like percent s percent d and percent c you should spend time studying what these directives do and what they mean this is something that I noticed last semester that tripped people up is not even knowing what a simple printf style things actually print out as far as complication I don't think you need to know too much more that's anything more complicated than that but you should be familiar with printf I mean this is one of the core bedrock kind of functions so after here then we call function foo so a first thing you can do is check yourself so what a so on an exam right I may give you some code like this and I might ask you hey what is this program output right it's not an outrageous question I think it's something that you all definitely can do and you should be able to do but so that's one step right it's okay what is it output but two is okay well how do I actually what are some strategies that I can use to actually do this right and so one thing can be okay let's try to think about for every one of these declarations what is the length of this program that it's actually valid right so what's the scope of all of the declarations in our program right so more self-check right so what is the scope of x well based on the semantics that we've been discussing for c right x is a global variable so it's going to be its scope is from its declaration all the way to the end of the file right we're gonna say int x exists all the way here and so what about bar right how far is bar declared how what's the scope of bar well it's from here right after it's declared all the way to the end of the file and so this is the key thing if you've ever wondered gosh in c why do I have to declare these variable declare these functions before I call them like it seems silly can't the can't the compiler go through and figure out all of my functions and then allow me to do this um and the reason is yes it could do that but the semantics of c means that it it really that's not how c programs work c programs work that uh a name and identifier a declaration is valid from where it's declared to the end of the file for global variables and so this is why you have to declare a function bar if you want to call bar in a function foo before you have the body of bar right and this is also how you resolve mutually recursive functions you have to declare them before you use them uh and in case you're wondering wow but then how do header files maybe mix into this well uh you put these declarations inside the header files and you'll notice the header files always go first right so inside standard i o dot h there is a declaration and definition of the printf function and this is how we're able to use and call those functions that are fined in standard i o dot h okay then moving along right so once again the difference between this bar and foo here is bar is declared here whereas foo is declared and defined so we have the body of the function foo here and also a declaration of a function called foo and so foo is going to be valid from here to the end of the program right and so this is actually if you think about well shouldn't it be after this declaration here like after the end of the function foo because that makes sense right bar is declared pretty much after the semicolon right anywhere after it can call bar so shouldn't be the case that foo is valid the scope is in effect after it's defined anywhere down there and the problem you get in there is okay this foo well then foo can't call itself it can't be a recursive function so that's why the scope of foo actually extends inside of its own body so that you can have recursive functions okay then let's step into the body of foo so important note right so that here foo has its own block right the body of foo has a block so this is a new scope so now when this char character c is declared right this means that where's the scope of c it's the scope of c extend all the way down can we access this c from main can we access this c from bas because they're next to each other maybe because they're neighbors we can do that so we know from the scoping rules of c that it's just in this block so c is going to be valid just in the block that's inside foo and here in bar right x is going to be valid just inside this block and here in this x this character pointer x is just going to be valid inside the block that's inside main so now that we've done this we've identified the length and the scope that all of these are are valid right you can see that actually if we turn this whole thing let's see angles two seven if we rotate it 90 degrees counterclockwise right we can see we have our nesting scopes which is what we're just drawing on the notes right we have the global scope and in the global scope x bar and foo are declared and then each of those has sub children's scopes right so this global scope has several sub sub blocks and subscopes where cx and x are declared so this means when the compiler is going through this code and when it encounters something like right so convince yourself that this first instance of bar here is actually the first usage of a name in the program so here we have in a parse tree it would be bar left bracket right bracket or left parentheses sees left parentheses right parentheses so the idea is now the compiler sees this and it wants to go okay what is bar it's just the name right I need to look up what that name means so it's going to look it up in the scopes just like we saw from the current scope to its parent scope to its parent scope until finally it either finds it or it doesn't find it so it's going to look up bar in this local scope and see nope no bar to find in this local scope and then it's going to look it up in the global scope and it's going to say aha this bar maps to this declaration of bar here awesome then it's going to see this x and it's going to say okay which x does this refer to well look in the local scope okay no x here and then look in the global scope hey there's an x to find so I know that this x refers to this declaration of x here or as I've written it here including the length of x's declaration this is where x is defined and then it looks up c and it says okay a c defined in my local scope uh yeah so that means this c refers to this character c right here great okay and then when we get to the print f right print f is just a name it's no different than bar or x or c right it's just the name that the compiler still has to resolve to a declaration and it will actually resolve it to a declaration in standard io.h so we can actually not worry about that okay moving along in baz so now when we get this x we say okay is there an x in the local scope no is there an x in the global scope yes it refers to that x and so the same thing with this next x here right on the next line we'll see that this x refers to the same int x and down here in this x right when we say x is equal to 10 well the question is is this x going to be point to this x because they're like close by right and the answer is no the exact same process occurs we look for x in its scope which is from here to here we say is there an x declared here in main no there's no x declared here in main therefore go to the global scope the parent scope in this case the parent scope is this x and so it won't point there it's not going to point to this character pointer x so why well this scope is a child of our current scope but we only look in the current scope and then parent scopes we never look in children so this x actually resolves to the global x but inside this block when we see this name x we need to resolve it to the declaration so we say okay what is this x well look in the current scope is there an x yep there's a character pointer x and so that refers to this x so we can see that this x here right has two completely different meanings in one case this x is referring to the global declaration of an integer x and in this other case this x is referring to an x that's declared in the local scope that's a character pointer so two different types same name but still everything works and the important thing is that we can know and we can look look so what happens when we compile this so question you should ask yourself is it going to compile are there any errors no yes yes no okay it compiles fine then what happens when we run it what's going to output so here's where you have to then be able to step through this program and be able to simulate the execution right so if we step through here right so the first thing to ask yourself is okay which function is going to be executed first well it's clear that main is the function that should be executed first that's the c standard and so when function main is executed or the first thing that happens is x is going to be 10 and so we've already resolved this x right so before execution we've gone through that process and we said okay this x refers to this declaration of x so this global x now has the value 10 then we enter this block we initialize a local x to be the string testing and so we print out a string percent s means print out a character pointer string and we print out this x this local x which we just did and so it's going to print out testing followed by a new line right so the first line of output is testing then foo is called so we call foo foo sets a character c to be the character c it then calls bar bars declares a local variable x to be 100 and then we call baz bazz prints out the value of x so what's the current value of x it's 10 right this call to main set out 10 please check with yourself to make sure you understand why it's not a hundred right so we print out 10 then we set x to be 1337 we return from baz to bar we return from bar back to foo and then we print out okay we first print out percent d means take that value print out of the decimal so we print out x so x is 1337 because this x refers to this global x this x also refers to that global x so we need to print out the value of that declaration of that variable and then we print out a character so then we print out c right from this c so we should print out first pen from our first line of baz and then we print out 1337 and c right so you should be able to do this and this is something you should be able to do you should be able to take code look at it and really try and understand okay what are the static scoping rules here so in static scoping we're creating these symbol tables of okay in this scope these variables and decorations are declared but when we already did this so in dynamic scoping the symbol table and the current scope is changing and updating at runtime so the idea is when we're trying to resolve a name a specific variable name let's say x we actually look up dynamically at runtime in the symbol table for the last encountered declaration of x so what does this mean in practice in practice it's kind of crazy because this means that x this name x the declaration could change the type could change depending on how a function is called right so actual languages actually use this so common list actually allows both dynamic and lexical scoping so let's look at an example to kind of help try to illustrate this point so before we were able to completely create essentially this tree or these symbol tables dynamically right we were able to look at the code and be able to create these symbol tables right that's where the static part of static scoping comes in we only think about these things statically we only create these we can create these symbol tables statically and we never have to think about them because they never change okay and to make the example i guess i'll be consistent all right print f and d slash n x okay i have in my main i'm declaring an integer x i'm saying it'd be 10 000 i call foo i set x to be 10 and then i'm gonna call some other function bar and then i call foo right so even just looking at this let's not talk about bar for right now let me get rid of some of this so here in this example we're declaring a global integer x and we're setting it be equal to be 10 so if we're talking about static scoping right just looking at this x if i construct this symbol table statically i say okay i want to resolve this x i have to look in the local scope of foo ah there's no x declared there therefore i have to look in the global scope it's parent which is the global scope and i see aha this x refers to this global x right and that's the important point it always refers to this global x it doesn't matter how or where foo is called this x always refers to that x in static scoping but in dynamic scoping that's no longer the case so in dynamic scoping we actually keep track of the symbol table as things are executed right so we first execute this instruction and so we create an entry in our symbol table so here we have let's say name value for now so the name here is x the value is currently 10 right so this is the global scope so we execute this we execute this so what's this going to do how's this going to change our symbol table well we're defining a new symbol called foo its value is the body right it's a function i didn't include other stuff here and then i get here right so i create a new symbol on my symbol table called main the value we're gonna say kind of points to this guy right and what happens when i get to this integer this main function right well i'm gonna start executing it so i execute this first line but first i've entered here i've entered a scope right so this right here is my global scope and now i have a child scope of this global scope right i've entered a block and then see i've done that so i'm gonna uh illustrate that here and i'm gonna delete these pointers because they're kind of annoying i'm gonna illustrate that here with an arrow and so now i start creating a new symbol table and i start updating it and now i say okay in x great i know how to deal with that i create a new entry in my symbol table called x the value of x is 1000 great everything is awesome okay then i execute this next function so it's gonna call foo so when i enter function foo notice i've added now a new block here right i've entered a new block so i create a new scope of the symbol table but there's no declarations in foo right so this is empty which i will kind of do like this and then we see okay now we see the x and we need to resolve x back to the declaration right actually right at this point we're actually executing the program so we're trying to say okay what is the current value of x so that we can print it out well i take this x and what i do is i look essentially up the symbol table right and i say okay is x in my local symbol table nope there's nothing in there so go to the parent okay is x here yeah x is here so the value of x right now is 10 000 so it's going to print out you know if i execute this it'll first output 10 000 and then after this executes we are leaving the block foo so this goes away because everything that was declared in foo is only valid for this specific block so we're going to completely get rid of that then we're going to return from the function foo and when we return from the function foo we're going to now go to this line and this line is going to say okay look up this x which x's value am i going to change well look up in your current scope okay the current scope in the table is here oh great the next is here set this value to be 10 perfect okay and i'm going to just in time write a function bar and i'm also going to just in time delete parts of the code so when we get to this function bar we start executing bar when we get to bar right we create a new scope because we've entered a new scope of the program and we say what are the declarations in here okay we've declared a variable x x has the value 42 we see a function call we go to function foo we create a new scope right we've entered a new block the scope has no declarations and so now right we get to x and we need to resolve x again and we say okay what is x going to output well we look up x we look at in our local scope there's nothing there right so remember we go up so we look here nope nothing here we go to the next scope say oh yeah there's an x great the value is 42 so output 42 so you can see that this x if we look at it here right the first time that we called it it actually resolved to this declaration in main but the next time we called it it actually resolved this declaration of x and bar and in fact it never ever referred to this global x for whatever reason when statically it would always print out the same it would always look at this value and print out 10 10 right and so this is the key idea behind dynamic scoping is this resolution and the resolution is done at runtime and the construction of the symbol table is done at runtime okay so on Friday we'll go into more examples of dynamic and static scoping thank you so much for taking the time and hanging out with me on this amazing monday afternoon but for you due to the amazing ability time traveling abilities i have you'll be listening to this sort of latest tuesday or wednesday so anyways i've missed you all and i look forward to seeing you on friday


The following is a presentation of TFNN. The morning markets kickoff with your host, Tommy O'Brien. Good Friday morning everybody, it's been a wild week and we got a wild Friday to kick things off. You're looking at an S&P 1.42% lower in the futures right now, negative by 55 points and folks we are 312, 312 points below where we were trading at just 72 hours ago. Remarkable, not sure where the day goes man, but it's going to be a dicey one as the markets cannot find a bid since those CPI numbers out on Tuesday, and I can't blame it folks, could be a game changer in a big way. You get the NASDAQ 100 off a pretty similar 1.45% right now off 172 points. How about the NASDAQ 100 losing 1,100 points? I mean you're approaching 10% on the NASDAQ 100. You're approaching, what did I just say, 300 plus points or what, 7.5%, 8% in the S&Ps? You're talking about a Dow that's given up 2,100 points. Now that's about what, 6%, 7% something on the Dow, and you're looking at a Russell right now giving up 135 points, so 190 would be 10%. What are you talking about? 6%, something like that on the Russell. Huge moves in 72 hours man, but boy this market continued to struggle to find a bid. We got crude trading towards the lows we had overnight, right where we closed out yesterday's action, $84.60 for the price of crude. Gold continuing to struggle man, $60.60, $60.60, whoa, watch out, that's a lot of sixes in that price. So $60.60, $60 as I come on the air. Gold down about $10, and interesting as we jump around the currencies, you haven't seen the type of dollar strength that you might think when you have gold trading down what, $80 from where we were. We've had huge moves, but CPI comes out on Tuesday, gold was trading at $17.40, we give up about $80 in gold at $16.66, and we're in a dicey area for gold man. You put this thing on a five-year weekly folks, we have now broken below. I've been talking about it for a long time man, because we've been above this price area for a long time, but you're pushing prices, excuse me, that gold has not seen basically since the pandemic folks, excuse me, you break out of that price range about June of 2020, we were trading down there at $16.71, let's see, no, we actually didn't even get down to $16.66, I got a low of $16.71 back in June, you got to go back to $16.76, we get in April, but we were lower than that today, $16.66, $20 is the low April 20th, and you got to go back to the first week in April. To get to the prices that we were at in June, you just broke below the low we had from July, you just broke below the low we had from August, you just broke below, now that's August of last year, you just broke below the lows we had from March of 2029 as well. Now those lows are pretty close to where we are right now folks, you're talking about $16.77, you're talking about $16.73, you're talking about $16.77 again, and you're talking about $16.78, all of those lows within about $5 from $16.73 to $16.78 were just below that level, critical area, doesn't mean this thing is going to cascade lower, you're into the COVID volatility for gold, interesting to see how it handles that volatility, and if you break through it, or maybe that's an area of support as we come into an area, and folks, it's been an area of support basically for the better part of two years, which is remarkable, but boy, things change quickly sometimes. You jump to notes and bonds, and what do we got? You got flat action, but guess what? We got flat action basically at the lows right now, and you're talking about a 10-year that is flat at $1.1416, you're just seven ticks off of where we were, and look at the run this thing has had man. Now this is a weekly, okay, you kick off August at $122, and we are in the middle of September, six weeks later, let's put it on a daily to kind of show you how quick this slide has been to $1.1416. I think you got yields probably somewhere near about 3.44%, 3.45% on the 10-year as we come into Friday. Oh my goodness, I don't have my charts up. Are you kidding me? I apologize. How did that happen? Was I not seeing that? I wasn't getting any notifications. My bad. Let's jump around to that again. Okay, that would help, wouldn't it? On a day where we got the S&Ps down 1.4%, I guess you were just staring at my pretty face to kick off Friday. Well, we'll change that, folks, don't worry. Let's do it real quick again. The S&Ps, you're breaking below levels. I just talked about gold for a lot, so let's just talk about gold for a moment. We'll back things up on a weekly. There's your five-year weekly action, okay, and here are the lows I was talking about, folks. You back it up to July, you're trading at $16.78, you go to 2021, $16.77, the lows from early 2021, and you can see you got to get back to the COVID volatility for gold as you're at $16.67 this morning. Okay, we jumped to notes and bonds, as I mentioned as well. That's a weekly. We'll put it on a daily, and there's your slide, man. We're coming right into this area. We've got critical areas all over the place right now, folks, in terms of yields. You can't argue that's a critical area when we're coming straight into the lows that we had of June, and it's like a one-way trip, man, as in pretty decisive action. There has been no reprieve, and when you think about it, folks, no reprieve for what, six weeks of trading? There is no reprieve whatsoever. I mean, yeah, you have green bars in there, okay, but all the green bars do is get you half a back of what the previous day lost, or maybe you get two green bars in a row that erase one day's losses, and then the slide begins yet again. No reprieve for six weeks, as we have had, lower price and higher yield, and I'm not sure that changes anytime soon. We jump over to the VIX this morning as markets kick things off down about 1.4%. VIX, still not even back to where we were on that spike on Tuesday up to 28. Folks, if you think this market is freaked out, if you think this is a max-fier situation, just zoom in on the VIX, and you will see that there is nowhere near a max-paying situation just yet, and even zooming in on just where we were just this year, okay? There's this year alone. Most of the time when we're getting dicey in this market, man, we're hitting 35 to 37, and that's just going back, folks, this year, okay? That's not doing some historical comparison where things might be a little bit different. That's talking about the VIX. That's talking about the VIX when we got a spike at the June Lows. That's talking about VIX when we got the spike in May. That's talking about VIX when we were there in February and in March as the war began in the Ukraine, in Ukraine, and then you had the initial spike in March when the market really started cascading lower. So there's a lot more room for more fear in this market if it happens, folks. You get the S&Ps sitting at 38.68, 39.00 was an important area, and we just blew right through it overnight.  We'll put it on the 15 minutes since I didn't have my charts up to kick off the program, man. But yeah, you're talking about 300 points from where you were just on Tuesday's action, folks. NASDAQ 100, 1100 plus points from where you were trading. We were pushing 13,000 when we came into the CPI on Tuesday. Now, folks, you could make a very real case, folks, that you had no business trading higher by 1,000 points in the NASDAQ 100 coming into that CPI number. No business whatsoever. Hindsight, obviously, 2020 on this one.  But, boy, we're nowhere near the lowest, folks. We still got 1,000 points in the NASDAQ in terms of the lows when we're at in June. And you talk about the S&Ps, you still got 230 points from where we are from the lows. Don't think they're out of question when things change so quickly from where we're at right now in this market. And we'll jump over the dollar index as we wrap up this first segment, DXY, pushing above 110. Now, I mentioned gold, right? Getting decimated this morning. You do have a rising dollar. But as I've said, you know, not to the dramatic fashion that you may expect for the type of pain that the dollar is in and we'll finish it up with the end right now. Not huge action, but dollar getting a little bit of strength this morning. Gold getting hurt, markets, S&P down 50. We got a big show, folks. Stay tuned. I'll be right back. Vista Gold owns and operates the largest undeveloped gold project in Australia, the Mount Todd Gold Project. Vista Gold just completed their feasibility study, resulting in a 7 million ounce gold reserve. Vista Gold has all major permits approved and has retained CIBC capital market assistance in evaluating alternatives and in completing an accretive transaction. Vista Gold trades on the NYSE American and TSX under the ticker symbol VGC. Vista Gold executing a strategy to create shareholder value. Everything in the universe is governed by the Fibonacci sequence. This mathematical principle is responsible for everything from the most aesthetically pleasing artwork to patterns in the stock market. To stay on top of stock patterns you can take advantage of, sign up for the Fibonacci 24-7 newsletter at tfnn.com. When you subscribe, you'll get a weekly report from veteran day trader Larry Pesavento on stocks you need to pay attention to and you can trust Larry's analysis. After all, he's got 45 years experience as a day trader. Larry will also provide daily charts, videos, and data on the key markets that he's tracking. Expect notifications from Larry on market movement you need to act on at any time. First-time subscribers also get a 30-day money-back guarantee. If you're not satisfied, let us know and you'll get a full refund within 30 days of signing up. Subscribe to the Fibonacci 24-7 newsletter today, tfnn.com. Educating investors. Steve Rhodes started his trading career as a student almost 20 years ago and the student has now become the master. Steve won the prestigious Timer of the Year award in 2018 and barely missed that mark again in 2019, finishing at number two for the year. An amazing accomplishment. Steve Rhodes is committed to sharing his techniques and knowledge with anyone who wants to learn and he shares his vast amount of trading knowledge every day in his Mastering Probability newsletter. Steve's award-winning newsletter, Mastering Probability, is delivered every trading day with updates throughout the afternoon. Sign up for Steve's market newsletter, Mastering Probability, and you'll receive access to seven of Steve's educational webinars absolutely free. At TFNN, all our newsletters come with a 30-day money-back guarantee, so you have absolutely nothing to worry about. Visit tfnn.com and try Mastering Probability 30 days risk-free today. TFNN, Educating Investors. TFNN has launched the Tiger's Den, hosted at Discord. TFNN has been educating traders for more than 20 years with live programming hosted by a variety of professional traders during market hours. The Tiger's Den, available to all Tigers and Tigresses for just one dollar for the year. There's no cash or added costs when you join our community of traders. Sign up today and become a part of this educational community of traders. Just visit the front page of TFNN.com. Now, let's jump around to some of the stories. Always interesting to hear the takes, and you get to analyze folks the takes. I share these takes with you, not because they're accurate or they're correct, but it allows you. I mean, Kevin Hinks so many times has some great expressions, right? He says, I had a quote in my head, but I don't want to muck his quote up, but it's up to you to make your decisions for a market bias, folks, and the great thing about their program at Fast Market is you make those decisions about what you think is going to happen in the market, and then they teach you using options, and you can do it using equities, the best way to capitalize off of those market biases. So you take them for what they're worth, but Bank of America out there, they're not seeing new highs anytime soon, folks. New lows for US stocks as inflation shock ain't over. Shouldn't be surprising, man. You know, the amount of money that analysts are getting to tell you that inflation shock is not over, folks, when we got the CPI print that we just got seems like something that some common sense might be able to push through in a big way. High inflation earnings recession to fuel declines, and that is according to Bank of America strategist, inflation shock ain't over, and an earnings recession will likely drive stocks to new lows. That's Michael Hartnett said in a note, although the bank said US equity funds posted their biggest inflows in more than a month, the weekend at September 14th. Did you see what the market just did? Biggest inflows in a month, the week into September 14th, and we just traded down seven to 8% off the CPI number we got on Tuesday. Let alone if you're in the NASDAQ 100, we're off even more than that right now. His analysis of past bear markets shows average peak to trough. I mean, folks, we went through this many times before, but you forget pretty quickly when in the current state of the short-term period of time that we're in, you think there's a max-paying situation. I mean, the VIXA 27 right now and the S&Ps sitting near 3,900, not that bad considering where we've been in the past and what we need to tackle in the current perspective. That suggests the current bear market, which the benchmark index confirmed in June will end in October with the gauge at 3,000. Better watch out, man. A lot of people are going to be pretty freaked out. This market trades down another 1,000 points in the S&Ps, but folks, we just traded down 300 points in 72 hours. You better believe that there's risks on both sides of this market. If we're reaching a period, and I know many of you don't think this way, so in a good way, I say that, right? As in, don't think because we went down 300 points that there's now a greater chance that you catch a little bit of a bounce, right? There are still equal chance. Usually you get, you know, asymmetric premiums when you're thinking about the moves to higher price, to lower price, but there's a very real chance this market could go down 500 points, just like there's a very real chance it could go up 500 points. Doesn't matter what happened yesterday that we went down 300 points in the last 72 hours. It matters right now. Like get 4,800 out of your head. That's what I'm trying to, I think, portray and explain the best. As in 4,175, the market had no business being at 4,175. We know that now because the market is not wrong and the market's trading at 3870. But it's very easy to start saying, well, we've already given up 1,000 S&P points. That's a lot of give back. You have to factor in that at some point we're going to find a bid because there's a lot of bad news already factored in when the S&Ps have traded down 1,000 points. While true, another way of saying that is that we came into the CPI print at 4,175, which is within 85 points of where this market was trading at in September, coming into the final quarter of the year. All you did was give back the final three months of last year. Now, folks, we're a year out. So you have consolidated with no gain for a year. But even pre-pandemic, you came in at 3,200 and we're talking about a price level of 3,900, right? Well, no, we're talking about a price level of about 4,100, where you came into that CPI print 41 to 4,200. So you're talking about that the market 72 hours ago was within a stone's throw of where it was trading at a year ago. And all you did was basically trade flat for a year from September to September. And that is following, that is following a 33% rise from pre-pandemic levels. I'm not cherry-picking 2,174. Okay, I'm not taking the level right before it. We had in client. I'm going from January of 2020, you're at about 3,200. You trade up to September to a price of about 4,200. The market gains 33% in a year and a half as we endure a pandemic, the likes that most of our generations have never seen, and then you chop around for a year. With everything going on, it seems like the market might have the right to trade a little bit lower from where it was trading at in September. And I'm being a bit exaggerated, of course, folks, as in you better believe that some of the 33% that this market gained from beginning of January 2020 to where you were in September, what if we just get a pullback of half of that? What does that bring us down to? That brings us down to about 3,700 if you give back 50% of the gain that you got from there. Folks, we are still trading. 650 points above where we opened in January of 2020. We are still up. I mean, remarkable 650 points where we started 2020. It's only two and a half years. 600 points is almost a 20% gain. The market is up 20% in a period of two and a half years since the world shut down during a pandemic, and now we have inflation, the likes that at least my generation has never seen. That's the kind of mentality you want to walk yourself through in my opinion. It allows you to keep the context of what is going on a little bit easier than saying to yourself, we just traded it down 1,000 points. Man, this market has given back a lot. It has not given that much back when you look at things in a little bit of a broader context. Now, you really want some dicey territory, okay, is you pull up a chart from 2008, where it's basically a straight shot from 666 to 4808. That seems like I'm cherry picking two things too well, as in cherry picking a very low that was obviously exacerbated on 665 on the S&Ps back in 2008. But I've done this example before because this is the one that makes the most sense in my head to realize the market sentiment at the time. We came into the presidential elections in 2016, man, the market was trading at 2,200. We're up 1,600 points from that. What is that exactly?  But that is a percentage gain of 72%. And that's a percentage gain in about six years. You divide that by six. I know we got compounding and what, but that's about a 12% gain from where we sit right now, folks, from where 2016 started the election. And I bring that up because it's important to remember that everybody thought everything was great financially, right? Trump caught a lot of flak that he just caught as in wasn't getting credit for what he's doing, no matter what you think about it, okay? He wasn't getting credit from the people thought he didn't deserve credit because everybody said the economy was on such a great track already. Well, that was a 2,200. We've done 12.5% a year for six straight years at 3,800. We are very elevated at these levels with inflation raging. We'll come back for the open, folks. Time of booming inflation. We are purchasing powers eroded. There's no better place to protect your harder and money-thinning gold. This the gold's flagship asset is the Mount Todd Gold Project in the Northern Territory of Australia. This is Australia's largest undeveloped gold project. We are talking a world-class gold project in a tier one mining district. This is a large-scale, low-cost project with significant existing infrastructure in a politically safe and friendly mining jurisdiction. This the gold just completed the Mount Todd Feasibility Study, which resulted in a 7 million ounce gold reserve in a 16-year mine life. All of this combined with the approvals of all major operational, as well as environmental permits. This distinguishes Mount Todd as an attractive, devious partner, ready development stage gold project. This the gold trades on the New York Stock Exchange under the symbol VGZ. TFNN is excited about our new software charting program, the Art of Timing the Trade Chart. In collaboration with Tom O'Brien and using his best-selling book, The Art of Timing the Trade, Your Ultimate Trading Mastery System, David White has programmed an outstanding piece of software that will complement any trader's methodology. Using this first-of-its-kind program, The Art of Timing the Trade Chart allows you to scan thousands of stocks for Fibonacci formation setups, including guardleafs, ABCs, butterflies, and much more. The Art of Timing the Trade Chart is designed to help you when scouring the markets for stocks just beginning to form the trading patterns that many investors spend days, weeks, or even months searching to find. And right now we're offering licenses available at only $79 a month. We are so confident that you're going to love this new charting software that will even give you a 30-day unconditional money-back guarantee. Don't miss out on this incredible new piece of software. Get your copy of The Art of Timing the Trade Charts today by visiting TFNN.com. Sharpening your skills as an investor is like getting better at playing a musical instrument. You have to practice, sure, but you also need excellent instruction from experts. At TFNN, you'll get advice and guidance from the authority in technical market analysis, and it's not just dry, tedious text either. TFNN airs live financial content streamed live on TFNN.com and TFNN's YouTube channel with Tiger TV, live every market day from 8.30 a.m. to 4.00 p.m. Eastern for free. Each host is an experienced trader and gives their take on the market while taking calls and questions live from around the world. From the moment the market opens until the closing bell sounds, Tiger TV has eight different shows with expert hosts to help you make the right moves with your money. Watch online at TFNN.com or on TFNN's YouTube channel and become the investor you were born to be, TFNN Educating Investors. He's chatting a great point in there talking about, so we've got quad-witching going on right now, and when you get the S&P futures down like this on quad-witching, most times once they expire on the open, you can get a big bounce in the market. So we'll see how that plays out. We've been open for less than a minute, and you see the volatility jumping around right now. Quad-witching folks, interesting action to say the least on a week where we have had the market trade dramatically lower to put it lightly. And just look at the acceleration we had from 745, man. You are up at $38.90, you trade down almost 30 points, you jump up to $38.80, and then you get the markets pretty much red across the board right now. We jump to crude, sitting at about $85, $85.35, gold down about $9.00. It'll be interesting to see where the day goes for the commodities, and we jump around to some of the currencies right now. DXY, dollar index above $110, $110.03, we got the euro, US dollar right now. Just basically a parity, $99.68, we jump over to the pound, US dollar, $113.38. Now check this out, folks, I've been talking about it. We're trading currencies at all. I encourage you to check out the Tiger Forex Report under newsletters written by our man, Teddy Kegstad. He does an outstanding job, and currencies are so important with everything going on in this market right now. But you take a look at the pound, US dollar, right?  Now here's the important part of this, okay, is that it's still a pretty radical downtrend channel that the pound and the euro are in. Okay, even though there might be some divergence of where in those channels they each are, if you're trading the pound or the dollar, the pound pushing lows of that channel line at $113.85 versus, right, you pull up the euro, US dollar on a similar timeframe, not hard to see that you're actually near the top portion of that channel line. What does that mean? Boy, that means that the euro can just trade to the bottom portion of this channel line, and you're talking about $96, $95, $94, depends potentially how long it takes on the euro, US dollar. We jump over to the dollar yen, oops, USD, JPY, and the end sitting at about $143, just consolidating a little bit. This is a daily, so we've been chopping around since about November 7th, you're talking about nine days. That spike there is, for all intents and purposes, an erroneous spike, so ignore that tail down on the end, you've just been chopping around between $142 and about $145 on the dollar yen. All right, let's jump around to what else we have going on, and how about Apple? We'll bring up Apple, interesting article over at Bloomberg, so Apple, you talk about a give back, man. If you're looking for some action in Apple, maybe you're talking about the 618, which is about $3, $3.50 below where we're trading at right now. Pretty remarkable, folks. When this market got up to 4,300, there was a lot that you could be looking at, and hindsight is always 20-20, and we did make some trades. We had a couple of bearish trades in my newsletter. You can always let them run lower when you've got a market going like this, but that is hindsight. But one of them was Apple has 16 billion shares outstanding, folks. And you had a company trade from 129 to 176, so that is $47 that you traded higher for a company that has 16 billion shares outstanding. That is $750 billion in market cap that Apple created for itself over a period of June 16th to August 16th. Two months, Apple climbed $750 billion in market cap. Well, guess what? That's not sustainable forever, folks, okay? Especially in light of where we are fundamentally in this economy with inflation and the goal ahead of the Fed going on. Pretty remarkable. Now, with that said, we've just dropped $26, and 26, you're talking about $400 plus billion that has been taken away from the wealth of Apple shareholders alone. Biggest company out there. Of course, you're going to have some big numbers. Amazon shares. Let's jump around and see how some of the fang stocks are opening as this market struggles to find a bid in the first couple of minutes of trading at least. We've got Amazon giving it back, man. If you're looking for the 618 on Amazon, you're talking about $120.50. You're back to about $120.182. My dad, we had a great conversation yesterday in the show talking about the moves you're getting in these markets on both directions. You can be a two-way trader, but you want to make sure that if you are a two-way trader, and let's say you are bearish this market as many are, okay, then a preponderance of your trades to say the least. He said 90% is what you're trading. A preponderance to a severe degree of your trades are on the bearish side, but doesn't mean you can't find contrarian bounces when you got the moves that we have happening in this market almost on a daily basis going on right now. As in, okay, maybe one of those bounces is Amazon at the 618, even if you're bearish in this market, okay? Now, you can be trading the futures as well. I think he was really referring to the futures, talking about the S&P, the NASDAQ 100, the NQs, the Qs, but it rings a bell on this because do I want to load up the boat on any equity right now? No, but if you're looking for a trade, Amazon down 4% today coming into the 618, given up $25 from where it was trading at on August 6th. Now, let's take a look at Amazon. How many shares does Amazon have trading as they've been splitting? All right, Amazon's got 10 billion, 10.187, okay, so it's a little bit bigger than that, but Amazon's got 10 billion shares, man, and what did they just give up? They just gave up about $25. That's $250 billion. That's a quarter trillion dollars. They just gave up from where it was trading at August 16th. I wasn't exactly looking for a bounce this week, but folks, when you get the markets dropping 10% in a week, okay, they're getting ahead of the Fed to a certain degree. They are getting ahead of the Fed to a certain degree. Doesn't mean they can get ahead of everything, okay? But the markets figured out they were magnificently wrong coming into Tuesday's number. Inflation, nowhere near, nowhere near back in the bottle, and we'll see how that one plays out. Now, Amazon last night, first time NFL streamed exclusively on a streaming service. Amazon had Thursday night football. I caught a little bit of it. I was watching it on my phone at one point. I was watching it on the television using my Roku. They had a pregame going on. It was pretty interesting. They got a great game. Didn't stay up for the end of it, but you had Kansas City, the Chiefs, Mahomes, ended up winning versus the Chargers. A great game. Overall, it'd be interesting to see where that goes, but Thursday night football, exclusively now on Amazon Prime, and folks, you've got a lot of football nuts in this world, man, in this country at least. And the interesting to see, one of the greatest dynamics I think of how it plays out is they spent billions to do this, okay, but they're going to sell ads for it. So this isn't like a Netflix signing up, and they just have to make up the money via, now Netflix is going to start selling ads, okay, but just rewinding to where they didn't, okay? Amazon's going to sell ads, man. They're selling them at something like $500,000 a pop for 30 seconds, and they're going to sell those ads, and they're going to be targeted. Imagine the ability to target on Amazon on something like television, folks. The world is going to change, man. All of that data. Imagine how much more people will be willing to pay if you know you are targeting a customer watching Thursday night football, and you want to only hit, I mean, I don't even have to tell you, right? You only want to hit somebody that's, maybe you're Proctor and Gamble, right? I mean, Proctor and Gamble, you can see, have they bought any of your laundry detergent recently, right? Oh, tell me customers that haven't bought laundry detergent in two to three weeks, but they've bought it in the last three months. I mean, you're just hitting people that might be right on the verge of buying. You could pay a lot more money if that's the type of targeting that Amazon's going to provide in streaming NFL live football during the broadcast, let alone everything else going on. That was last night, but Amazon dramatically lower with everything else this morning. Stay tuned, folks. We'll come right back. You might think that if you want to be successful at trading in the stock market, you're going to need a crystal ball. After all, it's impossible to predict the future, right? Like any endeavor in life, before you decide it's impossible, get some advice from the experts. You might find that it's not so impossible after all for daily market overviews that give you direction on the key indices, selective stocks and commodities. Subscribe to the opening call newsletter at tfnn.com. The opening call newsletter is written by Basil Chapman, creator of the trading methodology known as the Chapman Wave. The Chapman Wave up-down sequence gives you an edge in identifying price turns, finding the peaks and valleys in stock prices.  First-time subscribers also get a 30-day money-back guarantee. If you're not satisfied, let us know and you'll get a full refund within 30 days of signing up. tfnn.com. Educating investors. The technology around us is changing every day. With so much happening, it can seem impossible to keep up with all the information. David White's investment newsletter, the technology insider, is designed to give you all the information you need to understand the technology that shapes today's markets and tomorrow's future. David White has made his living staying on the cutting edge of technology. His weekly newsletter will give you specific recommendations for value tech stocks as well as entry prices, target prices and stops to set for each trade. Dave delivers his weekly newsletters every Friday with updates throughout the week. You can get the technology insider at tfnn.com for only $37.50. Sign up for David's newsletter, the technology insider and get an inside look at everything the technology sector has to offer. Try it risk-free today with our 30-day money-back guarantee. tfnn. Educating investors. Will the S&P 500 continue to climb for bold trades on U.S. Large-cap stocks in either direction trade SPXL, SPUU, or SPXS. Directions daily S&P 500, bull and bear, leveraged ETFs. Direction leveraged ETFs. An investor should carefully consider a fund's investment objective, risks, charges and expenses before investing. A fund's prospectus and summary prospectus contain this and other information about direction shares. To obtain a fund's prospectus and summary prospectus call<PHONE_NUMBER> or visit Direction Investments.com. A fund's prospectus and summary prospectus should be read carefully before investing. An investment in the fund is subject to risk, including the possible loss of principal. The funds are designed to be utilized only by sophisticated investors such as traders and active investors. Distributor, Four Side Fund Services, LLC. This program is brought to you by Vista Gold, traded on the NYSE American and TSX under the symbol VGZ. Welcome back, folks. We got the S&Ps right now, negative by 53 points, trading at 3865. NASDAQ 100, man. You're pushing almost session lows down 1.6%.  You got Apple off 2%. Look at that drop-off we saw just on the opening bell right now. For Apple, we're going to get back to Apple in a moment. Microsoft down about 7.10% this morning. You jump over to Google off about 1.3%. We'll jump to Meta off 2.2% right now. Good old Tesla trading off 2% as well. Let's check out some of the growth stocks. I always just jump over to ARC. That'll give you a quick example, man. ARC, yeah, growth stocks getting decimated this morning off 5% for ARC. Let's see how some of their top performers are. Yeah, Zoom off about 3.5%. What do they got? They got Teladoc off 3.6% in there. They got a bunch of Tesla in there.  DraftKings catches a lift yesterday. Probably a decent opportunity for a short man as that move comes ahead of DraftKings. Saw a lot of DraftKings ads on the Amazon broadcast last night for Thursday night football. I believe DraftKings is the sole provider. They get some kind of a deal going on with Amazon. But guess what, folks? In the economy, I should say in the market that we're in right now. Very difficult for these stocks to find a bid with everything going on across the board. Yeah, ES, is that a new low? Yeah, we're ticking. Future's just near that level right now. I got 38.6350 on my chart, and we just ticked a yeah, 38.6250. As we're talking about lows, folks, with the S&Ps down 55 points in the market, down 300 plus points from where we were trading at, basically about 72 hours ago. You want to be exact 73 hours ago in 14 minutes. There you go. All right, let's jump around to the other articles I have pulled up here. I talked about Apple, okay? Now, talking about their new phone, the 14, Apple counts on upscale shoppers to turn latest iPhone into a hit. Now, you could argue that Apple's more expensive than Android overall anyway, but those Samsung phones are really catching up, man. Preorders show that the costliest iPhone 14, though, is the most popular model even without the price of Apple benefits from the shift to high end. Now, there's a couple things going on here. So the 14 lineup reserves the best features for the high end pro models. Those cost at least $1,000. And based on preorder data, the strategy is already working with consumers who have turned the most expensive new iPhone into the most popular version. Now, the iPhone, okay, this is their total sales, okay, more than half of the sales for the entire company take up the iPhone. I mean, just remarkable though, when you look at wearables even 10.5% of the whole number and the iPad, right? The iPad and wearables are 20% versus their phone, just big numbers all over the place. That's why it's the biggest company in the world, obviously, okay. Now you get into part of the reason why they may be doing this. The standard iPhone is the one that starts at $7.99. Now, that caught some headlines recently when they came out and they said that they were not raising the price, okay, because that was one of the things that they could have done in light of what's going on with inflation. But that model does not even run Apple's latest processor, the A16. Instead, it uses the A15 chip as last year with the A16 going into the pro models. The pro phones also get a significant camera improvements, a new interface called the Dynamic Island. So what did they do here folks, okay, they realized maybe that they might not have enough to convert the low end. So maybe they went to the high end. That's left users with less reason to upgrade to a basic iPhone 14, but plenty to pay a little more for the pro. And what did they do? They're making them pay more for the pro and they got all the headlines saying we're not really raising the price. And they're not. You want an iPhone 14, you can get one for $799. Now sales of the device, it's going to be tough to live up to, man. Last year, 2021, $192 billion. Worldwide, the smartphone market is expected to decline 3.5% to 1.31 billion units this year. In China, both manufacturing help for Apple and the key market smartphone sales have tumbled. Apple shipments are up 5% compared with an overall decline of 23%. Apple continues to gain significant share in China. We expect the share gains to continue. I mean, remarkable, right? Apple shipments up 5%, overall decline 23%. They are crushing it, man. Now, successful iPhone 14, yeah, could help these jitters. Of course it could after the month that Apple has had. I just told you about the wealth it created and then the loss that it's had during that time since we've had the pullback. So we'll see where we go. But I bring this up especially because I fall right into all of this, folks. I think I have an iPhone 12 Pro, 12 Max, 12 Pro Max time flies. I bought it about two years ago. It's a great phone, still working out pretty well. I have a few issues with it. The battery not as strong as it used to be, but it's still relatively well. The screen has a little bit of a crack in it. That's my own bad, of course. So I've been thinking about upgrade. Once I reach my two-year number, I'll be able to trade this in. Excuse me. And I am going to fall into this category, folks, because if I do upgrade, it's going to be for a reason to upgrade to a higher-end model where I will reap the benefits of it because otherwise there's no reason for me to do it. And I'm actually looking forward to potentially doing that around the holiday season. So it'd be interesting to see if they get people from the 12, which was a decent launch as well, to push them into that 14 Pro lineup, which is what they're talking about there. All right. What else do we have pulled up here? Yeah. So Adobe, big news yesterday. Let's jump to this one real quick. They had quite a day to the downside. My dad was talking about this on his program too, man. Be careful of Adobe. And yeah, look at it, man. You're down another 4.5% from where you were yesterday. Let's put this thing on a five-year weekly. He said, man, you're coming into this low and look at the volume that you're doing. You're coming into the COVID low, which is a bar on a weekly basis from $3.24 to $2.55. You are now into that bar at $2.95. And folks, you've done 40 plus million shares this week, which is more than you were doing in the week at the COVID lows or the week prior. It's more than any week in there. The decimation that this thing just had, and you put it back to a $15 minute, you traded down from $3.70 to $2.95. You gave up $75 for a $3.75. And what is that exactly? You're talking about a give up of now 20% on the top from where we were Wednesday, and that's not even counting that we were pushing 400. Okay, so you've given up about 25% for Adobe shares. Now, who knows how this will go in the future. The market, not very optimistic in the short term, but they are buying Figma for about $20 billion for a more consumer-friendly creative offering. The market, they don't like them spending that cash to get into another area, folks. Biggest acquisition and the market found the deal expensive, sending shares to their steepest single day decline since 2020. Now, you want to flip that around on the other side. It might be steep and it might be expensive for Adobe, but who loves it? The Figma venture capitalists love it. Record-breaking sale to Adobe, delivering billions to top venture capitalists. Early investors in the design software startup each ended up with at least $2 billion. Now, that's a 10-year number, folks, because you got one investing in 2012 shortly after the company was established and just started. That he is a partner at Index Ventures, invited famous co-founder and CEO to dinner, ordered a bottle of wine to celebrate the deal. I would say so. It was then that the young entrepreneur hesitated, I'm 19. No wine for the 19-year-old as they celebrated, and then 10 years later, man, $20 billion as the VCs take a big chunk out of that. They were the biggest holder, 12%. They declined to comment on the size of their stake, but the firm's first check and its subsequent investments are now worth about $2.6 billion. They have a bunch of top VC firms in there. Greylock Partners was in there. $14 million in funding. Kleiner Perkins, $25 million in 2018. Its stake is nearly 11%. Yeah, the early backers each ended up with $2 billion, folks. You see the numbers are talking about $14 million, $25 million, big numbers. Stay tuned, folks. S&Ps down 53. We'll be right back. TFNN has just launched their new trading room, the Tiger's Den, hosted at Discord. TFNN has been educating traders for more than 20 years with live programming hosted by a variety of professional traders during market hours. And now they are expanding their reach with the Tiger's Den, available to all Tigers and Tigris' for just $1 for the year. There's no catch or added costs when you join our community of traders. In the Tiger's Den, you can look over the shoulders of Tom O'Brien and the other TFNN hosts while they analyze charts during their live Tiger TV programs and join an interactive trading community with hundreds of members exchanging ideas, interact with other Tigers and Tigris' as they share trading ideas, news analysis, and discuss the market action all trading day, even at night and on the weekends. The Tiger's Den at Discord is accessible on mobile or tablets as well. So it's always at your reach. To sign up today and become a part of this educational community of traders, just visit the front page of TFNN.com. You might think that if you want to be successful at trading in the stock market, you're going to need a crystal ball. After all, it's impossible to predict the future, right? Like any endeavor in life, before you decide it's impossible, get some advice from the experts. You might find that it's not so impossible after all. For daily market overviews that give you direction on the key indices, selective stocks, and commodities, subscribe to the opening call newsletter at TFNN.com. The opening call newsletter is written by Basil Chapman, creator of the trading methodology known as the Chapman Wave. The Chapman Wave up-down sequence gives you an edge in identifying price turns, finding the peaks and valleys in stock prices.  First-time subscribers also get a 30-day money back guarantee. If you're not satisfied, let us know and you'll get a full refund within 30 days of signing up. TFNN.com. Educating investors. Everything in the universe is governed by the Fibonacci sequence. This mathematical principle is responsible for everything from the most aesthetically pleasing artwork to patterns in the stock market. To stay on top of stock patterns you can take advantage of, sign up for the Fibonacci 24-7 newsletter at TFNN.com. When you subscribe, you'll get a weekly report from Veteran Day Trader Larry Pesavento on stocks you need to pay attention to, and you can trust Larry's analysis. After all, he's got 45 years experience as a day trader. Larry will also provide daily charts, videos, and data on the key markets that he's tracking. Expect notifications from Larry on market movement you need to act on at any time. First-time subscribers also get a 30-day money back guarantee. If you're not satisfied, let us know and you'll get a full refund within 30 days of signing up. Subscribe to the Fibonacci 24-7 newsletter today. TFNN.com. Educating investors. Alright folks, we've got markets trading lower. S&P is off 58 points right now at about 38-60. You get the Nasdaq 100 off more than 200 points right now. Jumping around with a couple of articles to yield curve, right? Huge inversion going on between the two-year and the 10-year. May reach the most since the 1980s, and that is talking about all-spring global investments. Two-year yields are likely to surge in the next six months. Increasing, excuse me, the inversion with 10 years to at least 100 basis points. That's Brian Jacobson, senior investment strategist at the firm. The yield gap is currently at minus 44 points on Friday, the deepest in a month. There's your chart in terms of that inversion. Folks, this one goes all the way back to 1980-84. Now look where we are. We're coming into basically where we were, 99 to 2000. You are, I believe, below where we were at in late 89 now. Zero is on this chart. We are below it. And when you have the two-year trading above the 10-year, you're talking about heightened concern among investors about a contraction in economic growth. I would say so. Now you jump to that. So what do you do? What do you do if you have this type of inversion talking about heightened concern about a contraction in economic growth? Well, the next article out here, and I agree with this one, man. The dollar is the only place to hide this year as risk assets crumble, man. Now the one that caught my ear, deep recession needed to reduce inflation, Citigroup says. Now just try and think about this on a broad scale, folks. We get the S&P's down 60 right now. It is not a business's responsibility to generously stop inflation for the betterment of everybody. The market is supposed to do that. If businesses are able to raise prices or if they think they need to raise prices to keep up with inflation and costs and capital, I mean, rents are rising. Human capital is rising because people need more to live. As we come into the end of the program, they need to be forced to make those decisions. Consumers need to be forced to make those decisions that are very different from what we're making right now. We're feeling it a little bit, but boy, it's a dicey scenario, folks, because we got the jobless claims this week, but were they? 213,000 unemployment in the threes, right? The jobs number, non-farm payrolls continuing to add hundreds of thousands of jobs. Not sure that's the case. It gets us out of this and the market's not either. It's going to be a wild one, folks. Stay tuned. Basil Chapman, he is back next doing his program, the Tiger Technicians Hour. We'll be right back.


The skills and techniques for surviving can be learned through training and experience. Though very important, these skills can be severely hampered if you don't have adequate tools with which to survive. A person who has a good imagination and some degree of ingenuity will find that both nature and the aircraft can provide most of the tools they need to survive. But if the aircraft is totally destroyed and you are in an environment that has extremely limited resources, the only gear you have available for survival is what is on your person and whatever survival kits you are able to get off the aircraft. The FAA has provided you with training and very comprehensive survival kits and life rafts designed to keep you alive until rescue. However, just having these items on board isn't enough. You must know exactly what you have available to you and, more importantly, how to properly use them in a survival environment. This module will concentrate on three areas. Survival kits provided by the FAA, life rafts and accessory kits provided by the FAA, and personal survival kits. The Mod One is a comprehensive survival kit that is designed to keep four persons alive for 72 hours. The Mod One is equipped to address seven vital areas, first aid, shelter, water, food, signaling, fire starting, and tools. In the area of first aid, the Mod One contains the Adventure Day Tripper Medical Kit. It is designed for up to five people and is equipped to last approximately four days. Its contents include a brochure, an illustrated guide to life-threatening injuries, bandage scissors, splinter picker forceps, double antibiotic ointment, antiseptic towels, tincture, butterfly closure strips, mole skin, mole foam, surgical gloves, antimicrobial hand wipes, sterile dressing in various sizes, adhesive tape, adhesive bandages in various sizes, trauma pads, gauze bandage, cotton tipped applicator, elastic bandage with velcro, acetaminophen, antihistamine, ibuprofen, safety pins, accident report and pencil. In addition to the Day Tripper, the Mod One will contain the following additional first aid items, sunblock, no-rinse body wash, insect repellent. During your global survival course, you have or will receive a block of instruction on first aid techniques. This will help to tie together the first aid kit items and their use so that you may better treat common post-crash and survival injuries. In the area of shelter, the Mod One kit contains items that will help to protect you from the elements so that you can better maintain proper body core temperature. These items are tube tents, emergency bags, gloves and sunglasses. Of course these items are definitely more effective if you combine them with proper dress for the environment in which you find yourself. For a more comprehensive look on how to dress for survival, refer to the modules on hot land and cold land survival. Water needs are addressed simply by drinking the packaged water located in the Mod One kit. There isn't a large amount of water and it will only help to sustain you for a short time. More than likely, you will need to find additional water. For a more detailed discussion on water procurement and purification, refer to the hot land survival module. Food isn't a high priority while surviving.  As mentioned, there isn't an abundance of water in the Mod One kit. So if additional water is procured, at least two quarts per day per person, you can safely eat the survival rations in the kit. The Daytrex bars located in the Mod One have the ideal macronutrient profile, high carbohydrate, moderate fat and low protein for surviving in extreme environments. Read the eating instructions on the package before consuming. Signaling devices located in the Mod One kit are plentiful and effective. Each signaling device will have clearly written and simple directions. Read the directions well in advance of use and have signaling devices at hand for instant deployment. The signaling devices contained in the Mod One include signal mirror, MK13 day night flare, strobe light, gyro jet flares, the Orion Ultimate Signal Kit which includes C die marker, orange smoke flare, whistles, signal mirror, solar blanket and aerial flares. Especially when dealing with pyrotechnics, flares, great care must be taken in order to protect you and fellow crew members from potential harm.  Fire can be a survivor's best friend. A fire will provide survivors with warmth, security, protection, a way to purify water and cook food as well as acting as a signaling device. Before we address the fire starting devices located in the Mod One kit, we must first learn the steps in starting and maintaining a fire. There are few considerations in picking a spot to start your fire. Make sure you are not starting it in a place that may cause a wildfire. Avoid areas with dried and dead grasses. Don't start it under or near coniferous trees. Don't start it too close to the aircraft or you may risk igniting spilled fuel. It is also a good idea to look up, look for a snow overhang that could come crashing down on your fire. In general, just take a good look around for possible hazards. Next, consider the ground on which the fire is to burn. Brush away all dead leaves till you get to bare earth. Find some rocks that range in size from your fist to about the size of your head. Make your fire pit about three feet in diameter and encircle it with the stones. Pile the stones up to a height of approximately one foot. If in deep snow, where it may be impractical to dig down to bare earth, you may have to cut green logs about three to four feet in length and make a fire platform. For a fire to start and remain burning, it must have three basic elements. It must have oxygen, fuel and heat. Oxygen is abundant in the form of air. Fuel will most likely be procured from nature or from the kit. Heat will be generated from one of the various fire starting devices in the Mod 1 kit. Before you make the first spark, gather all material you will need to start and maintain your fire. First, you need to gather some tinder. A good example of tinder would be fine dried grass, dead and dried pine needles, cotton, paper, magnesium or powdered wood. Simply put, anything that ignites easily and burns hot is considered tinder. Next, you'll need to find some kindling. Examples of kindling would be small twigs, thicker grasses, wood shavings and thin chunks of dried bark. Finally, you need to find some fuel. Fuel would be material ranging from just slightly bigger than kindling to full-fledged logs. Always get three times the amount you think you will need. Get tinder, kindling and fuel all at once and have it near the fire pit. In the pit, you will need to get your tinder piled up in a spot where it is protected from the wind. The next step is to put a spark to the tinder. Ensure that the tinder has a lot of oxygen coming into it. If you put a spark to the tinder and nothing happens, it usually means you have the tinder compressed and insufficient oxygen is feeding the fire. Spread the tinder out slightly and try again. You may also want to gently blow on the tinder to get it going. Once the tinder has ignited, start putting the small tinder on top in a teepee fashion. Progressively work up to the small kindling, then start adding your fuel.   The Mod 1 kits are sufficiently equipped to make fire starting a cinch. For tinder you will find chemical fire tinder. These are tablets of highly combustible material that burn hot and slow. To get the tinder burning, you will find matches, metal match, a magnifying glass, candles. With the tinder and spark source present in your kits, your job would simply be to procure the kindling and the fuels. In those instances where it is difficult to use a spark-based fire starter, you may opt to use the campfire starters located in the Mod 1. These devices emit a flame similar to a road flare. They burn for approximately 120 seconds, giving you ample time to ignite the kindling and small fuel. Survival tools located in the Mod 1 kit will help you in several ways. The tools you will find in the Mod 1 are mini folding shovel, multi-tool pliers, krill lamp for interior shelter lighting, saber cut saw for cutting firewood, duct tape, and flashlight. As you have seen, the Mod 1 kit is well stocked, but a kit is only as good as the person who is using it. Know the contents and how to use every item in the kit. As with any kit, the Mod 1 has room for improvement. This is where a personal survival kit will come in handy. Typically, you don't want to duplicate items that you have in existing kits, but here are a few suggested items for a personal survival kit. A sharp pocket knife. A spark-based fire starter or waterproof matches. A cable saw. Required medication. Expersed of prescription glasses. A small signal mirror. A small bottle of water purification tablets.  A solar blanket. A mini flashlight. Cotton.  A small first aid kit. Dental floss. And a small fishing kit. Hooks, lines, sinkers. A point to remember. Keep the personal survival kit to a size that can easily fit into a pocket. The idea is that when you leave the aircraft, so does the kit. Try to keep food items out of personal survival kits, because they may leak or spoil. The life rafts that are put on FAA aircraft are of the highest quality. The two life rafts you will find are the Winslow raft or the Switlick raft. But without proper knowledge of the raft and its components, you put yourself and your fellow crew members at a disadvantage. Some of the features of these life rafts are CO2 and nitrogen inflation system with oversized buoyancy tubes, tripod arch auto-inflating canopy support system, oversized four-rung boarding ladder, five boarding assist handles, combination foul weather observation port and water collector, inflatable insulated floor, auto-deploying hemispherical drogue, 75 feet of heaving line, 35 feet of painter line with quick release, writing line with hand grips, unidirectional radar reflective tape. Each life raft will have an accompanying accessory kit. These items will help to make survival at sea a little easier to facilitate a quicker rescue. Items in the accessory pack include survivor six reverse osmosis pump, sea die marker, emergency water container, raft repair kit, hand pump, raft knife, bailing bucket, sponge, heaving line, sea anchor, fishing kit, flashlight, signal flares, EBC 102 emergency locator transmitter. The life raft will take about 30 seconds to fully deploy in temperate conditions. For an in-depth discussion on raft deployment, writing, boarding and survival techniques, refer to the water survival module. As you have seen, the FAA has invested a great deal in ensuring that its pilots and crew members are properly equipped to survive. It is still the responsibility for each crew member to know what equipment is available to them and how to use it safely. Training, knowledge and preparation in survival will be valuable allies and will substantially increase the odds of your making it back alive.