Monday, November 7, 2016

Casino Bans and F2P - October Economic Report

October was jam packed with news. Engineering Complexes, NPE Update, Command Boosts, and EULA changes. The stage is set for Ascension, but where is the economy today?

The Money Supply - IWI Bans

Though EVEbet was allowed to close peacefully and settle tabs, I Want ISK (IWI) was shuttered with a ban wave that knocked out the leaders while zeroing out all bankers' wallets. I personally feel that this kind of enforcement was one of the better scenarios given the circumstances; freeing IWI from paying back over-leveraged liabilities because #grrccp. But many complain that without the premier content sponsors, producers and content makers will be in trouble. Though it’s important to remember the EULA update is in line with a changing litigious atmosphere around virtual gambling, see: Valve mired in CS:GO trouble.

Money Supply Graph - Total ISK zoomed in

Market watchers wanted to know the quantifiable impacts. Reddit reports put the damage at 30T, but looking between the Money Supply data and monthly Sinks & Faucet Report, we're estimate the total cash impact at 22.4T out of a record 36T reported in the Active ISK Delta for October. Damages could total to 30T when counting confiscated PLEX or high-value assets like Alliance Tournament prizes, but that value is not reported in the Economic Report and we have no way of corroborating any claim over 27T.

Lastly, CCP Quant released a breakdown of EVE's player wealth distribution. Though many took to social media to argue about the 1%, the distribution of ISK is much fairer than anticipated. It's a good bet to assume a power curve in cases like this: where 20% of the population controls 80% of the resources. And though this does not include net worth/physical assets, nor corporation wallets or alliance war-chests, it's an interesting sample of wealth in EVE.

Other Indicators

Looking at other monthly indicators we find a mixed bag. First off, PLEX and ISK velocity remain on their seasonal track without much deviation. PLEX has risen a little too sharply in the last week, and shows some signs of leveling off for a price between 1.25B and 1.3B for Ascension.

Usually, the markets are hottest in the fall, with gaming rising across the board in Q4.  Last year, the markets were hottest in October with each player gathering like EVE_NT, EVEsterdam, and EVE Vegas stoking the hype train. This year, players seem to be in a holding pattern ahead of Ascension. Though CCP Rise's Alpha Clone PVP presentations should have stoked more hype into pre-Ascension speculation, statistics still look anemic. Furthermore, the PVP numbers are concerning. The pre-Vegas dip was so unbelievable, we had to verify we were not missing data.

Looking Forward to Ascension

Hitting the big points as fast as possible:
  • PLEX: Expect demand to be a wash, watch out for PLEX sales to pop the current bubble
  • Mining: Brace for big impacts across the board:
    • Tritanium: Stay stable in short term due to ISK/m3 value, but expect long term sag
    • Pyerite/Isogen: Bigger drops as compressed material comes out of nullsec
    • Mexallon/Nocxium: Expecting supply stability, though volatile prices
    • Zydrine/Megacyte: Still have room to fall, and will be clobbered by Ascension mining
    • Morphite: Minimum supply change, but weak demand without big conflicts
    • Nitrogen Isotopes: EC's should offline many industry POS, lowering demand
    • Other Isotopes: Hot on patch day, but supplies should drive prices down by end of year
  • Alphas: Minimal impacts in T1 prices, but should drive up ISK velocity and PVP stats
Forecasting Alpha impacts is incredibly difficult given no other game comes close to EVE mechanically. Many savvy players already treat EVE as F2P thanks to PLEX. Also, since Skill Injectors were introduced, subsidizing ISK generation has never been easier. The content of EVE is players, and Alphas give the means to keep more warm bodies in the game. We are excited to see Nov-Jan's economic stats with the expected flood of new content generators.

Thursday, October 27, 2016

Favorite Python Packages 01 - Making a chatbot

I had to write a logging handler for work that pushed errors up to HipChat. Turns out the process was so easy, I could not resist adding a chat-handler to ProsperCommon (esp given my hacky email handler). Despite my love for Slack, Discord became the tool-of-choice because it’s easy to stand-up/tear-down chats with a lot of flexibility. I also skipped Slack for now because the tweetfleet server blows past the 10k message buffer on a daily basis.

So, let's cook up a chatbot! Discord's API offerings are dizzying; this should be easy! - Making Chatbots Easy

Since Discord relies on an oAuth2 connection, and chats are inherently asynchronous, cooking up a bot from scratch would hurt. to the rescue! This library has exceptional API coverage and is easy to use.

My one gripe is the documentation. Docs are sparse in places, but I'll forgive that sin with their example code and an active community on the Discord API Guild. Also, I had some trouble getting off the ground with the Discord API docs. Specifically, getting the correct tokens required to work, but once the bot was authenticated, it was off to the races!

TinyDB - The Easy Object-store

