The morning alarm woke up Ghen. With an annoyed sigh, he stretched out his arm and silenced the foul-sounding chirps. Slowly sitting up in bed, he let out a deep yawn and got to his feet. Running a couple of chitinous fingers along his antennae to stimulate them to life, he made his bed and then went to his closet. Today was a work day, so he needed his suit. Once the pants were on, he stretched out his wings so that he could button up the shirt, then relaxing them once all the buttons were secured. Dressing for the day was done, now for the morning meal. Entering his kitchen, he took out the chilled leftovers of the evening meal last night and popped it into the radiator, first defrosting and then slightly cooking it. During that process, he also fished out a ceramic cup and placed it in his brewer, serving himself some synthesized caffeine. His idle thought led him to being amused that, when eaten directly off a plant, it has a concentration that could kill him three times over. But after going through some refinement and roasting, all it does is make him hyper. Once the meal was put together, his plate of heated leftovers and a cup of almost-piping-hot cup of Xia's, he took his time to enjoy it. His communicator vibrated. When he looked, he found it was from his boss. "Hello?" Ghen answered. "Ghen, the meeting's been moved up to a few minutes from now." His boss, Xkik, announced. "Apparently higher up has something important they want to say. We have a terminal ready for you, I'll message the login details." "Wha-, what's so important?" Ghen asked in bewilderment. "Did a water line rupture or something?" "No, nothing like that." Xkik replied with a slight chuckle. "It's actually about the rumors we've been hearing. That human corporation wanting to acquire us? That's what they're talking about." Ghen could feel everything inside his thorax drop to the floor. "That must mean it's true then, right? Did we get sold off by the Queen to this company then?" "Show up to the meeting and you'll get your answer." Xkik said simply. When he finished, Ghen got the notification on his communicator. There's the login details, allowing him to remotely attend the meeting. "They're about to start, hurry up." Once Xkik disconnected, Ghen worked fast to login and set up the remote viewing. Once everything was done, his screen started transmitting the meeting room. It was already packed. And off by the main board, he saw his answer. There was a human, resting against the wall on his two legs. Standing right in the center of everyone's view was the coordinator, Tizx, watching the clock periodically. As soon as the meeting's start time was reached, the coordinator began. "Alright everyone. I realize that this was rather short notice, so I want to say how appreciative I am that you made it. Now then, let's just get right to it. For some time now, many of you have been hearing rumors that a human corporation has been interested in us. Why? We never really knew. We're just an organization responsible for finding, extracting and providing water to the colony here all under the direction of the Queen herself. Well, as of now, I have the answer for you. Why don't I let Ryan say that?" Stepping back, Tizx motioned for the human, Ryan, to take over. With a nod, Ryan practically bounced over and then took the position. "Good morning to you all. I hope my Zazk is passable, heh. Anyways, the answer to those rumors, is yes. Terran Galactic Company is indeed interested in you all. Which now leads to me. I'm here to announce that, effective yesterday evening, this water company is now a subsidiary of Terran Galactic Company, under the name of Zilia Water Delivery." Many other sub-coordinators broke into hushed conversation, no doubt speaking their thoughts with each other about this move. Ghen could only wonder if this was even a good thing. What will the humans do? Will he still have his job? Will he have to learn how to deal with the ruthless humans? "Now, I am well aware this is quite the...uh, change." Ryan continued. "That's why I'm happy to inform you that, no, nothing negative or detrimental will happen to you. You just have new people to answer to. Operations will continue as normal, everybody here will still keep their jobs. The only real change any of you will personally experience is that Coordinator Tizx here will now report to someone else. On behalf of the Terran Galactic Company, we are extremely excited and are looking forward to working with you all. Thank you for your time." A week later. At least Ryan wasn't lying. After the initial shock wore off, things went back as they normally did. There were no terminations, no reductions in annual pay or anything. Nothing really changed. At least until this new meeting was called. Ghen was at the worksite this time, so he took his seat and watched as, once again, Ryan led the meeting. "Hello again, everyone!" He said cheerfully, his Zazk noticeably improved. "I hope I didn't end up looking like a liar, right? Everything's still normal, all that?" All the zazk in the room confirmed, providing comments to their pleasant surprise as well as lingering thoughts. "Awesome! Awesome." Ryan said jubilantly, his fleshy mouth revealing his bone-white teeth. "Now then, you're probably wondering why I'm here again, right? Well, I got another fantastic piece of news for you all! Two, actually. I'll start with the first: Zilia Water Delivery has just completed its IPO. The company is now publicly traded!" Ghen and the others voiced their confusion, having no idea what in the name of the Queen Ryan was talking about. What was Ryan talking about? What's an IPO? And why exactly is being publicly traded such a significant thing? "Oh, you guys don't know any of that?" Ryan asked in surprised confusion. After everybody confirmed, he let out a quick huff as he began his explanation. "Well, to begin, IPO is short for Initial Public Offering. Basically what that means is that, before today, Zilia was privately held. Only certain individuals could buy and sell shares here. But now that we're public? Literally anyone can buy and sell shares in the company, hence us being publicly traded." "Uh, what's a share?" Ghen asked, still completely lost. "Oh, boy..." Ryan muttered under his breath before returning to his peppy image. "To simply put it, a share is short for having a share of ownership in a company. When you buy a share, you're buying a piece of ownership, and when you sell, you're selling that amount." "So wait...if someone buys a share, they're a co-owner then?" One of the other team coordinators asked. "If they get enough, yeah." Ryan nodded. "You need a lot though, and that really depends on the company. If I had to give an answer though? I'd say usually you need to have a lot more shares than a lot of people combined to be officially a co-owner, but we call that being a majority shareholder." "And how do we do that?" Ghen asked, now growing curious but still not understanding why such a concept exists. "Simple. Buy shares." Ryan said simply. "And that leads into the second piece of awesome news. Zilia's corporate has a product in mind, a premium-package of water delivery. Instead of the usual water that you pump out, filter and ensure its potable before delivery, with the premium package, not only will you get that, but you'll also get all of the required nutrients and vitamins the zazk body requires! And they feel you guys have the best expertise and understanding to pull it off! So, here's what we're offering as a good-faith bonus: A 25% increase to your annual salary as well as being given stock options." Ghen wasn't sure about the second part, but the salary definitely got his attention, as well as everyone else's. Although his job was considered to have a good pay, Ghen isn't going to say no to a higher salary. In fact, he's been focusing his work on getting a promotion so he can come home with even more credits in pocket. "What do you mean by stock options?" Ghen asked after some time. Ryan let out that smile again, the one that revealed his teeth. "If you choose to transfer over to the new group, you'll be provided 50,000 shares in Zilia itself. Why's that awesome? Let me walk you through it. Right now, our last closing price per share was 3.02 credits. And if you have 50,000 shares during that time, you're sitting on 151,000 credits, if you cash it out immediately." "And why shouldn't we?" One of the coordinators demanded in an ambiguous tone. "Because the price per share changes a lot." Ryan explained promptly. "When we got done with the IPO? It closed at 2.73 a share. Right now? My money's on the closing price being 2.99 a share. However, we are extremely confident in this premium package being successful. If it does? Well, my bet is that the share price will skyrocket to 3.12 a share. If you hold those shares and the price gets to what my bet was? You'll instead get 156,000 credits. Just by holding onto them, you just made an additional 5,000 credits!" "And what if we have more shares?" Ghen questioned, now getting excited at the prospect of free money. "Even more money!" Ryan laughed a bit. "And don't forget about dividends, but that's for another time. The premium group is gearing up right now, we just need the workforce. If any of you wants in, I'll be back tomorrow with all the forms needed to make it official. Take the day and tonight to think it over, yeah?" Everything else melted into a blur. Ghen was practically on autopilot that whole day. Was this the secret to the humans' incredibly massive economy? How so many of them have amassed so much money out of nowhere? All you had to do was just buy this share out of a company and you get more money without even working? As soon as he got home, Ghen knew what he was going to do during the night. After feverishly looking through the galnet, now having the human race connected to it, he looked and gathered up as many books that were translated into zazk as he could find, all talking about the human economic system. The last time he undertook such an intensive study was during his primary education phase. And during his search, he even found forums on the galnet that were completely dedicated to the human's economy. All of them talking about strategies on what company, or stock, to pick. How to analyze a company's performance to determine if it was worth the money, or it had potential to grow over time. And that was when he discovered the humans found another method to the extremely simple buying and selling process. There were humans and some other immigrated aliens who made five times what Ghen could receive over a simple month just by watching the share prices during trading hours, and then buying and selling them at the proper times. Ghen's mind was just absolutely flabbergasted. He thought it was just some strange concept only aliens could make, but no, not with the humans. They've practically made their economy into an art or a science. No, not even their economy. Everything. If humans can see a way to make money off of it, they'll do it. And if there isn't, they'll look for a way. Healthcare was monetized. Galnet services, transportation, shopping at the store, they even made all of their utilities into profit-oriented companies. And it was there that Ghen paused, the realization slamming into him. Everything was monetized. Which means, if you don't have the money for it, you're not getting it. Right? Are the humans truly that ruthless? So obsessed with making money? To the point that they're willing to deprive their own people of the absolute necessities if it's a source of credits? Ghen let out a scoff. There's no way. Nobody is that cruel and callous. He's never been to the United Nations. He can't rely on what a bunch of random people on the galnet says. He decided that from here on out, he'll only go as far as saying that humans are a little obsessed with credits, nothing more. ... There he was. Ryan, sitting in the office provided to him. And there was a rather large line leading to him. Looks like word got around. Although, the line wasn't as large as he expected it to be. Maybe the others thought it was just a ruse? That there's no such thing as making free money by spending it on such a made-up concept? Ghen only knows that, if it is a ruse, it's an extremely elaborate one, where all of the humans are in on it. And he believes that's just extremely ridiculous. At the end, if he's unsure, he'll just take the transfer for the very real increase in his very real salary. And although he spent a very good chunk of the night reading up on how humans do things, he's still going to play it smart. He'll leave his 50,000 shares alone and see where it goes from there. "Good morning sir." Ryan greeted warmly once Ghen took his seat. "Now, name please?" "Ghen." He answered, barely keeping his nerves down. "Alright...and what's your position at this location?" Ryan questioned after scribbling on his form. "I monitor the pumping stations near the extraction sites." Ghen explained, staying on point. "To be more specific, I check to see if they're in need of maintenance, as well as reading the flow rate that's determined by the calculators installed there. If there's too little for what's needed, I pump out more. And if there's too much, I pull it back a little." "Nice...and how long have you been doing it for?" Ryan complimented with a nod. "As of tomorrow, ten years." Ghen replied, voice quickly changing to minor awe once he realized that fact. "Excellent. Do you have anyone in mind you'd like to replace you here?" Ryan questioned after another scribble. "If you don't have anyone, you're free to say so." Ghen took a moment to think it over. A bunch of names went through his mind, but one stuck with him. "Tilik. He's just been accepted here, but he's learned quickly. Very attentive and he always catches something subtle. I think he'll do really well in my position, even better actually." "Tilik, really?" Ryan questioned with a little shock, going through his completed forms. Ghen felt a short sense of panic in him. Did something happen, or was Tilik actually transferring? His answer didn't take long to reveal itself. "Right, Tilik was actually one of the first people to want to transfer here. He's actually requested to be part of the testing teams specifically. Do you have a second choice?" "Um...no, actually." Ghen replied, feeling a little ashamed. "Tilik was my only choice, to be honest." "Hey, don't worry." Ryan said assuringly with his hands raised. "Nothing wrong with that. Sometimes, there's just nobody up to snuff, right? 'Kay, so, last question. Is there anything specific you'd like to do when given the transfer?" "If you need someone monitoring new pumps, I'd be happy to do that." Ghen stated. "So basically same job but with better payoff, am I right?" Ryan grinned. "I hear you. Sometimes, we're just not paid enough for what we're doing. I know I think that sometimes. Uh, our secret, yeah?" "Yeah, our secret." Ghen nodded, thinking it'd be better to have friendly relations with the human, just in case. "Awesome. Back on topic, that's it." Ryan announced, placing the form on his pile. "We'll give you a call when you're accepted." "Oh, uh, that's it?" Ghen questioned with a shrug in shocked surprise. "What, expecting a question like, why do you want to transfer?" Ryan chuckled a bit as he leaned in his seat. "You can bullshit all you want, but we both know the answer. Sweet money and stock options. Not saying that's a bad answer of course, just that it's pretty obvious." "I suppose it is." Ghen commented, realizing the point. "Also, you mentioned this...dividend? Is that for Zilia shares?" Ryan laughed a little bit before nodding. "Yep, announced before I came here. About 0.43 per share. Want to know why that's awesome? Instead of waiting for the proper price to cash out your shares, now? The company pays you for each share you hold." "A...Are you serious?" Ghen demanded, flabbergasted. Ryan nodded with his now-trademark grin. "Dead serious. If you get the transfer, and get those 50,000 shares? A little head math...right, if you hold onto those, in addition to your salary, you'll now annually be paid 21,500 credits, if you keep it at 50,000 shares. Only you can decide to sell or buy shares." Ghen just stood there silent and motionless, no idea of whether to believe it or not, to which Ryan just laughed. Once he walked out of the room, he managed to snap back to reality. Again, just focus on the very real pay-raise. He'll deal with the other parts later. After he returned to his spot, he spotted Tizx approaching by his desk. The coordinator seems to be as casual as always. "I saw you in that line a bit ago, Ghen." He said as he leaned on the desk. "Guess you're really taking that human's word?" "I mean, I don't know about all this share business or what not." Ghen began with a shrug, his tone sounding a little defensive. "But I mean, having a bigger salary? Course I'm going for it when I can. And if all this magic credits turn out to be real? You realize we can live like the royal servants, right? Get the best cars, the nicest food and all that?" "I'd be very careful, Ghen." Tizx warned in a sudden shift in tone. "Don't trust those humans. The way they just...obsess over money? Come up with more and more insane ways of getting credits? I don't know, it just makes my wings twitch." "You think this is a bad idea?" Ghen asked with a little surprise at the change-in-demeanor. "I think you should be careful, with the humans, and with what you're saying." Tizx replied, straightening his posture. "I wouldn't put it past those Earthmen to backstab you if it gets them a few more credits. And we all know how the royal servants get if any of us lowly commoners start thinking we can break into their circle." "I hear you, I'll be on my guard, promise." Ghen stated with a nod. With a confirming nod of his own, Tizx returned back to his duty, walking past Ghen's desk. Several weeks later. Everything became so much better. Ghen got the transfer. He didn't need to relocate to a new residence either. And after he was walked through into learning how to manage his stock account, and seeing that new form of payment in his hands, he already felt as though he made the best decision. But it was only when he decided to take those shares more seriously that he became privy to what he was given. After receiving the dividend payment, and actually seeing it was real, valid credits after transferring it to his main bank account, all he could describe was the most powerful high he ever felt. While his first thoughts were to buy himself a royalty-class car, some nicer furnishings for his home, or even a better home entirely, he ended up going the smarter route. After going back to his stock account, he discovered that Zilia's shares rose to about 3.22 credits in price. Knowing that this was the easiest money he could ever make, he took all of his dividend earnings and bought more shares in Zilia, bringing him to owning 56,891. And from his new regional coordinator, a human named Dylan, tomorrow is the grand release of the premium package. For just a monthly rate of 14.99 credits, the tap water will now include a sizeable portion of all nutrients and vitamins required in the zazk physiology. Still, Ghen has to admit. He's not entirely sure why anybody would want such a thing, if they'd even go for it. But, as long as he's practically swimming in easy credits, he won't pay much attention to it. And just like when he was intensively studying the basics of how the human economy worked, he barely got any sleep. His mind was constantly thinking about the things he would buy. Or rather, what other stocks to put his credits into. Even now he can still hardly believe it. Just spend your money on some, make-believe thing and, if you wait long enough and picked the right stock, you'll get more than you spent back? His mind even wandered onto what human colonies, or even their homeworld, Earth, was like. If everybody was making so much money, what kind of things would they offer? What kind of ridiculous service or product or item can you get? He's even debating on joining some forum and just asking around. Explain how he's new to how humans do things and was wondering what he should expect if he's successful. By the time he felt like he can go to sleep, the binary-stars of the system were rising from the horizon. After getting out of his bed and changing to clean clothes, his mind returned onto what-ifs. What if he bought better clothes? He's had his eye on that human brand of luxury clothes, Tessuti di Venezia, that's been all the rage amongst the royal servants. Or maybe he can go on vacation and just check out Earth for real? It was a short ride to his workplace from his home. After getting stuff his stuff and preparing to walk through the doors, he heard the roar of a car grow louder. When he looked, he saw the sleekest and quite possibly the coolest looking car he's ever seen. Each time the engine revved it would startle him, both from how harsh it sounded as well as just how intense it sounded. And after it parked, he saw the doors pop out and then slide along the body back. And there, he saw Tilik, the seat literally turning and extending out a bit before he got off. As soon as he saw Ghen staring, he struck a rather prideful pose after putting on his lab coat and then sauntered over to Ghen. "What do you think?" Tilik said, without any doubt inviting praise or compliments. "D...Did you actually buy that?" Ghen asked, unable to tear his eyes away from the car. "You're Queens-damn right I did!" Tilik laughed happily. "Thing takes off like a starship, has temperature-controlled seating, all-in-one center console, barely any bouncing on rough roads. Hoof, best decision I've ever made!" "How much did that thing cost?" Ghen asked after letting out an incredulous laugh. "Five million credits." Tilik replied, earning an absolutely shocked stare from Ghen. "And thanks to the incredible salary I have, in addition to all these shares and dividends, I'll pay back the credits I borrowed in no time!" Ghen needed a few moments before he could speak again. "All I've been doing is buying more shares." Tilik laughed and then patted the now-envious monitor's back. "Smart man. I got a little carried away, yeah, but not anymore. Any spending credits I got, going right back to investing. That's what it's called right, investing?" "Yeah, it is." Ghen nodded, feeling a fire light up in his thorax. "And also? Today's the day that the premium water thing is being released. Here's hoping it starts out well, right?" "Oh it will, trust me." Tilik chuckled as they both began making their way inside the workplace. "Lots of research, lots of study. By the Queen, so much of it...it'll make your head spin." And after hearing that, Ghen had a moment of realization. "Hey, Tilik? How did you get such a nice position anyways? Weren't you just studying under me before the humans came along?" Tilik let out a sigh after opening the door. "I'll be honest, I never wanted your job. Not because it's boring or terrible, just...I didn't suffer so many sleepless nights in the science academy just to be a glorified button pusher. This is what I've always wanted. Doing science, solving problems rather than just applying the solution, you know?" "Wait, you got an academic certificate?" Ghen questioned, completely floored. "How did you end up beneath me then? I should've been answering to you!" "Simple." Tilik gave a heavier sigh. "A royal servant was asking for the same job I was. Take a guess at who got it." "Ouch. Good thing the humans came along when they did, yeah?" Ghen was taken aback. He never heard anything about a servant taking a job at his place. "Looks like you're proving yourself to be well suited." "By the Queen, of course I am." Tilik nodded. "Like I said, I nearly broke my wings through so many nights, got certified top of my class, all just to get pushed to the dirt because someone who was born into a particular family wanted the same thing I did? I know I'm smarter than any of those empty-skull servants back in the Center. I know that, whatever, uh...corporate? Yeah, whatever corporate wants out of science, I will xeek give it to them." "Well, let me know how things go in the lab." Ghen said, admiring his drive as they neared the main office floor. "Because this is where the button pusher needs to go." Tilik let out a laugh as he nodded. "Hey, how about we meet up at Queen's Fine Eatery tonight. I'll pay, yeah?" Ghen, at first, wanted to admonish him for choosing such an outrageously expensive place to go. But he quickly realized that, he truly is good for it, thanks to the humans. "Well, hey, if you're paying for it." ... It was a fantastic opening. After being told what news sites to keep in mind for stocks, he first heard it from Dylan, and then got more detail on Business Today. There was such a massive demand right from the start that Zilia needs to increase extraction just to meet it. But what really got his attention was the effect it had. Zilia Water Delivery's share price just blasted off. After seemingly holding steady at about 3.15, by the time he got home and logged onto his account, it already reached 7.04 a share. The calculator on his account told him that he got a value-gain of 54.26%. Never in his entire life had he felt such...joy. With all of the shares he currently has? He's sitting at 400,512.64 credits. He knows that it is woefully pathetic compared to what the royal servants have just in their pockets, but the fact that he has such money, just by owning some intangible concept? Why even work at Zilia? Why doesn't he just sit at home, figure out what companies to invest in and make his money that way? What's even the point in working a real job, getting a pathetic pay when you can just take the money you have, determine where to spend it, and get triple back? All just sitting on your wings at home, researching? He was so wrapped up in his excited high that he completely forgot he was going to meet Tilik at Queen's. After quickly and haphazardly putting on his nicer clothes, he got to the place only a few minutes late. Tilik was there by the guide, no doubt having been waiting for him. As soon as he strode up, Tilik's wings stiffned out some. No doubt he must've seen the numbers as well. "I can see your wings, Ghen." Tilik began with an excited chuckle. "Made some serious credits?" Ghen let out an incredulous scoff, struggling to find the words for a moment. "Incredible. All I'm going to say." "Likewise." Tilik chortled some before nodding to the table guide. "All here. Table please?" "Right this way, sir." The guide said politely. It was a short walk, travelling between round tables. The vast majority were populated by zazk, but Ghen was surprised at seeing a few humans here as well. No doubt corporate workers checking out the local food. He did spot them having bowls filled with some kind of mass. Some were brown, others white with what looks to be black specks on them. They arrived at their table. A rather nice one, affording a view out the windows into the busy colony streets. Once Tilik and Ghen settled in, the guide handed out the menus. "May I suggest our rather popular option for tonight?" The guide began. "Human ice-cream. Ingredients sourced from Earth itself. Very cold, but incredibly sweet, and coming in many flavors. The most popular amongst us is called vanilla-bean. The vanilla itself soaks in the cream for much of the process, and then the innards sprinkled on top of it near the end. Rumor has it that the Queen herself has demanded personal shipments of such a treat straight from the home of vanilla, an island on Earth named Madagascar." Ghen didn't even spare a single thought. "Vanilla bean ice cream then, please." "Same." Tilik seconded when the guide glanced to him. With a slight bow, the guide proceeded to ferry their orders to the kitchen. Thankfully it was just a short wait before the guide returned, carrying a large plate containing bowls of ice cream. Ghen could feel the saliva on his mandibles as the bowl was placed before them. He could just feel the cold air around that glistening mass of sugary goodness. The white snow decorated with the black dots of vanilla bean. Once the guide left them, Tilik and Ghen both dived in at the same time. As soon as the ice cream entered his mouth, touched his tongue, he exploded in incomprehensible bliss. The sweetness, the smooth and creamy mass, even the taste of vanilla he wasn't sure about was just absolutely delightful. It was so overwhelming that his entire body limped, slumping in his seat as he was forced to ride on the surging tide of joy and happiness sweeping over him. Tilik was no different. He too was taken completely by the effects of the ice cream, his wings fluttering some against the seat. Ghen could hear some noise. It was the humans they passed by. They were chuckling, grinning, and glancing over at them discreetly. Unlike the two zazk, the humans seemingly just enjoyed the ice cream as if it was just another nice dessert to them. Or perhaps they couldn't allow themselves to succumb to the high? And as soon as the wave of indescribable bliss and happiness subsided, Ghen knew. He just knew. This was the life. He wanted this. The ice cream was just the beginning. So many things denied because he didn't have the credits, or worse, not the blood. Because he was just a drone in the great Collective, even if he had the credits, he wasn't allowed because of what caste he was born in. That fire that sparked in him when he saw Tilik's new car? It exploded into a raging firestorm. And when looking into Tilik's eyes, Ghen could see the same. He was on the same page as Ghen was. Both of them were sold. They have the credits. And the humans? If you can pay for it, they'll never discriminate. All they cared about is if you have the money. And by the Queen, Ghen and Tilik will endeavor to amass as much credits as physically possible. The rest of the night faded into a blur. A blur that evokes only one thing. Bliss. It was only when he walked through the door of his pathetic hut that Ghen's mind snapped back to focus. His mandibles felt sticky. And he felt a weight in his stomach. How much ice cream did he eat? Whatever it was, he ate such volume that the lower-section of his throax extended and rounded out, visible even under his shirt. He felt something odd in his pocket. It was a receipt. 43,000 credits for ten bowls of vanilla bean ice cream. Was that ten bowls for both of them? Or individually? Ghen didn't care. He's good for it. Returning back to his calculator, he acted upon the decision that he had made at that eatery. He's acquiring as many books about investing and stock trading as he could find, frequent and study all the discussions and arguments presented by other like-minded individuals such as he, all to ensure he can live the good life. And he had a very good feeling Tilik was doing the exact same thing. Well, first, the gurgling in his stomach, as well as the feeling of something rising demanded his attention. Looks like he'll need to take the night off to let his stomach get back to normal. Three Years Later. Ghen looked out beyond the horizon, seeing the colony that he grew up in. On the far side was where his old house was. With only a simple robe on, made from the finest silk from Earth's nation-state of China, he relaxed in his seat. It was a long road. Stockpiling credits from pre-existing investments and from subsequent pays, he and Tilik made it. From having only half a million in assets and cash, now transformed to over eight-hundred million. And now, his call contracts on American Interstellar? They've just announced a breakthrough in their next generation of warp drives, reducing the speed coefficient even further, resulting in far faster travel. And with that, their stock price climbed sharply. Another hundred million credits in the bank. Soon, very soon, he and Tilik are about to become the galaxy's first zazk billionares. But that's not enough. There are many humans who are billionares. Only those he can count on one hand are considered trillionares. He's going to break into that circle. He and Tilik. Looking beyond the colony, he saw the abandoned building of the workplace he transferred to when the humans arrived. Turns out, the reason for such a high demand was that the humans also slipped in sugar to the tap water. As soon as that broke, many influential royal servants demanded investigations and outright banning of Terran Galactic Company's influence over the former government division. Zilia's stock price plummeted. But thanks to an advance tip from his human coordinator, Dylan, he and Tilik made a put contract. And that's where they struck gold, as the human saying goes. Dylan warned that if they were citizens of the United Nations, they'd be investigated and convicted for insider trading. But, since they weren't, and the Collective were only just introduced to capitalism, there's no risk at all. Now the colony is going through a withdrawal phase, Zilia has been dissolved and reformed back as a government division and are currently at work re-establishing the standard, plain water delivery. "Well, shit." Tilik muttered as he walked up to Ghen's side, taking well to human speech. "Looks like you win. American Interstellar's announcement really was a good thing. There goes a million credits. Ah well, the Royal Shipyards will make it back for me soon." "Oh? Did they just go corporate?" Ghen asked curiously, glancing to Tilik. "Hell yeah they did." Tilik chuckled, sitting down. "Queen and her retard servants fought it hard, but Royal Shipyards is now officially a human-style corporation. And, to a surprise to all the xenophobes in the galaxy, they're already being offered contracts for ship production. That'll raise the stock price pretty good." "What's that human word...?" Ghen muttered, already having a reply in mind. "Dick? Yeah, calls or suck my dick, Tilik." Tilik roared in laughter. "Already made them. Forty credits a share by this day next month." "I have half a mind to go thirty." Ghen chuckled. "Either way, until then, I heard from Dylan that he knows a guy who knows several prime human women who happen to be into zazk." "You're interested in women?" Tilik said as his wings fluttered. "With how often you tell me to suck you off, I'd have thought differently." "Oh, I always thought it was you who was into men." Ghen responded dryly. "Just wanted to be a good friend, you know? Considering how you never seem to make it past, Hey sweet thing, I'm rich you know." "Oh, go fuck yourself." Tilik countered with a little laugh. After he stopped, wings stiffened, he looked to Ghen. "So, know any royal servants we can put the squeeze on for more revenue streams?" "I got just the one." Ghen nodded, sitting up. "Fzik. He's been fighting to control the ice cream trade. Worried it's a corrupting influence. Got done talking with the human CEO of Nestle earlier. If we clear the way, he'll know how to squeeze a little more gains in stock price when he makes the announcement." Tilik's wings stiffened even more, signaling his approval. "Alright, time to throw some credits around, yeah?" AN: Sorry for the period of no updates. College is starting up, lots of stuff to clear and work out. Not sure why but I just got a bug up my butt about incorporating money and the stock market into a short. Here it is. Sorry if it seems abrupt, character limit fast approaching. Let me know how you guys think about it!
No gods, no kings, only NOPE - or divining the future with options flows. [Part 2: A Random Walk and Price Decoherence]
tl;dr - 1) Stock prices move continuously because different market participants end up having different ideas of the future value of a stock. 2) This difference in valuations is part of the reason we have volatility. 3) IV crush happens as a consequence of future possibilities being extinguished at a binary catalyst like earnings very rapidly, as opposed to the normal slow way. I promise I'm getting to the good parts, but I'm also writing these as a guidebook which I can use later so people never have to talk to me again. In this part I'm going to start veering a bit into the speculation territory (e.g. ideas I believe or have investigated, but aren't necessary well known) but I'm going to make sure those sections are properly marked as speculative (and you can feel free to ignore/dismiss them). Marked as [Lily's Speculation]. As some commenters have pointed out in prior posts, I do not have formal training in mathematical finance/finance (my background is computer science, discrete math, and biology), so often times I may use terms that I've invented which have analogous/existing terms (e.g. the law of surprise is actually the first law of asset pricing applied to derivatives under risk neutral measure, but I didn't know that until I read the papers later). If I mention something wrong, please do feel free to either PM me (not chat) or post a comment, and we can discuss/I can correct it! As always, buyer beware. This is the first section also where you do need to be familiar with the topics I've previously discussed, which I'll add links to shortly (my previous posts: 1) https://www.reddit.com/thecorporation/comments/jck2q6/no_gods_no_kings_only_nope_or_divining_the_future/ 2) https://www.reddit.com/thecorporation/comments/jbzzq4/why_options_trading_sucks_or_the_law_of_surprise/ --- A Random Walk Down Bankruptcy A lot of us have probably seen the term random walk, maybe in the context of A Random Walk Down Wall Street, which seems like a great book I'll add to my list of things to read once I figure out how to control my ADD. It seems obvious, then, what a random walk means - when something is moving, it basically means that the next move is random. So if my stock price is $1 and I can move in $0.01 increments, if the stock price is truly randomly walking, there should be roughly a 50% chance it moves up in the next second (to $1.01) or down (to $0.99). If you've traded for more than a hot minute, this concept should seem obvious, because especially on the intraday, it usually isn't clear why price moves the way it does (despite what chartists want to believe, and I'm sure a ton of people in the comments will tell me why fettucini lines and Batman doji tell them things). For a simple example, we can look at SPY's chart from Friday, Oct 16, 2020: https://preview.redd.it/jgg3kup9dpt51.png?width=1368&format=png&auto=webp&s=bf8e08402ccef20832c96203126b60c23277ccc2 I'm sure again 7 different people can tell me 7 different things about why the chart shape looks the way it does, or how if I delve deeply enough into it I can find out which man I'm going to marry in 2024, but to a rationalist it isn't exactly apparent at why SPY's price declined from 349 to ~348.5 at around 12:30 PM, or why it picked up until about 3 PM and then went into precipitous decline (although I do have theories why it declined EOD, but that's for another post). An extremely clever or bored reader from my previous posts could say, "Is this the price formation you mentioned in the law of surprise post?" and the answer is yes. If we relate it back to the individual buyer or seller, we can explain the concept of a stock price's random walk as such:
Most market participants have an idea of an asset's truevalue (an idealized concept of what an asset is actually worth), which they can derive using models or possibly enough brain damage. However, an asset's value at any given time is not worth one value (usually*), but a spectrum of possible values, usually representing what the asset should be worth in the future. A naive way we can represent this without delving into to much math (because let's face it, most of us fucking hate math) is: Current value of an asset = sum over all (future possible value multiplied by the likelihood of that value)
In actuality, most models aren't that simple, but it does generalize to a ton of more complicated models which you need more than 7th grade math to understand (Black-Scholes, DCF, blah blah blah). While in many cases the first term - future possible value - is well defined (Tesla is worth exactly $420.69 billion in 2021, and maybe we all can agree on that by looking at car sales and Musk tweets), where it gets more interesting is the second term - the likelihood of that value occurring. [In actuality, the price of a stock for instance is way more complicated, because a stock can be sold at any point in the future (versus in my example, just the value in 2021), and needs to account for all values of Tesla at any given point in the future.] How do we estimate the second term - the likelihood of that value occurring? For this class, it actually doesn't matter, because the key concept is this idea: even with all market participants having the same information, we do anticipate that every participant will have a slightly different view of future likelihoods. Why is that? There's many reasons. Some participants may undervalue risk (aka WSB FD/yolos) and therefore weight probabilities of gaining lots of money much more heavily than going bankrupt. Some participants may have alternative data which improves their understanding of what the future values should be, therefore letting them see opportunity. Some participants might overvalue liquidity, and just want to GTFO and thereby accept a haircut on their asset's value to quickly unload it (especially in markets with low liquidity). Some participants may just be yoloing and not even know what Fastly does before putting their account all in weekly puts (god bless you). In the end, it doesn't matter either the why, but the what: because of these diverging interpretations, over time, we can expect the price of an asset to drift from the current value even with no new information added. In most cases, the calculations that market participants use (which I will, as a Lily-ism, call the future expected payoff function, or FEPF) ends up being quite similar in aggregate, and this is why asset prices likely tend to move slightly up and down for no reason (or rather, this is one interpretation of why). At this point, I expect the 20% of you who know what I'm talking about or have a finance background to say, "Oh but blah blah efficient market hypothesis contradicts random walk blah blah blah" and you're correct, but it also legitimately doesn't matter here. In the long run, stock prices are clearly not a random walk, because a stock's value is obviously tied to the company's fundamentals (knock on wood I don't regret saying this in the 2020s). However, intraday, in the absence of new, public information, it becomes a close enough approximation. Also, some of you might wonder what happens when the future expected payoff function (FEPF) I mentioned before ends up wildly diverging for a stock between participants. This could happen because all of us try to short Nikola because it's quite obviously a joke (so our FEPF for Nikola could, let's say, be 0), while the 20 or so remaining bagholders at NikolaCorporation decide that their FEPF of Nikola is $10,000,000 a share). One of the interesting things which intuitively makes sense, is for nearly all stocks, the amount of divergence among market participants in their FEPF increases substantially as you get farther into the future. This intuitively makes sense, even if you've already quit trying to understand what I'm saying. It's quite easy to say, if at 12:51 PM SPY is worth 350.21 that likely at 12:52 PM SPY will be worth 350.10 or 350.30 in all likelihood. Obviously there are cases this doesn't hold, but more likely than not, prices tend to follow each other, and don't gap up/down hard intraday. However, what if I asked you - given SPY is worth 350.21 at 12:51 PM today, what will it be worth in 2022? Many people will then try to half ass some DD about interest rates and Trump fleeing to Ecuador to value SPY at 150, while others will assume bull markets will continue indefinitely and SPY will obviously be 7000 by then. The truth is -- no one actually knows, because if you did, you wouldn't be reading a reddit post on this at 2 AM in your jammies. In fact, if you could somehow figure out the FEPF of all market participants at any given time, assuming no new information occurs, you should be able to roughly predict the true value of an asset infinitely far into the future (hint: this doesn't exactly hold, but again don't @ me). Now if you do have a finance background, I expect gears will have clicked for some of you, and you may see strong analogies between the FEPF divergence I mentioned, and a concept we're all at least partially familiar with - volatility. Volatility and Price Decoherence ("IV Crush") Volatility, just like the Greeks, isn't exactly a real thing. Most of us have some familiarity with implied volatility on options, mostly when we get IV crushed the first time and realize we just lost $3000 on Tesla calls. If we assume that the current price should represent the weighted likelihoods of all future prices (the random walk), volatility implies the following two things:
Volatility reflects the uncertainty of the current price
Volatility reflects the uncertainty of the future price for every point in the future where the asset has value (up to expiry for options)
[Ignore this section if you aren't pedantic] There's obviously more complex mathematics, because I'm sure some of you will argue in the comments that IV doesn't go up monotonically as option expiry date goes longer and longer into the future, and you're correct (this is because asset pricing reflects drift rate and other factors, as well as certain assets like the VIX end up having cost of carry). Volatility in options is interesting as well, because in actuality, it isn't something that can be exactly computed -- it arises as a plug between the idealized value of an option (the modeled price) and the real, market value of an option (the spot price). Additionally, because the makeup of market participants in an asset's market changes over time, and new information also comes in (thereby increasing likelihood of some possibilities and reducing it for others), volatility does not remain constant over time, either. Conceptually, volatility also is pretty easy to understand. But what about our friend, IV crush? I'm sure some of you have bought options to play events, the most common one being earnings reports, which happen quarterly for every company due to regulations. For the more savvy, you might know of expected move, which is a calculation that uses the volatility (and therefore price) increase of at-the-money options about a month out to calculate how much the options market forecasts the underlying stock price to move as a response to ER. Binary Catalyst Events and Price Decoherence Remember what I said about price formation being a gradual, continuous process? In the face of special circumstances, in particularly binary catalyst events - events where the outcome is one of two choices, good (1) or bad (0) - the gradual part gets thrown out the window. Earnings in particular is a common and notable case of a binary event, because the price will go down (assuming the company did not meet the market's expectations) or up (assuming the company exceeded the market's expectations) (it will rarely stay flat, so I'm not going to address that case). Earnings especially is interesting, because unlike other catalytic events, they're pre-scheduled (so the whole market expects them at a certain date/time) and usually have publicly released pre-estimations (guidance, analyst predictions). This separates them from other binary catalysts (e.g. FSLY dipping 30% on guidance update) because the market has ample time to anticipate the event, and participants therefore have time to speculate and hedge on the event. In most binary catalyst events, we see rapid fluctuations in price, usually called a gap up or gap down, which is caused by participants rapidly intaking new information and changing their FEPF accordingly. This is for the most part an anticipated adjustment to the FEPF based on the expectation that earnings is a Very Big Deal (TM), and is the reason why volatility and therefore option premiums increase so dramatically before earnings. What makes earnings so interesting in particular is the dramatic effect it can have on all market participants FEPF, as opposed to let's say a Trump tweet, or more people dying of coronavirus. In lots of cases, especially the FEPF of the short term (3-6 months) rapidly changes in response to updated guidance about a company, causing large portions of the future possibility spectrum to rapidly and spectacularly go to zero. In an instant, your Tesla 10/30 800Cs go from "some value" to "not worth the electrons they're printed on". [Lily's Speculation] This phenomena, I like to call price decoherence, mostly as an analogy to quantum mechanical processes which produce similar results (the collapse of a wavefunction on observation). Price decoherence occurs at a widespread but minor scale continuously, which we normally call price formation (and explains portions of the random walk derivation explained above), but hits a special limit in the face of binary catalyst events, as in an instant rapid portions of the future expected payoff function are extinguished, versus a more gradual process which occurs over time (as an option nears expiration). Price decoherence, mathematically, ends up being a more generalizable case of the phenomenon we all love to hate - IV crush. Price decoherence during earnings collapses the future expected payoff function of a ticker, leading large portions of the option chain to be effectively worthless (IV crush). It has interesting implications, especially in the case of hedged option sellers, our dear Market Makers. This is because given the expectation that they maintain delta-gamma neutral, and now many of the options they have written are now worthless and have 0 delta, what do they now have to do? They have to unwind. [/Lily's Speculation] - Lily
No gods, no kings, only NOPE - or divining the future with options flows. [Part 3: Hedge Winding, Unwinding, and the NOPE]
Hello friends! We're on the last post of this series ("A Gentle Introduction to NOPE"), where we get to use all the Big Boy Concepts (TM) we've discussed in the prior posts and put them all together. Some words before we begin:
This post will be massively theoretical, in the sense that my own speculation and inferences will be largely peppered throughout the post. Are those speculations right? I think so, or I wouldn't be posting it, but they could also be incorrect.
I will briefly touch on using the NOPE this slide, but I will make a secondary post with much more interesting data and trends I've observed. This is primarily for explaining what NOPE is and why it potentially works, and what it potentially measures.
My advice before reading this is to glance at my prior posts, and either read those fully or at least make sure you understand the tl;drs: https://www.reddit.com/thecorporation/collection/27dc72ad-4e78-44cd-a788-811cd666e32a Depending on popular demand, I will also make a last-last post called FAQ, where I'll tabulate interesting questions you guys ask me in the comments! --- So a brief recap before we begin. Market Maker ("Mr. MM"): An individual or firm who makes money off the exchange fees and bid-ask spread for an asset, while usually trying to stay neutral about the direction the asset moves. Delta-gamma hedging: The process Mr. MM uses to stay neutral when selling you shitty OTM options, by buying/selling shares (usually) of the underlying as the price moves. Law of Surprise [Lily-ism]: Effectively, the expected profit of an options trade is zero for both the seller and the buyer. Random Walk: A special case of a deeper probability probability called a martingale, which basically models stocks or similar phenomena randomly moving every step they take (for stocks, roughly every millisecond). This is one of the most popular views of how stock prices move, especially on short timescales. Future Expected Payoff Function [Lily-ism]: This is some hidden function that every market participant has about an asset, which more or less models all the possible future probabilities/values of the assets to arrive at a "fair market price". This is a more generalized case of a pricing model like Black-Scholes, or DCF. Counter-party: The opposite side of your trade (if you sell an option, they buy it; if you buy an option, they sell it). Price decoherence ]Lily-ism]: A more generalized notion of IV Crush, price decoherence happens when instead of the FEPF changing gradually over time (price formation), the FEPF rapidly changes, due usually to new information being added to the system (e.g. Vermin Supreme winning the 2020 election). --- One of the most popular gambling events for option traders to play is earnings announcements, and I do owe the concept of NOPE to hypothesizing specifically about the behavior of stock prices at earnings. Much like a black hole in quantum mechanics, most conventional theories about how price should work rapidly break down briefly before, during, and after ER, and generally experienced traders tend to shy away from playing earnings, given their similar unpredictability. Before we start: what is NOPE? NOPE is a funny backronym from Net Options Pricing Effect, which in its most basic sense, measures the impact option delta has on the underlying price, as compared to share price. When I first started investigating NOPE, I called it OPE (options pricing effect), but NOPE sounds funnier. The formula for it is dead simple, but I also have no idea how to do LaTeX on reddit, so this is the best I have: https://preview.redd.it/ais37icfkwt51.png?width=826&format=png&auto=webp&s=3feb6960f15a336fa678e945d93b399a8e59bb49 Since I've already encountered this, put delta in this case is the absolute value (50 delta) to represent a put. If you represent put delta as a negative (the conventional way), do not subtract it; add it. To keep this simple for the non-mathematically minded: the NOPE today is equal to the weighted sum (weighted by volume) of the delta of every call minus the delta of every put for all options chains extending from today to infinity. Finally, we then divide that number by the # of shares traded today in the market session (ignoring pre-market and post-market, since options cannot trade during those times). Effectively, NOPE is a rough and dirty way to approximate the impact of delta-gamma hedging as a function of share volume, with us hand-waving the following factors:
To keep calculations simple, we assume that all counter-parties are hedged. This is obviously not true, especially for idiots who believe theta ganging is safe, but holds largely true especially for highly liquid tickers, or tickers will designated market makers (e.g. any ticker in the NASDAQ, for instance).
We assume that all hedging takes place via shares. For SPY and other products tracking the S&P, for instance, market makers can actually hedge via futures or other options. This has the benefit for large positions of not moving the underlying price, but still makes up a fairly small amount of hedges compared to shares.
Winding and Unwinding
I briefly touched on this in a past post, but two properties of NOPE seem to apply well to EER-like behavior (aka any binary catalyst event):
NOPE measures sentiment - In general, the options market is seen as better informed than share traders (e.g. insiders trade via options, because of leverage + easier to mask positions). Therefore, a heavy call/put skew is usually seen as a bullish sign, while the reverse is also true.
NOPE measures system stability
I'm not going to one-sentence explain #2, because why say in one sentence what I can write 1000 words on. In short, NOPE intends to measure sensitivity of the system (the ticker) to disruption. This makes sense, when you view it in the context of delta-gamma hedging. When we assume all counter-parties are hedged, this means an absolutely massive amount of shares get sold/purchased when the underlying price moves. This is because of the following: a) Assume I, Mr. MM sell 1000 call options for NKLA 25C 10/23 and 300 put options for NKLA 15p 10/23. I'm just going to make up deltas because it's too much effort to calculate them - 30 delta call, 20 delta put. This implies Mr. MM needs the following to delta hedge: (1000 call options * 30 shares to buy for each) [to balance out writing calls) - (300 put options * 20 shares to sell for each) = 24,000net shares Mr. MM needs to acquire to balance out his deltas/be fully neutral. b) This works well when NKLA is at $20. But what about when it hits $19 (because it only can go down, just like their trucks). Thanks to gamma, now we have to recompute the deltas, because they've changed for both the calls (they went down) and for the puts (they went up). Let's say to keep it simple that now my calls are 20 delta, and my puts are 30 delta. From the 24,000 net shares, Mr. MM has to now have: (1000 call options * 20 shares to have for each) - (300 put options * 30 shares to sell for each) = 11,000 shares. Therefore, with a $1 shift in price, now to hedge and be indifferent to direction, Mr. MM has to go from 24,000 shares to 11,000 shares, meaning he has to sell 13,000 shares ASAP, or take on increased risk. Now, you might be saying, "13,000 shares seems small. How would this disrupt the system?" (This process, by the way, is called hedge unwinding) It won't, in this example. But across thousands of MMs and millions of contracts, this can - especially in highly optioned tickers - make up a substantial fraction of the net flow of shares per day. And as we know from our desk example, the buying or selling of shares directly changes the price of the stock itself. This, by the way, is why the NOPE formula takes the shape it does. Some astute readers might notice it looks similar to GEX, which is not a coincidence. GEX however replaces daily volume with open interest, and measures gamma over delta, which I did not find good statistical evidence to support, especially for earnings. So, with our example above, why does NOPE measure system stability? We can assume for argument's sake that if someone buys a share of NKLA, they're fine with moderate price swings (+- $20 since it's NKLA, obviously), and in it for the long/medium haul. And in most cases this is fine - we can own stock and not worry about minor swings in price. But market makers can't* (they can, but it exposes them to risk), because of how delta works. In fact, for most institutional market makers, they have clearly defined delta limits by end of day, and even small price changes require them to rebalance their hedges. This over the whole market adds up to a lot shares moving, just to balance out your stupid Robinhood YOLOs. While there are some tricks (dark pools, block trades) to not impact the price of the underlying, the reality is that the more options contracts there are on a ticker, the more outsized influence it will have on the ticker's price. This can technically be exactly balanced, if option put delta is equal to option call delta, but never actually ends up being the case. And unlike shares traded, the shares representing the options are more unstable, meaning they will be sold/bought in response to small price shifts. And will end up magnifying those price shifts, accordingly.
NOPE and Earnings
So we have a new shiny indicator, NOPE. What does it actually mean and do? There's much literature going back to the 1980s that options markets do have some level of predictiveness towards earnings, which makes sense intuitively. Unlike shares markets, where you can continue to hold your share even if it dips 5%, in options you get access to expanded opportunity to make riches... and losses. An options trader betting on earnings is making a risky and therefore informed bet that he or she knows the outcome, versus a share trader who might be comfortable bagholding in the worst case scenario. As I've mentioned largely in comments on my prior posts, earnings is a special case because, unlike popular misconceptions, stocks do not go up and down solely due to analyst expectations being meet, beat, or missed. In fact, stock prices move according to the consensus market expectation, which is a function of all the participants' FEPF on that ticker. This is why the price moves so dramatically - even if a stock beats, it might not beat enough to justify the high price tag (FSLY); even if a stock misses, it might have spectacular guidance or maybe the market just was assuming it would go bankrupt instead. To look at the impact of NOPE and why it may play a role in post-earnings-announcement immediate price moves, let's review the following cases:
Stock Meets/Exceeds Market Expectations (aka price goes up) - In the general case, we would anticipate post-ER market participants value the stock at a higher price, pushing it up rapidly. If there's a high absolute value of NOPE on said ticker, this should end up magnifying the positive move since:
a) If NOPE is high negative - This means a ton of put buying, which means a lot of those puts are now worthless (due to price decoherence). This means that to stay delta neutral, market makers need to close out their sold/shorted shares, buying them, and pushing the stock price up. b) If NOPE is high positive - This means a ton of call buying, which means a lot of puts are now worthless (see a) but also a lot of calls are now worth more. This means that to stay delta neutral, market makers need to close out their sold/shorted shares AND also buy more shares to cover their calls, pushing the stock price up. 2) Stock Meets/Misses Market Expectations (aka price goes down)- Inversely to what I mentioned above, this should push to the stock price down, fairly immediately. If there's a high absolute value of NOPE on said ticker, this should end up magnifying the negative move since: a) If NOPE is high negative - This means a ton of put buying, which means a lot of those puts are now worth more, and a lot of calls are now worth less/worth less (due to price decoherence). This means that to stay delta neutral, market makers need to sell/short more shares, pushing the stock price down. b) If NOPE is high positive - This means a ton of call buying, which means a lot of calls are now worthless (see a) but also a lot of puts are now worth more. This means that to stay delta neutral, market makers need to sell even more shares to keep their calls and puts neutral, pushing the stock price down. --- Based on the above two cases, it should be a bit more clear why NOPE is a measure of sensitivity to system perturbation. While we previously discussed it in the context of magnifying directional move, the truth is it also provides a directional bias to our "random" walk. This is because given a price move in the direction predicted by NOPE, we expect it to be magnified, especially in situations of price decoherence. If a stock price goes up right after an ER report drops, even based on one participant deciding to value the stock higher, this provides a runaway reaction which boosts the stock price (due to hedging factors as well as other participants' behavior) and inures it to drops.
NOPE and NOPE_MAD
I'm going to gloss over this section because this is more statistical methods than anything interesting. In general, if you have enough data, I recommend using NOPE_MAD over NOPE. While NOPE in theory represents a "real" quantity (net option delta over net share delta), NOPE_MAD (the median absolute deviation of NOPE) does not. NOPE_MAD simply answecompare the following:
How exceptional is today's NOPE versus historic baseline (30 days prior)?
How do I compare two tickers' NOPEs effectively (since some tickers, like TSLA, have a baseline positive NOPE, because Elon memes)? In the initial stages, we used just a straight numerical threshold (let's say NOPE >= 20), but that quickly broke down. NOPE_MAD aims to detect anomalies, because anomalies in general give you tendies.
I might add the formula later in Mathenese, but simply put, to find NOPE_MAD you do the following:
Calculate today's NOPE score (this can be done end of day or intraday, with the true value being EOD of course)
Calculate the end of day NOPE scores on the ticker for the previous 30 trading days
Compute the median of the previous 30 trading days' NOPEs
Find today's deviation as compared to the MAD calculated by: [(today's NOPE) - (median NOPE of last 30 days)] / (median absolute deviation of last 30 days)
This is usually reported as sigma (σ), and has a few interesting properties:
The mean of NOPE_MAD for any ticker is almost exactly 0.
[Lily's Speculation's Speculation] NOPE_MAD acts like a spring, and has a tendency to reverse direction as a function of its magnitude. No proof on this yet, but exploring it!
Using the NOPE to predict ER
So the last section was a lot of words and theory, and a lot of what I'm mentioning here is empirically derived (aka I've tested it out, versus just blabbered). In general, the following holds true:
3 sigma NOPE_MAD tends to be "the threshold": For very low NOPE_MAD magnitudes (+- 1 sigma), it's effectively just noise, and directionality prediction is low, if not non-existent. It's not exactly like 3 sigma is a play and 2.9 sigma is not a play; NOPE_MAD accuracy increases as NOPE_MAD magnitude (either positive or negative) increases.
NOPE_MAD is only useful on highly optioned tickers: In general, I introduce another parameter for sifting through "candidate" ERs to play: option volume * 100/share volume. When this ends up over let's say 0.4, NOPE_MAD provides a fairly good window into predicting earnings behavior.
NOPE_MAD only predicts during the after-market/pre-market session: I also have no idea if this is true, but my hunch is that next day behavior is mostly random and driven by market movement versus earnings behavior. NOPE_MAD for now only predicts direction of price movements right between the release of the ER report (AH or PM) and the ending of that market session. This is why in general I recommend playing shares, not options for ER (since you can sell during the AH/PM).
NOPE_MAD only predicts direction of price movement: This isn't exactly true, but it's all I feel comfortable stating given the data I have. On observation of ~2700 data points of ER-ticker events since Mar 2019 (SPY 500), I only so far feel comfortable predicting whether stock price goes up (>0 percent difference) or down (<0 price difference). This is +1 for why I usually play with shares.
Some statistics: #0) As a baseline/null hypothesis, after ER on the SPY500 since Mar 2019, 50-51% price movements in the AH/PM are positive (>0) and ~46-47% are negative (<0). #1) For NOPE_MAD >= +3 sigma, roughly 68% of price movements are positive after earnings. #2) For NOPE_MAD <= -3 sigma, roughly 29% of price movements are positive after earnings. #3) When using a logistic model of only data including NOPE_MAD >= +3 sigma or NOPE_MAD <= -3 sigma, and option/share vol >= 0.4 (around 25% of all ERs observed), I was able to achieve 78% predictive accuracy on direction.
Caveats/Read This
Like all models, NOPE is wrong, but perhaps useful. It's also fairly new (I started working on it around early August 2020), and in fact, my initial hypothesis was exactly incorrect (I thought the opposite would happen, actually). Similarly, as commenters have pointed out, the timeline of data I'm using is fairly compressed (since Mar 2019), and trends and models do change. In fact, I've noticed significantly lower accuracy since the coronavirus recession (when I measured it in early September), but I attribute this mostly to a smaller date range, more market volatility, and honestly, dumber option traders (~65% accuracy versus nearly 80%). My advice so far if you do play ER with the NOPE method is to use it as following:
Buy/short shares approximately right when the market closes before ER. Ideally even buying it right before the earnings report drops in the AH session is not a bad idea if you can.
Sell/buy to close said shares at the first sign of major weakness (e.g. if the NOPE predicted outcome is incorrect).
Sell/buy to close shares even if it is correct ideally before conference call, or by the end of the after-market/pre-market session.
Only play tickers with high NOPE as well as high option/share vol.
--- In my next post, which may be in a few days, I'll talk about potential use cases for SPY and intraday trends, but I wanted to make sure this wasn't like 7000 words by itself. Cheers. - Lily
Hi everyone, I've been passionate about sandbox games and how they are designed into a functioning coherent environment. I developed most of this passion in Eve and served as a CSM last year. I'm hopeful that DU will be the future of sandbox sci-fi games. I wanted to note down how I think NQ can better some of the game's most important aspects. Some of their staff probably read here too. The forums have this "one idea per thread" rule, so I decided to put them here. Here are some problems, and how I would solve them. PvP 1) Cube Meta: Need viability for non-cubes.
By small changes in the math, it should be possible to make drag matter more in atmo, not for small cross sectioned ships, but for the ones with bigger CS.
A developmentally costlier option would be letting players edit the "area" that a core unit provides. PvP rewards smaller core units so it becomes important to cram all the elements into small areas. That promotes the cubes. If we could edit the area into a 3d rectangle (total area remains the same, just changes shape), that'd let us to make ships that aren't cubes and cram the same amount of stuff.
The best option would be making cross section matter in PvP. Ideally (not sure if servers can handle this), weapons should miss more if target ships have a narrow cross section from the attacker's POV. If servers can't calculate relative POV's, then an easier way to implement cross section into PvP is using the smallest CS of a ship as a coefficient in the miss chance.
2) Small vs Big Ships: Need drastic balance.
The lock range differentiation wrt target core unit size needs to go. It's keeping everyone from even thinking about M or L core PvP ships. Eve has this mechanic entirely right. Larger ships should be able to lock and fire at longer ranges. They should just miss more.
Small ships should have tracking and lock time advantages. Tracking should matter to the extent that if I am going 90 degrees wrt a big ship in a smaller core, even at ranges like 100km, that should make me easier to miss. After all those are the ranges most of the combat happens.
Some sort of limitation to cramming L guns to small constructs is needed. If "power" isn't going toward that direction, NQ should just make M/L gun models way larger (and make them slower-turning too that'd align with the above recommendation).
More tanking advantage to larger ships is needed. Perhaps weapons tear through too many voxels at the same time. Or voxels should be overall less heavy so we can use more of them.
Instead, the larger cores actually have speed advantage where they shouldn't. This is because you can cram way more Delta V in an M/L core compared to how much you can cram in an S/XS core. Sure the reactivation time is a good balancing factor but it's not enough if the large ships can accelerate and decelerate at way higher Gs. Again, one easy option would be drastically increasing the size of L/XL engine models to match the proportions of area differences among cores.
3) Non-Consensual PvP: The current non-consensual PvP is very binary and unsustainable. If you can find some people careless enough to go in a direct path between two planets with no radars, you kill them. People will wake up (or they already did) to this very fast, plus warp drives will become abundant, and pretty soon no such PvP will be possible. Meanwhile, if you are a new player with no knowledge and you get caught to pirates like this, you basically have zero options to protect yourself.
For Offense: Steal warp bubbles (disrupts your warp path), webs (slows down your target ship), combat probes (detects position of a target ship) from Eve. They'll be great additions.
Create rewards in space for which people will be willing to take risks. Asteroids/asteroid mining is supposed to function like this. But depending on implementation they can either become monopolized or just too abundant/wide to go and find any targets in.
Hope eventually stealth gets added. It's easy to imagine it as radar immunity (until close proximity). But it should have drastic downsides.
For Defense: Combat probes can actually be used defensively too.
Some sort of "evasive maneuver". Perhaps a module that provides a quick random change in the ship's direction but not the speed that the offender needs to adapt.
Some sort of temporary damage mitigation solution.
Economy 1) There is no need to trade.
People don't use the markets too much. Every org has a mining/industry wing and everything is made in-house. I think this problem arises from the fact that the only scalable and reliable way to make money is mining/industry (maybe add logistics but that's dependent on the first two). Sure you got some people with eccentric ventures and ship developers but you can't scale that across hundreds of people. Since you have to have a factory to earn money, why wouldn't you scale it so you make everything and are self-sufficient? Now, if there was a plethora of other moneymaking activities in the game, then we'd see a way more an Eve-like market and specialization of activities. Imho this is hard to achieve without NPCs. It's really hard to imagine a functioning sandbox without the bottom layer of the ecosystem. NPCs to a sandbox MMO are what grass/vegetation is to an ecosystem. Without them there are no missions, nothing to kill and earn money from in a multitude of ways. No reward that people in adequate ships can go and chase, and become prey to other people like pirates. I kinda just wish NQ had 3 more years/funding to develop the game. The Minecraft/Factoria will be attractive for only so long if there is no meaningful economy, trade, differentiation, and things to do with things you make. Talents seem to be made in a way to foster differentiation, so maybe that's where we'll see some improvement. But game design needs to change.
2) Resource Hexes are too disposable.
The game has a great digging system. We create these elaborate mines. We could voxelize them and make wonders with them. Instead, we abandon them in 2 hours. With the territory warfare, under current ore system, the only place that'll be worth attacking is the HQ of a corp with the stashes and factories. And I'm pretty sure most people will move those to the Sanctuary once the territory warfare hits. Resource hexes would have been great places to fight over. But even meganodes last just a day as of this point.
In an ideal design, ore should have been way less scattered across different hexes. And once it's found in a hex, it should have lasted a long time, so there are these valuable resource mines to fight over. The pace of mining is actually perhaps fine. But there are lots of other ways to achieve "long lasting resource mines". Like going deeper could "destabilize" a hex so people would have to put down units that take a week to anchor. And bettemore abundant ore could have been found in deeper attitudes. This is just one way on top off my head.
3) No mining robots please.
Ditch this idea that was mentioned months ago if it's still in the cooking. You don't want to delegitimize the human time spent on the only meaningful resource gathering activity in the game.
Overall I have great hopes but also concerns about the game. One major concern/test was whether the server tech will hold. It has improved a lot and that's great news for NQ. The next concern is whether NQ is spread too thin. The game's development was probably too early to commit to a non-wipe environment, and NQ might be underestimating how much it lacks vs an actually functioning ecosystem. Not to mention customer support is pretty nonexistent (god forbid you have a problem that's beyond the Discord staff's abilities). People will get bored of cool looking handcrafted ships pretty fast unless they have meaningful stuff to do in them very soon. Let's see how things develop. o7
Bitbinary.net - 0.3-3% daily for 365 days ($20 BONUS)
CLICK HERE TO JOIN bitbinary.net is a high yield investment program or HYIP that offers 0.3-3% daily for 365 days as minimal profit for investment. HYIP is an online investment program that typically offers very high returns on the capital invested. Plans: 0.3-3% daily for 365 days Minimum Deposit: $1020 Referral Commission: 40%, 30%, and 20% of their net profit earned on binary trading, 7%-2%-1% commissions from bot leasing Payment systems: bitcoin, ethereum, litecoin, dogecoin, tether This is what it says on bitbinary.net website: Some years ago, our company members have been seeking a formula that would help people to have income on binary options with a 100% guarantee of success. While reaching this goal, it was determined that humans are unable to perform the needed accuracy and frequency, unlike Artificial Intelligence. For this reason, we decided to design specialized software that can overcome humans in calculating and forecasting. CLICK HERE TO JOIN Related Reviews:https://reviewparking.com/bitbinary.net/ Other Links: Top Paying HYIP | Top Cloud Mining | Top Forex | Top Paid To Click | Top Crypto Faucets
New to deep learning, trying to understand how to approach a network I have in mind
Hey all! I've been fascinated with machine/deep learning for years now, and am finally taking my first steps into this world. I want to take a stab at creating a stock trading AI, and came across this fantastic article that outlines one approach. The goal of the network described in the article is to predict the price on a day-to-day basis, which seems like an obvious starting point. It uses a LSTM network as the generator in a GAN. The first image in the article outlines how the approach is structured. The thing is, I'm not very interested in predicting the stock price. My ideal system would instead output a "conviction" value for a variety of financial instruments. These would include holding cash, stocks, and options (both calls and puts, likely with a variety of strike prices and time horizons). A higher value would represent a stronger conviction that holding that financial instrument would be more profitable than not. The network would not be optimizing for raw numerical accuracy, but profitability. There would be non-machine learning based logic that translates the conviction values into actions (buy/sell/hold), with the outcome of those actions determining profitability. An example of the conviction values it might return for a given day are as follows:
Cash: 20%
Stock: 50%
Calls: 25%
Puts: 10%
If I look at this, it tells me that the network thinks the stock is more likely to go up than not (stock and calls having higher percentages than cash and puts), but that it thinks there's enough of a chance it'll go down that buying some puts to hedge is worth their loss in value if it goes up instead. What to do with this information will depend on each person individually, but let's assume the action logic is pretty basic and allocates the funds proportionally based on the percentages. One note: the percentages don't have to add up to 100%. If it is 100% convinced the stock will go up, the conviction for both stock and calls would be 100%, while cash and puts would be 0%. In that case, with this super naive logic, it would split funds 50/50 between stocks and calls. That leads me to my question: what would you use as the baseline-truth that the LSTM generator output gets compared to in the discriminator? With stock price it's obviously just the real stock price, but when we're talking about profitability across several financial instruments it's less so. My first thought is to use a 0/1 value based on whether or not holding that instrument through the next day was actually profitable, but it's important to me that the conviction value isn't just a binary YES/NO. I'm not familiar enough with GANs to know if it's possible to have it optimize towards an answer that doesn't necessarily match the baseline-truth it's being discriminated against. My gut reaction based on the little I know tells me it wouldn't be possible. I'm also not familiar enough with deep learning generally to know if another training methodology would be more appropriate in my situation. How would you approach this? EDIT: Been mulling this over a bit more and realized that I need to nail down what my ideal end result would be. I said I'd want it to optimize for profit, which means that I would need to calculate the maximum potential profit for each day and use that value as the baseline-truth that the results from the LSTM generator gets compared to. So, we can imagine a day where the stock went up 2%. If going all in on calls would result in $1 more in profit compared to going all in on stock, the maximum potential profit value for that day would be based on going 100% in on calls and 0% in on stocks. As a result, the perfectly optimal conviction values from the LSTM generator would be:
Cash: 0%
Stock: 0%
Calls: 100%
Puts: 0%
Now, the chance of making a model that predicts/matches this perfectly in a situation where you'd make $1 more going all in on calls is essentially 0. The next best case scenario is the generator acknowledging the fact that it can't predict it perfectly by giving calls a much lower weight and shares a higher weight (the reason being, calls generally lose value every single day you hold them if all else is equal and the price doesn't change). During training, it will run into situations like I described above where there's almost equal profit potential from holding stocks and calls. When it makes the wrong judgement call and says that going all in on calls is the way to go when stocks were actually better, the discrepancy in profit will be higher since the calls actually lost value. Over the training period, it should learn that it needs to be more conservative and allocate more funds to stocks in those situations. In other situations when it's REALLY sure the stock will go up, it will learn that it's safemore profitable to prioritize calls over stock. Actually, instead of calculating an actual dollar value and using that as the base-line truth, it should be enough to instead choose one financial instrument to have a conviction value of 1 for that day (representing that it's the most profitable instrument), while all the others get a value of 0. This is different to what I said in my original post, which was that I would set the conviction value for each instrument that would produce some profit to 1. In that situation the sum of the convictions could very well be over 100%; whereas, if only one instrument is given a value of 1 in the baseline-truth data, the sum of the conviction values should be close to 100%. Now that I've written that out, I feel like I have a clearer path forward. If anything I said sounds wrong, please let me know. It's based off of assumptions I'm making about how GANs work, without having any real experience with them.
Sanity check for security/Systems focused schedule. Thank you!
Hey All,
I just wanted to do a quick sanity check and see if I'm hoping for too much. Does anything think this is an realistic/unrealistic schedule?
I've been kind of disappointed with my 1st two classes. But I really enjoyed the projects, specifically project 4 from cyber physical security. The project was buffer overflow. I guess that the upcoming Fall semester could really change my calculations. My 1st two classes took me only about half as much time as omscentral. If that holds, then this might be a realistic schedule. If not, then this is probably unrealistic.
Planing out this far is probably just dreaming. Life could easily throw a wrench in these plans i.e, new job, kids, etc.
ClassNum
Fast
Slow
Status
ID
Title
MyRating
MyDif
My Hrs
Omscentral Hrs
1
2020-Spring
2020-Spring
1-Completed
CS-6263
Intro to Cyber Physical Systems Security f
Meh
Easy
Actual-4.4
9.1
2
2020-Summer
2020-Summer
1-Completed
CS-6400
Database Systems Concepts & Design f
Disliked
Easy
Actual-4.75
10.89
3
2020-Fall
2020-Fall
3-Inprogress
CS-6035
Intro to Information Security f
NA
NA
Estimate-4.35
9.47
4
2020-Fall
2020-Fall
3-Inprogress
CS-6262
Network Security f
NA
NA
Estimate-6.01
13.09
5
2021-Spring
2021-Spring
CS-6200
Intro to Operating Systems f
NA
NA
Estimate-8.04
17.5
6
2021-Spring
2021-Summer
CS-7638
Robotics: AI Techniques f
NA
NA
Estimate-5.76
12.55
7
2021-Summer
2021-Fall
2-Required*
CS-6210
Advanced Operating Systems
NA
NA
Estimate-7.49
16.3
8
2021-Fall
2022-Spring
CS-6265
Information Security Lab - Binary Exploitation
NA
NA
Estimate-11.33
24.67
9
2022-Spring
2022-Summer
CS-7646
Machine Learning for Trading f
NA
NA
Estimate-4.82
10.49
10
2022-Spring
2022-Fall
2-Required
CS-6515
Intro to Graduate Algorithms f
NA
NA
Estimate-9.33
20.32
11
2022-Summer
2023-Spring
CS-8803-11
Information Security Lab - System & Network Defenses
NA
NA
Estimate-6.89
15
12
2022-Fall
2023-Fall
CS-8803-008
Compilers - Theory and Practice
NA
NA
Estimate-12.38
26.95
*AOS is not actually required. One of the following is required though: AOS, Networks, HPCA, SDP. AOS seemed the most interesting. Networks or SDP are probably the easiest of the 4 options.
New to deep learning, trying to understand how to approach a network I have in mind
Hey all! I've been fascinated with machine/deep learning for years now, and am finally taking my first steps into this world. I want to take a stab at creating a stock trading AI, and came across this fantastic article that outlines one approach. The goal of the network described in the article is to predict the price on a day-to-day basis, which seems like an obvious starting point. It uses a LSTM network as the generator in a GAN. The first image in the article outlines how the approach is structured. The thing is, I'm not very interested in predicting the stock price. My ideal system would instead output a "conviction" value for a variety of financial instruments. These would include holding cash, stocks, and options (both calls and puts, likely with a variety of strike prices and time horizons). A higher value would represent a stronger conviction that holding that financial instrument would be more profitable than not. The network would not be optimizing for raw numerical accuracy, but profitability. There would be non-machine learning based logic that translates the conviction values into actions (buy/sell/hold), with the outcome of those actions determining profitability. An example of the conviction values it might return for a given day are as follows:
Cash: 20%
Stock: 50%
Calls: 25%
Puts: 10%
If I look at this, it tells me that the network thinks the stock is more likely to go up than not (stock and calls having higher percentages than cash and puts), but that it thinks there's enough of a chance it'll go down that buying some puts to hedge is worth their loss in value if it goes up instead. What to do with this information will depend on each person individually, but let's assume the action logic is pretty basic and allocates the funds proportionally based on the percentages. One note: the percentages don't have to add up to 100%. If it is 100% convinced the stock will go up, the conviction for both stock and calls would be 100%, while cash and puts would be 0%. In that case, with this super naive logic, it would split funds 50/50 between stocks and calls. That leads me to my question: what would you use as the baseline-truth that the LSTM generator output gets compared to in the discriminator? With stock price it's obviously just the real stock price, but when we're talking about profitability across several financial instruments it's less so. My first thought is to use a 0/1 value based on whether or not holding that instrument through the next day was actually profitable, but it's important to me that the conviction value isn't just a binary YES/NO. I'm not familiar enough with GANs to know if it's possible to have it optimize towards an answer that doesn't necessarily match the baseline-truth it's being discriminated against. My gut reaction based on the little I know tells me it wouldn't be possible. I'm also not familiar enough with deep learning generally to know if another training methodology would be more appropriate in my situation. How would you approach this? EDIT: Been mulling this over a bit more and realized that I need to nail down what my ideal end result would be. I said I'd want it to optimize for profit, which means that I would need to calculate the maximum potential profit for each day and use that value as the baseline-truth that the results from the LSTM generator gets compared to. So, we can imagine a day where the stock went up 2%. If going all in on calls would result in $1 more in profit compared to going all in on stock, the maximum potential profit value for that day would be based on going 100% in on calls and 0% in on stocks. As a result, the perfectly optimal conviction values from the LSTM generator would be:
Cash: 0%
Stock: 0%
Calls: 100%
Puts: 0%
Now, the chance of making a model that predicts/matches this perfectly in a situation where you'd make $1 more going all in on calls is essentially 0. The next best case scenario is the generator acknowledging the fact that it can't predict it perfectly by giving calls a much lower weight and shares a higher weight (the reason being, calls generally lose value every single day you hold them if all else is equal and the price doesn't change). During training, it will run into situations like I described above where there's almost equal profit potential from holding stocks and calls. When it makes the wrong judgement call and says that going all in on calls is the way to go when stocks were actually better, the discrepancy in profit will be higher since the calls actually lost value. Over the training period, it should learn that it needs to be more conservative and allocate more funds to stocks in those situations. In other situations when it's REALLY sure the stock will go up, it will learn that it's safemore profitable to prioritize calls over stock. Actually, instead of calculating an actual dollar value and using that as the base-line truth, it should be enough to instead choose one financial instrument to have a conviction value of 1 for that day (representing that it's the most profitable instrument), while all the others get a value of 0. This is different to what I said in my original post, which was that I would set the conviction value for each instrument that would produce some profit to 1. In that situation the sum of the convictions could very well be over 100%; whereas, if only one instrument is given a value of 1 in the baseline-truth data, the sum of the conviction values should be close to 100%. Now that I've written that out, I feel like I have a clearer path forward. If anything I said sounds wrong, please let me know. It's based off of assumptions I'm making about how GANs work, without having any real experience with them.
My name is Vihaan Khatri, I’m 28 years old and I live in Kolkata. A week ago I bought a new Bentley, as it’s six months since I worked at the car wash and barely had enough to feed my family. Now I’m going to tell you how a casual meeting changed my life and gave me the chance to earn $2000 a day. I’ll tell you a little about myself. Poverty – that’s how I would describe my whole life. My parents lived in poverty, I never went to university. After finishing school, I went to work at a car wash. When I was young, my salary was sufficient for me. But when I got married and my daughter was born, I started getting into serious financial problems and permanent debt. What to do – I had no idea; the debts were mounting but I couldn’t quit the job because it was my only source of income.. One afternoon a new BMW drove into the car wash. A young man stepped out of the car, he looked to be around 18 to 19. I was always amazed how young people could earn so much money. I said to myself quietly: “What do you have to do to drive a car like that?” But he heard me and laughed. “Binary options” – he said and went away. Those two words changed my life forever. When I got home, I sat down at the computer and started looking for some mentions of binary options. And so, a month passed: during the day I would work at the car wash, and by night I would read dozens of forums to understand how to use binary options. I found the Olymp Trade web page and registered on there for free. They let me open a demo account for $10,000 using virtual money, as well as providing free instructions. This helped me a lot in the beginning, when I still didn’t know how to work with binary options and I didn’t want to invest my own money. On the Olymp Trade web page, all the calculations are done in US dollars I received the payments in US dollars as well. After two or three weeks, there was $10,000 in my account. The only problem was that this was only some algorithms on the screen, I couldn’t actually withdraw any cash. That was when I decided to invest $100 in my account. I don’t trust some of the Internet web pages, so I didn’t want to risk too much. That night I didn’t sleep much – I traded all night, then I went to work. And guess what? That night I earned $153! All day at work, all I could think of was binary options. As soon as I got back home, I sat down at the computer, but tiredness got the better of me. That night I didn’t trade much – I earned just $33 and went to sleep. I remember those days well, the only thing that mattered to me was binary options – I would arrive home and start trading right away. After a week, my account had $1220 in it!!! I know, it’s not a huge amount, but this was only the beginning; I didn’t dare trade using large sums of money. I thought I’d better checkout the web page, so I sent a transfer of all my money ($1220) to a card. An hour later, I received a telephone message saying that the money was in my card! I was happy. After that, I invested $500 in my account and started dealing more boldly. After two weeks I had earned $10,000, and within a month I had left work. After that, I paid of all my debts and for the first time in my life, I took a vacation with my family to rest. This didn’t stop me trading though, because to earn money, all I needed was a laptop, or a mobile phone with Internet access. When we returned home, I bought myself BENTLEY and decided to write this blog just for you – workers like I was, who are fed up of working every day from morning until night, for a measly wage. Remember that life wasn’t given to us for that. Register now, and be sure to complete the instruction course in the demo account without risking losing real money. Nowadays, I don’t see any real way to earn money while sitting at the computer or telephone, except binary options. After buying the BENTLEY, there was still $27,183 left over in my account. My goal was to earn $300,000 by the summer and buy a house for my beloved family. Good luck everyone, and thank you for your attention.
My name is Vihaan Khatri, I’m 28 years old and I live in Kolkata. A week ago I bought a new Bentley, as it’s six months since I worked at the car wash and barely had enough to feed my family. Now I’m going to tell you how a casual meeting changed my life and gave me the chance to earn $2000 a day. I’ll tell you a little about myself. Poverty – that’s how I would describe my whole life. My parents lived in poverty, I never went to university. After finishing school, I went to work at a car wash. When I was young, my salary was sufficient for me. But when I got married and my daughter was born, I started getting into serious financial problems and permanent debt. What to do – I had no idea; the debts were mounting but I couldn’t quit the job because it was my only source of income.. One afternoon a new BMW drove into the car wash. A young man stepped out of the car, he looked to be around 18 to 19. I was always amazed how young people could earn so much money. I said to myself quietly: “What do you have to do to drive a car like that?” But he heard me and laughed. “Binary options” – he said and went away. Those two words changed my life forever. When I got home, I sat down at the computer and started looking for some mentions of binary options. And so, a month passed: during the day I would work at the car wash, and by night I would read dozens of forums to understand how to use binary options. I found the Olymp Trade web page and registered on there for free. They let me open a demo account for $10,000 using virtual money, as well as providing free instructions. This helped me a lot in the beginning, when I still didn’t know how to work with binary options and I didn’t want to invest my own money. On the Olymp Trade web page, all the calculations are done in US dollars I received the payments in US dollars as well. After two or three weeks, there was $10,000 in my account. The only problem was that this was only some algorithms on the screen, I couldn’t actually withdraw any cash. That was when I decided to invest $100 in my account. I don’t trust some of the Internet web pages, so I didn’t want to risk too much. That night I didn’t sleep much – I traded all night, then I went to work. And guess what? That night I earned $153! All day at work, all I could think of was binary options. As soon as I got back home, I sat down at the computer, but tiredness got the better of me. That night I didn’t trade much – I earned just $33 and went to sleep. I remember those days well, the only thing that mattered to me was binary options – I would arrive home and start trading right away. After a week, my account had $1220 in it!!! I know, it’s not a huge amount, but this was only the beginning; I didn’t dare trade using large sums of money. I thought I’d better checkout the web page, so I sent a transfer of all my money ($1220) to a card. An hour later, I received a telephone message saying that the money was in my card! I was happy. After that, I invested $500 in my account and started dealing more boldly. After two weeks I had earned $10,000, and within a month I had left work. After that, I paid of all my debts and for the first time in my life, I took a vacation with my family to rest. This didn’t stop me trading though, because to earn money, all I needed was a laptop, or a mobile phone with Internet access. When we returned home, I bought myself BENTLEY and decided to write this blog just for you – workers like I was, who are fed up of working every day from morning until night, for a measly wage. Remember that life wasn’t given to us for that. Register now, and be sure to complete the instruction course in the demo account without risking losing real money. Nowadays, I don’t see any real way to earn money while sitting at the computer or telephone, except binary options. After buying the BENTLEY, there was still $27,183 left over in my account. My goal was to earn $300,000 by the summer and buy a house for my beloved family. Good luck everyone, and thank you for your attention.
New to deep learning, trying to understand how to approach a network I have in mind
Hey all! I've been fascinated with machine/deep learning for years now, and am finally taking my first steps into this world. I want to take a stab at creating a stock trading AI, and came across this fantastic article that outlines one approach. The goal of the network described in the article is to predict the price on a day-to-day basis, which seems like an obvious starting point. It uses a LSTM network as the generator in a GAN. The first image in the article outlines how the approach is structured. The thing is, I'm not very interested in predicting the stock price. My ideal system would instead output a "conviction" value for a variety of financial instruments. These would include holding cash, stocks, and options (both calls and puts, likely with a variety of strike prices and time horizons). A higher value would represent a stronger conviction that holding that financial instrument would be more profitable than not. The network would not be optimizing for raw numerical accuracy, but profitability. There would be non-machine learning based logic that translates the conviction values into actions (buy/sell/hold), with the outcome of those actions determining profitability. An example of the conviction values it might return for a given day are as follows:
Cash: 20%
Stock: 50%
Calls: 25%
Puts: 10%
If I look at this, it tells me that the network thinks the stock is more likely to go up than not (stock and calls having higher percentages than cash and puts), but that it thinks there's enough of a chance it'll go down that buying some puts to hedge is worth their loss in value if it goes up instead. What to do with this information will depend on each person individually, but let's assume the action logic is pretty basic and allocates the funds proportionally based on the percentages. One note: the percentages don't have to add up to 100%. If it is 100% convinced the stock will go up, the conviction for both stock and calls would be 100%, while cash and puts would be 0%. In that case, with this super naive logic, it would split funds 50/50 between stocks and calls. That leads me to my question: what would you use as the baseline-truth that the LSTM generator output gets compared to in the discriminator? With stock price it's obviously just the real stock price, but when we're talking about profitability across several financial instruments it's less so. My first thought is to use a 0/1 value based on whether or not holding that instrument through the next day was actually profitable, but it's important to me that the conviction value isn't just a binary YES/NO. I'm not familiar enough with GANs to know if it's possible to have it optimize towards an answer that doesn't necessarily match the baseline-truth it's being discriminated against. My gut reaction based on the little I know tells me it wouldn't be possible. I'm also not familiar enough with deep learning generally to know if another training methodology would be more appropriate in my situation. How would you approach this? EDIT: Been mulling this over a bit more and realized that I need to nail down what my ideal end result would be. I said I'd want it to optimize for profit, which means that I would need to calculate the maximum potential profit for each day and use that value as the baseline-truth that the results from the LSTM generator gets compared to. So, we can imagine a day where the stock went up 2%. If going all in on calls would result in $1 more in profit compared to going all in on stock, the maximum potential profit value for that day would be based on going 100% in on calls and 0% in on stocks. As a result, the perfectly optimal conviction values from the LSTM generator would be:
Cash: 0%
Stock: 0%
Calls: 100%
Puts: 0%
Now, the chance of making a model that predicts/matches this perfectly in a situation where you'd make $1 more going all in on calls is essentially 0. The next best case scenario is the generator acknowledging the fact that it can't predict it perfectly by giving calls a much lower weight and shares a higher weight (the reason being, calls generally lose value every single day you hold them if all else is equal and the price doesn't change). During training, it will run into situations like I described above where there's almost equal profit potential from holding stocks and calls. When it makes the wrong judgement call and says that going all in on calls is the way to go when stocks were actually better, the discrepancy in profit will be higher since the calls actually lost value. Over the training period, it should learn that it needs to be more conservative and allocate more funds to stocks in those situations. In other situations when it's REALLY sure the stock will go up, it will learn that it's safemore profitable to prioritize calls over stock. Actually, instead of calculating an actual dollar value and using that as the base-line truth, it should be enough to instead choose one financial instrument to have a conviction value of 1 for that day (representing that it's the most profitable instrument), while all the others get a value of 0. This is different to what I said in my original post, which was that I would set the conviction value for each instrument that would produce some profit to 1. In that situation the sum of the convictions could very well be over 100%; whereas, if only one instrument is given a value of 1 in the baseline-truth data, the sum of the conviction values should be close to 100%. Now that I've written that out, I feel like I have a clearer path forward. If anything I said sounds wrong, please let me know. It's based off of assumptions I'm making about how GANs work, without having any real experience with them.
Step-by-Step Guide for Adding a Stack, Expanding Control Lines, and Building an Assembler
After the positive response to my first tutorial on expanding the RAM, I thought I'd continue the fun by expanding the capabilities of Ben's 8-bit CPU even further. That said, you'll need to have done the work in the previous post to be able to do this. You can get a sense for what we'll do in this Imgur gallery. In this tutorial, we'll balance software and hardware improvements to make this a pretty capable machine:
Use an Arduino and an assembler to enable faster, more complex programming.
Expand control lines without additional ROMs, using 74LS138 decoders.
Add a stack pointer and stack to support subroutines with 74LS193 counters.
Bonus: Enable B register output and add a Schmitt trigger to clean up your clock signal.
Parts List
To only update the hardware, you'll need:
2x 74LS138 (Datasheet, Jameco) which are decoders used to expand the control lines. You can reuse one from the step counter if you don't mind reading binary numbers vs. an LED for each step.
1x 74LS04 (Datasheet, Jameco) which is an inverter to help expand the control lines.
2x 74LS193 (Datasheet, Jameco) which is a 4-bit up/down counter used to create the stack pointer.
1x 74LS245 (Datasheet, Jameco) which is a bus transceiver. You may have a spare one if you did my previous build.
1x 74LS00 (Datasheet, Jameco) which is a NAND gate to control the stack pointer.
8x Green LED, 1x Yellow LED, 4x Blue LEDs, 13x 220 Ohm resistors to display the stack pointer (green), the stack address (yellow), and the additional control lines (blue).
If you want to update the toolchain, you'll need:
Arduino Mega 2560 (Amazon) to create the programmer.
Ribbon Jumper Cables (Amazon) to connect the Arduino to the breadboard.
TL866 II Plus EEPROM Programmer (Amazon) to program the ROM.
Bonus Clock Improvement: One additional thing I did is replace the 74LS04 inverter in Ben's clock circuit with a 74LS14 inverting Schmitt trigger (datasheet, Jameco). The pinouts are identical! Just drop it in, wire the existing lines, and then run the clock output through it twice (since it's inverting) to get a squeaky clean clock signal. Useful if you want to go even faster with the CPU.
Step 1: Program with an Arduino and Assembler (Image 1, Image 2)
There's a certain delight in the physical programming of a computer with switches. This is how Bill Gates and Paul Allen famously programmed the Altair 8800 and started Microsoft. But at some point, the hardware becomes limited by how effectively you can input the software. After upgrading the RAM, I quickly felt constrained by how long it took to program everything. You can continue to program the computer physically if you want and even after upgrading that option is still available, so this step is optional. There's probably many ways to approach the programming, but this way felt simple and in the spirit of the build. We'll use an Arduino Mega 2560, like the one in Ben's 6502 build, to program the RAM. We'll start with a homemade assembler then switch to something more robust. Preparing the Physical Interface The first thing to do is prepare the CPU to be programmed by the Arduino. We already did the hard work on this in the RAM upgrade tutorial by using the bus to write to the RAM and disconnecting the control ROM while in program mode. Now we just need to route the appropriate lines to a convenient spot on the board to plug the Arduino into.
This is optional, but I rewired all the DIP switches to have ground on one side, rather than alternating sides like Ben's build. This just makes it easier to route wires.
Wire the 8 address lines from the DIP switch, connecting the side opposite to ground (the one going to the chips) to a convenient point on the board. I put them on the far left, next to the address LEDs and above the write button circuit.
Wire the 8 data lines from the DIP switch, connecting the side opposite to ground (the one going to the chips) directly below the address lines. Make sure they're separated by the gutter so they're not connected.
Wire a line from the write button to your input area. You want to connect the side of the button that's not connected to ground (the one going to the chip).
So now you have one convenient spot with 8 address lines, 8 data lines, and a write line. If you want to get fancy, you can wire them into some kind of connector, but I found that ribbon jumper cables work nicely and keep things tidy. The way we'll program the RAM is to enter program mode and set all the DIP switches to the high position (e.g., 11111111). Since the switches are upside-down, this means they'll all be disconnected and not driving to ground. The address and write lines will simply be floating and the data lines will be weakly pulled up by 1k resistors. Either way, the Arduino can now drive the signals going into the chips using its outputs. Creating the Arduino Programmer Now that we can interface with an Arduino, we need to write some software. If you follow Ben's 6502 video, you'll have all the knowledge you need to get this working. If you want some hints and code, see below (source code):
Create arrays for your data and address lines. For example: const char ADDRESS_LINES[] = {39, 41, 43, 45, 47, 49, 51, 53};. Create your write line with #define RAM_WRITE 3.
Create functions to enable and disable your address and data lines. You want to enable them before writing. Make sure to disable them afterward so that you can still manually program using DIP switches without disconnecting the Arduino. The code looks like this (just change INPUT to OUTPUT accordingly): for(int n = 0; n < 8; n += 1) { pinMode(ADDRESS_LINES[n], OUTPUT); }
Create a function to write to an address. It'll look like void writeData(byte writeAddress, byte writeData) and basically use two loops, one for address and one for data, followed by toggling the write.
Create a char array that contains your program and data. You can use #define to create opcodes like #define LDA 0x01.
In your main function, loop through the program array and send it through writeData.
With this setup, you can now load multi-line programs in a fraction of a second! This can really come in handy with debugging by stress testing your CPU with software. Make sure to test your setup with existing programs you know run reliably. Now that you have your basic setup working, you can add 8 additional lines to read the bus and expand the program to let you read memory locations or even monitor the running of your CPU. Making an Assembler The above will serve us well but it's missing a key feature: labels. Labels are invaluable in assembly because they're so versatile. Jumps, subroutines, variables all use labels. The problem is that labels require parsing. Parsing is a fun project on the road to a compiler but not something I wanted to delve into right now--if you're interested, you can learn about Flex and Bison. Instead, I found a custom assembler that lets you define your CPU's instruction set and it'll do everything else for you. Let's get it setup:
If you're on Windows, you can use the pre-built binaries. Otherwise, you'll need to install Rust and compile via cargo build.
Create a file called 8bit.cpu and define your CPU instructions (source code). For example, LDA would be lda {address} -> 0x01 @ address[7:0]. What's cool is you can also now create the instruction's immediate variant instead of having to call it LDI: lda #{value} -> 0x05 @ value[7:0].
You can now write assembly by adding #include "8bit.cpu" to the top of your code. There's a lot of neat features so make sure to read the documentation!
Once you've written some assembly, you can generate the machine code using ./customasm yourprogram.s -f hexc -p. This prints out a char array just like our Arduino program used!
Copy the char array into your Arduino program and send it to your CPU.
At this stage, you can start creating some pretty complex programs with ease. I would definitely play around with writing some larger programs. I actually found a bug in my hardware that was hidden for a while because my programs were never very complex!
Before we can expand the CPU any further, we have to address the fact we're running out of control lines. An easy way to do this is to add a 3rd 28C16 ROM and be on your way. If you want something a little more involved but satisfying, read on. Right now the control lines are one hot encoded. This means that if you have 4 lines, you can encode 4 states. But we know that a 4-bit binary number can encode 16 states. We'll use this principle via 74LS138 decoders, just like Ben used for the step counter. Choosing the Control Line Combinations Everything comes with trade-offs. In the case of combining control lines, it means the two control lines we choose to combine can never be activated at the same time. We can ensure this by encoding all the inputs together in the first 74LS138 and all the outputs together in a second 74LS138. We'll keep the remaining control lines directly connected. Rewiring the Control Lines If your build is anything like mine, the control lines are a bit of a mess. You'll need to be careful when rewiring to ensure it all comes back together correctly. Let's get to it:
Place the two 74LS138 decoders on the far right side of the breadboard with the ROMs. Connect them to power and ground.
You'll likely run out of inverters, so place a 74LS04 on the breadboard above your decoders. Connect it to power and ground.
Carefully take your inputs (MI, RI, II, AI, BI, J) and wire them to the outputs of the left 74LS138. Do not wire anything to O0 because that's activated by 000 which won't work for us!
Carefully take your outputs (RO, CO, AO, EO) and wire them to the outputs of the right 74LS138. Remember, do not wire anything to O0!
Now, the 74LS138 outputs are active low, but the ROM outputs were active high. This means you need to swap the wiring on all your existing 74LS04 inverters for the LEDs and control lines to work. Make sure you track which control lines are supposed to be active high vs. active low!
Wire E3 to power and E2 to ground. Connect the E1 on both 138s together, then connect it to the same line as OE on your ROMs. This will ensure that the outputs are disabled when you're in program mode. You can actually take off the 1k pull-up resistors from the previous tutorial at this stage, because the 138s actively drive the lines going to the 74LS04 inverters rather than floating like the ROMs.
At this point, you really need to ensure that the massive rewiring job was successful. Connect 3 jumper wires to A0-A2 and test all the combinations manually. Make sure the correct LED lights up and check with a multimeteoscilloscope that you're getting the right signal at each chip. Catching mistakes at this point will save you a lot of headaches! Now that everything is working, let's finish up:
Connect A0-A2 of the left 74LS138 to the left ROM's A0-A2.
Connect A0-A2 of the right 74LS138 to the right ROM's A0-A2.
Distribute the rest of the control signals across the two ROMs.
Changing the ROM Code This part is easy. We just need to update all of our #define with the new addresses and program the ROMs again. For clarity that we're not using one-hot encoding anymore, I recommend using hex instead of binary. So instead of #define MI 0b0000000100000000, we can use #define MI 0x0100, #define RI 0x0200, and so on. Testing Expanding the control lines required physically rewiring a lot of critical stuff, so small mistakes can creep up and make mysterious errors down the road. Write a program that activates each control line at least once and make sure it works properly! With your assembler and Arduino programmer, this should be trivial. Bonus: Adding B Register Output With the additional control lines, don't forget you can now add a BO signal easily which lets you fully use the B register.
Adding a stack significantly expands the capability of the CPU. It enables subroutines, recursion, and handling interrupts (with some additional logic). We'll create our stack with an 8-bit stack pointer hard-coded from $0100 to $01FF, just like the 6502. Wiring up the Stack Pointer A stack pointer is conceptually similar to a program counter. It stores an address, you can read it and write to it, and it increments. The only difference between a stack pointer and a program counter is that the stack pointer must also decrement. To create our stack pointer, we'll use two 74LS193 4-bit up/down binary counters:
Place a 74LS00 NAND gate, 74LS245 transceiver, and two 74LS193 counters in a row next to your output register. Wire up power and ground.
Wire the the Carry output of the right 193 to the Count Up input of the left 193. Do the same for the Borrow output and Count Down input.
Connect the Clear input between the two 193s and with an active high reset line. The B register has one you can use on its 74LS173s.
Connect the Load input between the two 193s and to a new active low control line called SI on your 74LS138 decoder.
Connect the QA-QD outputs of the lower counter to A8-A5 and the upper counter to A4-A1. Pay special attention because the output are in a weird order (BACD) and you want to make sure the lower A is connected to A8 and the upper A is connected to A4.
Connect the A-D inputs of the lower counter to B8-B5 and the upper counter to B4-B1. Again, the inputs are in a weird order and on both sides of the chip so pay special attention.
Connect the B1-B8 outputs of the 74LS245 transceiver to the bus.
On the 74LS245 transceiver, connect DIR to power (high) and connect OE to a new active low control line called SO on your 74LS138 decoder.
Add 8 LEDs and resistors to the lower part of the 74LS245 transceiver (A1-A8) so you can see what's going on with the stack pointer.
Enabling Increment & Decrement We've now connected everything but the Count Up and Count Down inputs. The way the 74LS193 works is that if nothing is counting, both inputs are high. If you want to increment, you keep Count Down high and pulse Count Up. To decrement, you do the opposite. We'll use a 74LS00 NAND gate for this:
Take the clock from the 74LS08 AND gate and make it an input into two different NAND gates on the 74LS00.
Take the output from one NAND gate and wire it to the Count Up input on the lower 74LS193 counter. Take the other output and wire it to the Count Down input.
Wire up a new active high control line called SP from your ROM to the NAND gate going into Count Up.
Wire up a new active high control line called SM from your ROM to the NAND gate going into Count Down.
At this point, everything should be working. Your counter should be able to reset, input a value, output a value, and increment/decrement. But the issue is it'll be writing to $0000 to $00FF in the RAM! Let's fix that. Accessing Higher Memory Addresses We need the stack to be in a different place in memory than our regular program. The problem is, we only have an 8-bit bus, so how do we tell the RAM we want a higher address? We'll use a special control line to do this:
Wire up an active high line called SA from the 28C16 ROM to A8 on the Cypress CY7C199 RAM.
Add an LED and resistor so you can see when the stack is active.
That's it! Now, whenever we need the stack we can use a combination of the control line and stack pointer to access $0100 to $01FF. Updating the Instruction Set All that's left now is to create some instructions that utilize the stack. We'll need to settle some conventions before we begin:
Empty vs. Full Stack: In our design, the stack pointer points to the next empty slot in memory, just like on the 6502. This is called an "empty stack" convention. ARM processors use a "full stack" convention where the stack points to the last filled slot.
Ascending vs. Descending Stack: In our design, the stack pointer increases when you add something and decreases when you remove something. This is an "ascending stack" convention. Most processors use a "descending stack", so we're bucking the trend here.
If you want to add a little personal flair to your design, you can change the convention fairly easily. Let's implement push and pop (source code):
Define all your new control lines, such as #define SI 0x0700 and #define SO 0x0005.
Create two new instructions: PSH (1011) and POP (1100).
PSH starts the same as any other for the first two steps: MI|CO and RO|II|CE. The next step is to put the contents of the stack pointer into the address register via MI|SO|SA. Recall that SA is the special control line that tells the memory to access the $01XX bank rather than $00XX.
We then take the contents of AO and write it into the RAM. We can also increment the stack pointer at this stage. All of this is done via: AO|RI|SP|SA, followed by TR.
POP is pretty similar. Start off with MI|CO and RO|II|CE. We then need to take a cycle and decrement the stack pointer with SM. Like with PSH, we then set the address register with MI|SO|SA.
We now just need to output the RAM into our A register with RO|AI|SA and then end the instruction with TR.
Updating the assembler is easy since neither instruction has operands. For example, push is just psh -> 0x0B.
And that's it! Write some programs that take advantage of your new 256 byte stack to make sure everything works as expected.
The last step to complete our stack is to add subroutine instructions. This allows us to write complex programs and paves the way for things like interrupt handling. Subroutines are like a blend of push/pop instructions and a jump. Basically, when you want to call a subroutine, you save your spot in the program by pushing the program counter onto the stack, then jumping to the subroutine's location in memory. When you're done with the subroutine, you simply pop the program counter value from the stack and jump back into it. We'll follow 6502 conventions and only save and restore the program counter for subroutines. Other CPUs may choose to save more state, but it's generally left up to the programmer to ensure they're not wiping out states in their subroutines (e.g., push the A register at the start of your subroutine if you're messing with it and restore it before you leave). Adding an Extra Opcode Line I've started running low on opcodes at this point. Luckily, we still have two free address lines we can use. To enable 5-bit opcodes, simply wire up the 4Q output of your upper 74LS173 register to A7 of your 28C16 ROM (this assumes your opcodes are at A3-A6). Updating the ROM Writer At this point, you simply need to update the Arduino writer to support 32 instructions vs. the current 16. So, for example, UCODE_TEMPLATE[16][8] becomes UCODE_TEMPLATE[32][8] and you fill in the 16 new array elements with nop. The problem is that the Arduino only has so much memory and with the way Ben's code is written to support conditional jumps, it starts to get tight. I bet the code can be re-written to handle this, but I had a TL866II Plus EEPROM programmer handy from the 6502 build and I felt it would be easier to start using that instead. Converting to a regular C program is really simple (source code):
Copy all the #define, global const arrays (don't forget to expand them from 16 to 32), and void initUCode(). Add #include and #include to the top.
In your traditional int main (void) C function, after initializing with initUCode(), make two arrays: char ucode_upper[2048] and char ucode_lower[2048].
Take your existing loop code that loops through all addresses: for (int address = 0; address < 2048; address++).
Modify instruction to be 5-bit with int instruction = (address & 0b00011111000) >> 3;.
When writing, just write to the arrays like so: ucode_lower[address] = ucode[flags][instruction][step]; and ucode_upper[address] = ucode[flags][instruction][step] >> 8;.
Open a new file with FILE *f = fopen("rom_upper.hex", "wb");, write to it with fwrite(ucode_upper, sizeof(char), sizeof(ucode_upper), f); and close it with fclose(f);. Repeat this with the lower ROM too.
Compile your code using gcc (you can use any C compiler), like so: gcc -Wall makerom.c -o makerom.
Running your program will spit out two binary files with the full contents of each ROM. Writing the file via the TL866II Plus requires minipro and the following command: minipro -p CAT28C16A -w rom_upper.hex. Adding Subroutine Instructions At this point, I cleaned up my instruction set layout a bit. I made psh and pop 1000 and 1001, respectively. I then created two new instructions: jsr and rts. These allow us to jump to a subroutine and returns from a subroutine. They're relatively simple:
For jsr, the first three steps are the same as psh: MI|CO, RO|II|CE, MI|SO|SA.
On the next step, instead of AO we use CO to save the program counter to the stack: CO|RI|SP|SA.
We then essentially read the 2nd byte to do a jump and terminate: MI|CO, RO|J.
For rts, the first four steps are the same as pop: MI|CO, RO|II|CE, SM, MI|SO|SA.
On the next step, instead of AI we use J to load the program counter with the contents in stack: RO|J|SA.
We're not done! If we just left this as-is, we'd jump to the 2nd byte of jsr which is not an opcode, but a memory address. All hell would break loose! We need to add a CE step to increment the program counter and then terminate.
Once you update the ROM, you should have fully functioning subroutines with 5-bit opcodes. One great way to test them is to create a recursive program to calculate something--just don't go too deep or you'll end up with a stack overflow!
Conclusion
And that's it! Another successful upgrade of your 8-bit CPU. You now have a very capable machine and toolchain. At this point I would have a bunch of fun with the software aspects. In terms of hardware, there's a number of ways to go from here:
Interrupts. Interrupts are just special subroutines triggered by an external line. You can make one similar to how Ben did conditional jumps. The only added complexity is the need to load/save the flags register since an interrupt can happen at any time and you don't want to destroy the state. Given this would take more than 8 steps, you'd also need to add another line for the step counter (see below).
ROM expansion. At this point, address lines on the ROM are getting tight which limits any expansion possibilities. With the new approach to ROM programming, it's trivial to switch out the 28C16 for the 28C256 that Ben uses in the 6502. These give you 4 additional address lines for flags/interrupts, opcodes, and steps.
Segment/bank register. It's essentially a 2nd memory address register that lets you access 256-byte segments/banks of RAM using bank switching. This lets you take full advantage of the 32K of RAM in the Cypress chip.
Fast increment instructions. Add these to registers by replacing 74LS173s with 74LS193s, allowing you to more quickly increment without going through the ALU. This is used to speed up loops and array operations.
Binary options are based on a simple yes or no question, will an underlying asset be above a certain price after a certain period of time or not? Traders place trades based on whether they believe the answer is yes or no, making it one of the simplest financial assets to trade. You know precisely how much you could win, or lose before you make the trade. No complex maths and calculator is ... You can use this online binary options calculator for optimization of your money management approach. ... Before deciding to trade binary options you should carefully consider your investment objectives, level of experience, and risk appetite. The possibility exists that you could sustain a loss in excess of your initial investment. You should be aware of all the risks associated with binary ... Binary Options Trade Calculator. These complaints allege that the Internet-based binary options trading platforms manipulate the trading software to distort binary options prices and payouts. Learn more about Responsible Trading…. A binary options calculator allows you to determine if you are being shortchanged by trading an asset with a specific payout. Contents1 How the options profit ... Binary options commission or house advantage resides in the difference between option’s potential return (payout) and option’s out-of-money reward (if any). You can use the calculator below to find out your broker’s edge on a particular binary trade given the payout amount and the out-of-money reward. In the case of binary options, where the profit margin is less than 100% per trade (i.e., simply doubling the previous transaction does not work here), this Binary Options Martingale Calculator will help you calculate the size of the next transaction: Binary Options Martingale Calculator Online. Minimum investment (for example: 10) Yield, % (for example: 80) Number of Martingale steps: Get ... Binary Options Trade Calculator. Hint: Replace numbers with your own and check results at the end. Our conclusion after playing around with numbers . By playing around with different situations and numbers, you can see that 50% of winning trades is not enough to stay in profit. We’ve identified that in most cases where brokers offer 70% return on standard High / Low trades, you’ll need to ... Binary Option Fx Trade Group - Binary Option Fx Trade Ltd. 24598 IBC 2019 (Suite 305, Griffith Corporate Centre, P.O. Box 1510, Beachmont, Kingstown, St. Vincent and the Grenadines) - Binary Option Fx Trade Ltd. 036046 (106 Premier Building, Victoria, Mahe, Seychelles)
Binary Options Explained - Can You Really Make Money With ...
https://binaryoptionsbeat.com/ #Binaryoptions #Nadex #Strategy You can always contact me via [email protected] This is a tutorial video, aiming to ex... Binary options trading Tutorial for the beginners Hey guys! Today I'm gonna show you my binary options trading strategy that I usually use in my binary tra... https://binaryoptionsbeat.com/ #Binaryoptions #Nadex #Nadextutorial You can always contact me via [email protected] In this video I tried to explain ... If playback doesn't begin shortly, try restarting your device. You're signed out. Videos you watch may be added to the TV's watch history and influence TV recommendations. To avoid this, cancel ... Need a Binary Options Trading Strategy? To get the transcript and MP3, go to: https://www.rockwelltrading.com/uncategorized/binary-options-trading-strategy-h... How Binary Options Work. To get the transcript and MP3, go to: https://www.rockwelltrading.com/coffee-with-markus/how-binary-options-work/ Try it for yoursel... This is how I have traded Binary for the past 3 years. Thank you for watching my videos, hit the subscribe button for more content. Check out our members res...