Pinging the internet for data is not free; whether because of rate limits or round trip times. Tools like SQLite are great for lightweight/portable data storage, but also requires schema design. MongoDB is a powerful noSQL solution, but is heavy to stand up (and I'm not in love with the query language). TinyDB comes to the rescue as a way to get the JSON/noSQL storage of MongoDB with none of the server/auth standup.

This shines when paired with REST endpoints. It's easy to push/pop entries around and keep the same raw JSON in archive as what's coming from the endpoint. Also, it's as easy as JSON to add more keys for searching. I'm still not in love with my cache-timer implementation in ProsperBot, but fetching from cache is 100x faster than an internet-call. Lastly, debug is easy since output is raw JSON, though this could lead to compression issues down the line.

Quick pro-tip about TinyDB: get ujson. This pure-C implementation of the JSON library is a great drop-in replacement. It can also be baked into libraries like Requests. ujson makes handling JSON lightning fast! Also, TinyDB has a wide array of extensions, and I will be looking into MongoDB hooks at a future date.

NLTK - Processing Text Made Easy

The number one problem I have with stock quotes: it takes 2-3 extra clicks to figure out WHY the price moved for the day. Google/Yahoo/etc provide great single-stock pages that give news summaries, but when you open a ticker or phone widget, only the raw numbers are reported. If I'm going to make a quote bot, why not include some information and save people a search?

The good news, Google/Yahoo both give a by-ticker API of relevant news articles. The bad news, they yield 10-15 articles in the query. Furthermore, the data isn't particularly ranked/scored from the source. I could have gambled with first-article being the best, or stacked a publisher priority order, but all I wanted was:
Good news when the stock is up.  Bad news when the stock is down
NLTK to the rescue. I have wanted to try my hand at sentiment/language analysis since I saw a local talk on Analyzing P2P Lending Data. Putting headlines through the vader_lexicon tools did exactly what I wanted and was blazing fast.

After playing with this quick demo of NLTK, I'm excited to expand this toolset.  If I can find the time, I'd very much like to write up a new discord bot for grading a community and highlighting troublemakers statistically rather than bluntly using block lists and word black-lists.

Let's See It!

I'm going to save the "how to get [stock] data" question for another blog.  There's a wide world of API's and support out there, and digging into them is worth a whole blog.  For the impatient, I used these two articles as a springboard to get started:
Though designing the bot language may require some creative design for EVE topics, standing up the bot should be easy.  I've been able to add functions at a uniquely fast pace (0.5-1d/feature) and standing up the whole bot took just a few evenings once I got through the roadblocks.  The libraries above are excellent tools to have in your tool box, and I'm excited to dig deeper into their functionality beyond the small `hello world` functions written so far!

Tuesday, October 18, 2016

Up And Down - Maintaining a OHLC Endpoint and Deploying Flask Restful

This is the first part of a more technical devblog. I will be writing up more specifics in a part 2, but I wanted to talk about the ups and downs behind the scenes with our EVE Mogul partnership. Issues are mostly my failings, and Jeronica, Randomboy50, and the rest of the team have been amazing given my shoddy uptime.

Prosper's OHLC Feed

I forgot to blog about this since the plans for Prosper's v2 codebase have only recently solidified, but we have a CREST markethistory -> OHLC feed hosted at The purpose was to run Flask/REST through its paces, but Jeronica over at EVE Mogul whipped up a front-end and Roeden at Neocom has been using it in their trading forays.

SSO Login Required To View

This originally served me well as a learning experience, but keeping a REST endpoint up isn't as simple as originally expected. From Flask's lack of out-of-the-box multithread support, to some more linux FUBAR's below, it's been a wild ride. And now that players are legitimately counting on this resource as part of their toolchain, I figured it's time to get my act together.

The Litany of SNAFUs

What really brought the house of cards down was our move from a traditional hosting service to a full r/homelab solution. Prosper has been living besides some other nerd projects (minecraft, arma, mumble, etc) and this move gets Prosper off the shitlist from the other customers when Wednesday night rolls around and I hammer box generating the show's plots. Unfortunately, for the added performance, we trade being under a benevolent tinkerer; restarts and reconfigs are more common than before. It's a huge upgrade, and I can't thank Randomboy50 enough for the support, but nothing is truly free (except the minerals you mine yourself™).

#nofilter #bareisbeautiful

This need for stability runs headlong into a shitty part of python: package deployment. Though wheeling up and distributing individual python libraries is easy, deploying python as a service is not. There will be a second blog on the specifics, but you're largely stuck with magic-project-deploying scripting out of the box, which can get really hairy if you're not careful about virtualenvs.

Thankfully, work turned me on to dh-virtualenv and though now we're grossly overengineered with a service .deb installer, we now have a properly deployed linux service that should be far more robust going forward. It does mean that there's now "build" and "deploy" steps for updates, but now that we're tied into systemctl the endpoint should be much less likely to go down.

With the last few months of work, I still expect a large amount of reengineering in our quest for a Quandl-like EVE service, but with the installer built in we can upkeep the endpoint with a lot less effort going forward. We are still behind on the ProsperWarehouse rollout, getting scrapers rewritten, but those modules should be a cakewalk to deploy now with ProsperAPI properly built up.

Also, I've worked in a discord logging handler which will be useful for monitoring, but notes on that later ;)

Friday, October 7, 2016

Stoking the Hype Train - September Economic Report

Editor's Note: blog was published about 30mins before CCP released updated notes about alpha clones.  The ban on Alpha-multiboxing means we revise back our expectations on low-end minerals in HS

September's economic numbers were released this week.  And though we got a sneak-peek in our o7 Show Market Brief, having the real numbers released to the public gives us a chance to really review the state of the EVE economy.

I'm going to break from formula this month.  Where previously I've tried to explain the technicals, I would rather take this chance as a primer for the fall/winter seasons with all the juicy features on the horizon.

What's Not In The Report

Sadly, the economic numbers were cut just before some of the biggest news was released.  Though we can see some ripples thanks to Alpha Clones, and some effects in the mineral markets thanks to a barge rebalance, we won't see the waves from the Mining Booster devblog.

Before we pick apart the month-gone-by, I think it's incredibly important to send out some forecasts about minerals:
  • High-end minerals are going to crash thanks to the Rorqual changes
    • 6 exhumer-grade mining drones and a invulnerability button will significantly increase nullsec yields
  • Low-end minerals are going down thanks to Alpha Clones
    • Alpha clones in HS will be very close to "mined minerals are free".  Though total yields should not increase dramatically, costs/risks will fall.
Now, "crash" is a pretty strong term to bandy about, but there will be some very significant moves in all the materials thanks to November's changes.  So much so, that I'd be hard pressed to hold stockpiles in any minerals personally.  Isotopes are a less risky prospect, but the Engineering Arrays could cut POS fuel consumption more than fleet-booster charges will raise it.

Also, if you are the tinfoil-chewing type... Those megacyte volumes pre-devblog sure look suspicious

What Do You See

I said in last month's report that there were some troubling headwinds.  Values were okay, but month-to-month rates were very weak even for the end of summer.  With September's report out, things are looking much better.

Both Net Trade and ISK velocity plots are looking healthy once again.  Ship trade has crossed back over the 1T mark, and minerals have taken a sharp bump thanks to the barge rebalance.  Also, with PLEX about to cross 1.2B, it's interesting to see the net trade values aren't quite matching the slope, pointing to a speculation bubble.

The specifics of ISK velocity are still a little lower than I'd like to see, but with trends pointing positive (and the 30d skew on the calculation) I'm reasonably happy to see EVE warming up for the winter.

Lastly, looking over the PVP numbers, I think it's interesting to see a bump in value destroyed without the kill counts really moving up.  We have seen in past events (Opportunities, Bloody Harvest, The Hunt, etc) where pilots were trafficked in to more combat, and the Purity of the Throne event does not seem to be driving the same activity levels.

Other Signals

The sink/faucet graphs are starting to look better too.  Seeing Active ISK Delta (ISK leaving due to inactive accounts) shrink is heartening.  That's going to be one hell of a statistic to watch in the November report once Alphas release.

And I'm loving this Top5 plot of the sinks/faucets.  Interesting to see things rise and fall with the higher resolution.  The bounty levels post WWB are extremely interesting (would like to see a mission vs rat breakdown).  With levels climbing that fast, I wouldn't be surprised to hear of nerfs/rebalances some time in the next 6mo.

Last but not least, the player vs NPC breakdowns of fees now with citadels is a welcome addition, and we will be looking in to tracking this as a trend in the future.


Though my August outlook was cautiously pessimistic, September has the game back on a good track.  October/November's numbers are going to be the real blockbusters to watch and I hope everyone has put in their EVE Vegas bets.  There's still a lot of upset that can play out between now and November, when Alphas launch.  Nothing was particularly surprising in September's numbers, but the new charts are a welcome addition.

Friday, September 23, 2016

ProsperWarehouse - Building Less-Bad Python Code

EVE Prosper is first and foremost a data science project.  And though hack-and-slash has got us this far, we need to consider a proper design/environment if we want to actually expand coverage rather than just chase R/CREST/SQL bugs.

There has been some work moving Prosper to a v2 codebase (follow the new github projects here) but ProsperWarehouse is a big step toward that design.  This interface should allow us to open up a whole new field of projects, so it's critical nail this design on the first-pass before moving on.

What The Hell Is This Even
Building a Database Abstraction Layer (DAL).  

Up to now we have used ODBC, but there are some issues with cross-platform deployment, and database-specific weirdness that have caused issues: such as ARM and MacOS support being painful.  Furthermore, relying only on ODBC means we aren't able to integrate non-SQL sources like MongoDB or Influx into our stack without rewriting huge chunks of code.  Lastly, we have relied on raw-SQL and string-hacks sprinkled all over the original codebase, making updates a nightmare.

There are two goals of this project:
  1. Reduce complexity for other apps by giving standardized get/put methods.
  2. Allow easier conversion of datastore technologies.  Change connection without changing behavior
By adopting Pandas as the actual data-transporter, this means everything can talk the same talk and move data around with very little effort.  Though some complexity will come from cramming noSQL style data into traditional dataframes, that complexity can be abstracted under the hood and always yield the same structures when prompted.

How Does It Work?
The Magic of Abstract Methods

I've never been a great object-oriented developer, and I've been especially weak with parent/children relationships.  Recent projects at work have taught me some better tenants of API design and implementation, and I wanted to apply those lessons somewhere personal.  

Database Layer

Holds generic information about the connection; esentially the bulk of the API skeleton.  Whatever Database() defines will need to be filled in by its children.  This container doesn't do much work, but acts as the structure for the whole project under the hood.

Technology Layer

Right now, that's only SQLTable(), but this is designed to hold/init all the technology-specific weirdness.  Connections, query lingo, test infrastructure, configurations.  This is supposed to be interchangeable so you could pull out the SQLTable and replace it with a MongoDB- or Influx-specific structure.  This isn't 100% foolproof with some of the test hooks the way they are built in right now, but by standardizing input/output, conversion shouldn't be a catastrophe.

Datasource Layer

A connection-per-resource is the goal going forward.  This means we give up JOIN functionality inside SQL, but gain an easier to manage resource that can be abstracted.  All of the validation, connection setup/testing, and any special-snowflake modifications go to this layer.  Also, because these have been broken out into their own py files, debug tests can be built into __main__ as a way for humans to actually fix problems without having to rely on shoddy debug/logging.

This adds a lot of overhead for initializing a new datasource.  In return for that effort we get the ability to test/use/change those connections as needed rather than going up a layer and fixing everything that connected to that source.  It's not free, but should be a cost-benefit for faster development down the line.

Importlib Magic

The real heavy lifter for the project isn't just the API object design, but a helper that turns an ugly set of imports/inits into a far simpler fetch_data_source() call.  I would really like to dedicate a blog to this, but TL;DR: importlib lets us interact with structures more like function-pointers.  This was useful for a work project because we could execute modules by string rather than using a "" structure that would need to import/execute every module in-sequence.  This should make it so you just have to import one module and get all the dependent structure automagically.

Without importlib, every datasource would have to be imported like:

Instead now it can look like

A small change, but it should clean up overhead and allow for more sources to be loaded more easily.  Also, this does mean you could fork the repo and build your own table_config path without going crazy trying to path everything.

A Lot Of Work For What Exactly?

The point is to simplify access into the databases.  With a unified design there, we can very easily lay the groundwork for a Quandl-like REST API.  Also, with the query logic simplified/unified, writing direct apps to both fetch/process the data go from 100+ lines of SQL to 2-3 lines of connection.  

By abstracting a painful piece of the puzzle, this should make collaboration easier.  This also buys us the ability to use a local-only dummy sources for testing without production data, so collaborators can run in a "headless mode".  Though I doubt I will get much assistance on updating the Warehouse code, it's a price worth paying to solve some of the more tedious issues like new cron scripts or REST API design with less arduous SQL-injection risk/test.

Monday, September 12, 2016

Fantasy Reflects Reality - August Economic Report

Thanks CCP Quant for releasing the stats AFTER the latest Prosper episode.  Monthly Economic Report - August 2016

Though there isn't anything particularly bad in this month's numbers, it didn't really live up to my expectations outlined in last month's summary.

Tell Me What You See

It's very "second verse, same as the first" looking from July into August.  A lot of the bulk stats look very good.  Net trade and PVP rates are staying steady and moving as-expected ahead of the YC118.8 release with its rebalance to mining.

Looking back at our favorite pairing, PLEX and ISK velocity, things looks good.  We're finally back over the 1B mark, and trending positive. 

PLEX is going to be extremely interesting in the coming weeks thanks to Alpha Clones.  Though I believe most of the positive and negative trends wash eachother out, I think there are some big changes in store for other trends outside of PLEX.  Specifically if more people are logged in and interacting with the game, even with the handicapped-clones, those could put some measurable pressure on mineral consumption and ISK velocities.

Also, most of the discussions I've seen around Alpha Clones center around "free ISK" and though the effects won't be zero (esp for skill trading... free baseclones), I think the pain of exploiting Alphas will tamp down most of the worst worries.  Lastly, we wouldn't be getting the F2P program if Team Security weren't up to sniffing out illicit activity, so I am not overly worried about massive botting rings.

Troubling Headwinds

What has me worried in the short term isn't so much the levels.  Absolute readings from all indicators are looking good.  But looking at the month-to-month rates have me worried.  Looking at the wallet statistics, I'm happy with the total ISK, I'm happy with the sinks/faucets, but I'm not happy about the rate of wallet growth or ISK velocity.  

I expected after WWB+Citadel that players would be able to recoup their lost wealth and start making roads toward regaining normal.  And though the sink/faucet chart says activity is returning to normal, the wallet status graph says total ISK out there to work with is diminished.  The trend isn't reason to raise alarm, but I will be watching these stats going into the winter.

Drawing Conclusions

I'm a big fan of Marketplace (and if I didn't have to work for a living, I'd produce those kinds of stories for EVE).  And if you follow their Friday Roundup, a recent theme with the IRL economic numbers are "it's good... but...".  I have a similar feeling about this month's report; I expected trends to start pointing upward into the fall, but we're just seeing flatness.  We also aren't seeing any fallout +/- from No Man's Sky, which is just a little weird given the bad press post-launch, but high engagement in a scifi property tangentially linked to EVE; I was anticipating some conversion to come back.  

The devs at CCP seem to be happy with the trends, but I remain slightly worried.  Things will most likely be totally fine, but there are some troubling headwinds in the latest numbers to just be wary of.  I fully expect to have more interesting news to report in the September and October numbers.

Friday, August 19, 2016

Switching to Sublime - #DevfleetFriday

This isn't strictly EVE related, but Talk Python To Me has inspired me to post some more dev/meta related content.

To those who have worked with me on code, you'll know at least two things:

  1. I'm a total luddite when it comes to adding helpful tools to my belt (IDE's specifically)
  2. I live and work in Windows when I can
But my new job has me working in Mac and Unix far more often, so my favorite editor Notepad++ is out.  After touring editors and IDEs for a replacement, I have settled on my new home: Sublime 

Sublime New World

"Why Sublime?" was a pretty easy question for me to answer: very cross-platform, and a deep utility library.  In fact, I've pointed my configs at dropbox so I can easily work in the same Sublime across machines.  Also, the cross-language formatting profiles are pretty slick, and was able to get things working the way I wanted without too much pain.

But Sublime really wins with its Package Control.  Nearly anything you would want can be added to the editor in just a couple commands.  And by-and-large, they're easy to set up and use right out of the box.  Also, many of the packages I've dug into are mostly python, so it's been easy to fix small bugs.

Personally, SublimeLinter has been the best thing to happen to my code recently.  Though it took some effort to get working with python3 on the Mac, having the tattle-tale highlights for bad code and bad practices has me writing far more consistent code.  Writing a .pylintrc file is a little obnoxious, and it doesn't validate virtualenv packages (only ones installed in main site-packages), once it's configured it's a real godsend for keeping my code in line.

My one knock against the platform is the need to memorize a large number of shortcuts that aren't inherently obvious.  There are some really slick tricks in the arsenal, but it feels very VIMy to have them handy

Things I Miss From N++

Search Highlighting

N++ has this amazing multi-color highlighting tool that makes traversing large or complicated code blocks easy.  Word Highlight is an okay replacement, but it doesn't do multi-highlight the way I'd like.  

Project Searching

Another very slick N++ feature is its extended search.  Able to quickly see results, contexts, and previous searches in a docked pane was another useful tool I miss having.  Sublime has an extended search, but it pops open in a new document, and doesn't easily fold the way N++ does.

Multi-Pane Interface

This is a total nitpick.  Sublime absolutely does have multi-pane views, and they are actually a step up in the aggregate.  But my one complaint is duplicating a file isn't really obvious.  The "New View Into File" command isn't mapped, and I'd rather r-click a tab and send to pane.

Free or Fee?

My one complaint about Sublime is its licensing.  Though it has a winrar-type "free forever*" mode, it complains semi-randomly at save-time to purchase a license.  At $70, I think the fee is a little steep given how much competition is out there, and its key method (RSA hasn?) is not super intuitive.  

I'm not at all against paying for a thing, but recently many enterprise services have really stepped up their game and spoiled me with their set-and-forget memberships.  Services like XSplit and Adobe just work, and though I pay pretty handsomely for the memberships in the long run, I'd almost rather buy Sublime through a Patreon model.  At the absolute least, I would like an account auth primary key, even if the current key method works as an offline backup.

Monday, August 8, 2016

The Slow Summer - July Economic Report

It's been a busy summer, despite the hiatus.  The latest Economic Report numbers were particularly weak, and I was considering skipping the month.  But MarketsForISK has been publishing some serious articles and Delonewolf over at EVE Talk posted a review.

Though my fellow pundits took some serious dives into the data, I'd like to counterpoint with a more brisk review.  Be sure to check them out if you want more depth, but let's take a more general look at the stats.

Tell Me What You See

Ohboy, though last month's review was largely positive, thanks to "better than expected" activity metrics from the Serpentis event, July crashed down hard.  The month-to-month sinks and faucets chart was particularly troubling.

Though specific ISK sink/faucet numbers are in-line with the expected baseline, the Active ISK Delta (money leaving through inactive accounts) is worrying.  June's retraction was expected (WWB + Citadel) but July keeping up the trend is what concerns me.  Pair this with my favorite stat, ISK Velocity, and we're seeing a much harder retraction than I originally expected.

With the latest Blog Banter stirring the EVE Is Dying pot, these numbers could validate those looking to catastrophize.  I would not be so hasty to eulogize though.

Finding The Light

I don't think the numbers are all bad.  Looking at the net-trade and PVP stats, things are still pretty positive.  Are they breaking any records?  No.  But the activity is high enough to to be "normal" without having to panic.

NOTE: August dip due to database issue

Most market watchers have focused on the month-to-month net trade statistics (down 10-15% each month), but I've avoided them because I think they're a bit of a red herring.  For one, Feb-May numbers are much higher-than-average due to a series of effects all running together; so cooling should be expected.  Secondly, I think just talking about total-trade isn't as useful as splitting it up.  My analysis chops up the RMT markets (which make up a significant portion of the pie) and let us focus on the pieces.  This way we can see how each is moving to color the whole picture.

Material trade continues to be a hot market.  Those that are active in the game are still getting their content.  Also, as I've been saying since the last o7 show, it's an excellent time to be generating cash.  PLEX prices have only just recovered to the 1B mark (thanks to the AT auction).  The slump in the ship trade has me worried, but looking at the PVP statistics, it's hard to figure out what exactly is going on with PVP stats staying even while ships traded falls.

Lastly, we're still not quite seeing the cash-recovery I was expecting though, so there is still a lot of work left to be done to get back to truly normal levels.

Drawing Conclusions

It's easy to catastrophize in the summer.  Numbers tend to slump most at the end of July, campaigns slow, and CCP's news crawls through July/August due to vacation time.  I still believe there's enough on the plate this fall to be excited about, that as long as people don't get too bitter, there will be content to come back to once vacations end.

Looking externally, No Man's Sky is probably going to make the August numbers particularly bad.  Though, I do expect it to have a positive effect in the longer term, reigniting the hard-scifi spark that only a few games can, and perhaps bringing some contingent back for nostalgia.

If I may dip into Blog Banter territory and editorialize: it's a terrible time for picking out trends.  With the seasonal ebb and flow is at it's lowest point, drawing a line between June/July numbers would be Fox News grade cherry picking (o/ Sion).  Though I personally share a lot of Sugar Kyle's feelings of IRL vs EVE, and have been drifting more and more away from active play into a devfleet/metagame kind of role; like Jonny Pew, I just cannot drop the game entirely.  Is EVE going into a new chapter?  Absolutely.  Dying?  MMO's are dying, but I don't think EVE is doomed yet.

Wednesday, July 13, 2016

Beating The Heat - June Econ Report

CCP Quant continues to deliver the economic data.  June data released last week, and though summer is traditionally quiet, let's see if the data bears that out.  We did release our own market summary for the o7 show, but Quant's numbers released a good week after that show

ISK Velocity

As I said in last month's review, ISK velocity is the first stat I jump to.  I have this hope that ISK velocity will be useful in building better PLEX forecasts, and it's a good market activity metric to pair against PVP numbers.  Now with the benefit of hindsight, it's a little easier to draw the correlation between ISK velocity and PLEX direction.  With things cooling to a new normal level, I'm looking forward to tempering expectations a little better going forward.

When it comes to PLEX's record slide over the spring, it's useful to picture ISK velocity and PLEX prices together.  February had skill trading release, March/April had World War Bee, May had Citadels.  In this historic period of cash demand, PLEX (like gold) acts as an easy way to get at that liquidity.  With big door-busting features calmed down for the summer, I'm happy to see ISK velocity staying strong (~0.7) vs pre-skill-trading levels.

Small Note for the stats nerds: Quant's report uses a bi-directional 30d moving average to calculate ISK velocity.  I would rather use one that only looks backwards.  Will probably tweak the stat slightly going forward, which will take us out of alignment with Quant's official charts.

When it comes to activity statistics, I'm actually surprised how well June did in aggregate.  Though we're seeing a general cooling, we're actually above the points I originally spitballed.  Specifically, the slight uptick in value destroyed is interesting.  I'm not ready to pin this entirely on the new event/opportunity system, but these are positive first metrics for a contentious feature.

Citadel Math

Though the general statistics look good, Citadels are weird.  We can't yet track them in our stats (though recent updates have cleared up the API blindspot) and a wild west of bug-or-feature has made it hard to get a solid hand around Citadels in the long term.

Rhivre has been the authority when it comes to citadels.  Specifically, she brought up that the June Faucet/Sink graph looked particularly light.  Quant has responded that Citadel data should be in the report.

The sinks retracted a lot more than many originally expected.  Also, the big dip in Active ISK Delta (money leaving the system because of account lapse) is mildly troubling.  Though April/May proved to be record setting in terms of ISK sinks, June returns us back to the ~45T level.  Half because blueprint outlays (citadels) have tapered off, and half because a chunk of broker fees are now going to players in Citadels rather than being properly destroyed.  

Citadels remain a big topic in many market channels.  Specific recent highlights are things like a 0% fee Citadel dropping near Jita, and Hek not being in the citadel exclusion list.  Also, though there are some big bugs out there (Citadel timers are immune to TiDi), the strategic value of these structures is coming into focus.  We stand by the current advice that summer is the time to lock in positions.  There are a lot of set pieces that should make the fall very interesting when activity picks up.

The Rest Of The Summer

Coming into late July/August, things should be very quiet.  It's a heavy vacation season, and CCP has historically been very quiet in August.  General activity is staying well stoked given the traditional retraction, and it will be up to CCP to keep that fire stoked with activities.  Again, it's my strong advice that this is the time to grind up that cash, stash away those cheap PLEX, and generally recuperate ahead of the fall.  Many signals are pointing to an interesting season coming up and Alliance Tournament and EVE Vegas should get the hype trains moving.

Meanwhile, at ProsperHQ, we're still chugging away on our tool revamp.  Work starts in earnest this week on our data backend, and goals to get you all access to our data continues roughly on schedule.  Once a few more pieces come together, expect a "state of Prosper" blog in the next few weeks! 

Thursday, June 9, 2016

Reading the Tea Leaves - May Econ Report

Props to CCP Quant sticking to a pretty reliable reporting schedule; May's Monthly Economic Report has been released!  I know the report can be a little sparse for the general reader, so let's walk through it.  Also, if you're interested in the specific stats, go check out Quant's EVE Vegas talk:

What does Lockefox Look For In These Reports?

re-crunched version from original
I like to jump straight to ISK velocity first thing. It has quickly become my favorite stat as an effective short-hand for "heat" or "energy" in the economic system. Also, when paired against PLEX, it helps complete the picture of cash-ISK supply/demand; proving out the demand side of the equation.

Personally, I've found the period since YC118.2 launched (skill trading) constantly surprising. With one feature, ISK velocities were doubled, and though it would be easy to think that it was just a flash, indicators have remained incredibly strong for several months. I continue to expect precipitous falls in each economic report, and I am surprised every month by just how much activity is out there.

To be an armchair-developer for a moment: ISK velocity stands as the primary indicator I would grade releases and development progress on. Where PVP activity is a decent waterline for some balance changes, World War Bee proves that can be a fickle line to balance against. PCU numbers are another popular open metric, but tend to be extremely noisy and seasonal, and less useful in the long run due to larger trends. ISK Velocity shows more directly cluster-wide activity and patch-performance.

Furthermore, it's a useful metric to explain some of the unprecedented PLEX performance since the start of the year. Looking at total cash supply, it’s very strange to see a protracted period of cash-decline. These coffers will need to be replaced, and though prices may be weak right now, PLEX should rise as balance sheets move back into the black.

What's Special About May's Report

The second piece of the econ reports I jump to is the faucet/sink accounting. A lot of armchair-developers like to wield faucet/sink mechanics haphazardly in their F&I ravings, and disregard the complexity of monetary policy. And though I have my own opinions about some faucets, CCP Quant's reports show balances moving in good directions while using sneakier and less mechanically direct methods than I would have originally considered.

April and May's reports show a couple of interesting trends.

First, as Quant pointed out in April's report, it's the first time we've really seen a net-negative balance sheet here; and May continues that trend. And second, the the amount of cash in the Active ISK Delta is particularly high given the launch of the brave-new-world of Citadels. This is probably due to some amount of summer slump, and a healthy amount of fallout from WWB winding down. I'll be interested to see just where Active ISK Delta goes in the longer term.

It’s tempting to read the nearly 2 Trillion ISK shortfall as a bad omen, but if you zoom in on the production numbers, you'll see where all that ISK went: Citadels

It's hard to talk about how much impact Citadels will have in the long run yet. I think we need one more month of statistics before we can really see the entire citadel picture solidify. Pair that with the blind-spot the CREST/XML API's have for tracking citadels, and it is extremely difficult to do independent analysis of their rollout.

Other Trends

I find it interesting pairing the general kill statistics vs ISK velocity. We see a weak correlation during the YC118.3 spike around WWB, but ISK velocities remained strong until the end of May despite a retraction of PVP activity. Though I expect PVP numbers to stay weak over the summer, the general activity statistics should remain strong.

If I were to peer into my crystal ball for the summer, I would hope we're heading toward a period of stability. Skill Trading, WWB, and Citadels moved so much liquid ISK around, and destroyed a good amount of that cash and material, that I would think many need a period of reprieve to recover from the hangover. Also, the destruction rate for citadels is higher than I expected, so we should still see a somewhat higher clip for material consumption.

I originally pointed at PLEX and figured we would start slowly swinging the balance back, as people move to refill their coffers, but sales and general instability have dropped the price again from 900M to 850M. I do expect a hot fall/winter after this summer, so it would be an excellent chance to recuperate and prepare for new changes and territory battles in the most valuable pieces of space.

Tuesday, February 16, 2016

Skill Point Trading - Follow Up

I posted two weeks ago a forecast on the brainmeat market, and I wanted to review those predictions and talk about where I see the market, as well as some hits and misses.

Extractor AUR Prices

Though I am somewhat upset about the specifics about the AUR/$/PLEX prices, we hit the targets on Extractors right on the head.  I would have preferred if injectors were closer to 5/PLEX rather than the 4/PLEX we hit, but especially with generous sales directly during February I think the extractor market is exactly where it should be considering.

I was a little fuzzy after the specific packages were announced whether we'd hit closer to the 800AUR or 900AUR levels, but it looks like an 800AUR equivalency with PLEX is a decent place to peg the price to.  Now, it's worth mentioning that the PLEX conversion rate and the $->AUR rate are not the same dollar-for-dollar.  Especially under the current sale, directly buying AUR results in a bonus 1000AUR vs PLEX.

I do find it frustrating as a customer that my $20 or $100 can yield such wildly different returns, and that those returns are not all strictly transmutable.  But this is a core design of the AUR system where it's hard to go both ways between ISK<->AUR instead having to go through middle items that may have wildly different returns.  I'd very much rather see a more direct path between ISK<->AUR<->PLEX so that the $->ISK rates were simple for customers.  But I seriously doubt CCP and I will ever see eye-to-eye on this case.

Injector Prices

Injectors have me very worried.  In the entire lead up, I had expected that ISK/SP would be discounted vs the PLEX rate.  This would provide a negative-feedback-loop vs PLEX and would preserve the balance between Character Bazaar and Injectors.  Even CCP Quant's Bazaar Analysis pointed to this discount trend.

This positive valuation has me very concerned.  Simply put: this makes EVE free-to-play if you sell off your SP.  I think this leads to a lot of instability, since it will drive a positive-feedback-loop on PLEX demand without any sort of negative counterbalance to keep the system in balance.  Left unchecked, we could see a situation where MPCT + Extractors on all 3 slots of an account could actually net a positive return.  Whereas, if ISK/SP is discounted vs the PLEX-rate, it gives deep discounts to utility characters without making them free outright.

Now, over the course of writing this, the injector market has dipped a couple times under that parity line.  And I will be keeping a very close eye on the market over the coming days.  This heat might just be a factor of novelty, and a steady state may take a couple weeks to settle down.

Other Markets

Other markets are actually kind of hilarious.  I expected people to want to trade in Injectors/Extractors, but I didn't expect large markets to liquidate to change positions.  PLEX was particularly interesting because the volumes traded to jump on the AUR bandwagon drove actual traded volumes crazy minimal impact to the total orders on the market.

With net trade up so high, I expect there to be a lot of good trading to jump in on for the next week outside of the SP trade, with an opportunity to jump on the Injector/Extractor market coming by the end of the month.  

Though this hasn't stopped some people from going completely nutso:
Speaking as a pilot with a 200M+ main, and over 500M SP between all his characters, I don't think there's going to be many drives for "perfect" characters over the 200M mark.  There is glory in being first or second, but there's precious little utility in having a truly perfect character.  It will be interesting to hear CCP Quant's official report, but I expect that most consumers are in the first penalty bracket from 5-50M SP once we get to the 30d mark.  

Thursday, February 4, 2016

How I Data Science - Hunting For Trends

Long time friend Blake at has been pumping out some really exciting work around NPC-kill rates.  He recently poked me about taking that raw data forward to something with more teeth, and after futzing with it for about an hour, came out with some interesting data.

His inquiry reminded me of a common question I receive: How do I get into data science?  So, this blog is going to be a bit more long/technical than the recent fare.  We're going to walk step-by-step through the investigation process and I'll try to illustrate what I see as we go along.  The readouts were generated using JMP, only because it's faster to use than R.  This entire process can be done in R, and I can revisit with more specific R samples if its requested.

Let's take a look: