1. Introduction

This study examines the sell prices of bugs and fish in Animal Crossing: New Horizons from an econometrics standpoint. Delving into the correlations between relevant factors and sell prices will likely fascinate current players and may draw the interest of individuals who have yet to try to game. Further, developing a deeper understanding of the sell prices of bugs and fish has the capacity to improve strategy and gameplay. Players could utilize this information to catch and sell more efficiently.

\(Source: animalcrossing.fandom.com\)

Background

Animal Crossing is a video game series developed by Nintendo and available exclusively on Nintendo devices. This highly popular social simulation game involves the user playing a human character that moves to a village populated with humanlike animal characters. Animal Crossing: New Horizons allows players to create and customize an island community.

Nintendo released Animal Crossing: New Horizons on March 20, 2020. According to Nintendo’s financial reports, by December 31, 2020, the game sold over 31.18 million copies, becoming the best-selling Nintendo Switch game of the year and the second-best-selling Nintendo Switch game of all time. Further, the special release Nintendo Switch Animal Crossing New Horizons Edition system increased demand for the game. Personally, this game provided much-needed relief during the beginning of the COVID-19 pandemic. I own the special edition console as well as the game, and curling up on the couch to transform my island has been an important distraction to help me through this wild time period. I have no empirical evidence to demonstrate that others feel this way (although 31.18 million copies sold is a good start), but speaking anecdotally, I am confident that I am not the only one.

\(Source: gamestop.com\)

Game Objectives

The game objectives of Animal Crossing: New Horizons (ACNH) are fairly open-ended. Relaxation, creativity, and customizing the island are typical intentions, but players can focus their attention on whatever they please. Players may wish to pay off the debt of their mortgage as well as upgrade their house. These costs are paid with the game’s currency called Bells. Bells are crucial for many aspects of the game, like purchasing clothing and accessories, furniture and decorations, and upgrades to the island.

To earn Bells, players can partake in a variety of activities. Users can catch and sell a variety of bugs and aquatic creatures, find and sell fossils, plant money trees, sell inventory items, or participate in the Stalk Market, a gambling system of buying and selling turnips.

Bugs

Catching and selling bugs is an important way to accrue Bells In order to catch a bug, a net must be either DIY crafted or purchased. Once a net is obtained, the player must swing the net to capture any bugs- this may take practice. Then, the bugs can be sold to Timmy and Tommy at Nook’s Cranny. Players can also wait for the character Flick to visit the island, as he will buy bugs for 1.5 times the standard selling price. Beyond selling, bugs can also be donated to the museum or displayed in a player’s home. It is important to note that these creatures are not killed, but sold or displayed alive.

\(Source: acnh.co\)

Fish

Catching and selling fish is another important source of earning Bells. To catch a fish, players must obtain a fishing rod through DIY crafting or purchasing. Once a fishing rod is obtained, the player can cast the line to land in front of a fish shadow. A fish may nibble, and if it latches on, then the player must reel it in to catch the fish. Fish tend to be more lucrative than bugs. The fish can be sold to Timmy and Tommy at Nook’s Cranny. Players can also wait for the character C.J. to visit the island, as he will buy bugs for 1.5 times the standard selling price. Beyond selling, fish can also be donated to the museum or placed in a player’s house. It is important to note that fish are not killed, but sold or displayed alive.

\(Source: animalcrossing.fandom.com\)

2. Data and Summary Statistics

Data and Sources

I used a variety of sources to compile the data I utilized. The primary dataset, a comprehensive item catalog for Animal Crossing: New Horizons, was found on the reputable data science platform Kaggle (kaggle.com). I used the item schedule from Kaggle to manually enter the number of months a species is available, hours per day a species can be found during available months, and the total amount of hours per year a species can be found. I gathered and manually entered species rarity from the Japanese company GameWith, Inc. (through gamewith.net).

Variables

The variables are as listed:

Sell: The price the species sells for on a regular basis

Rarity: The species’s rarity, either Very Common, Common, Uncommon, or Rare

Months: Number of months per year the species is available to spawn

Hours: Number of hours per day the species is available (on an available month)

Yearly Hours: total number of hours in a year the species is available

Spawn Rates: How frequently the species appears (for fish, this number is an average).

Catches to Unlock: The total amount (total lifetime catches) of either fish or bugs a player must catch before a particular species is able to spawn on their island.

Hypothesis Development

I strongly think that there will be a trend of rarer species (on average) having higher sell prices, which is fairly self explanatory. I think that possibly the more time a species is available, the less the sell price will be. However, time may not be that relevant of a factor. I think there will be a negative correlation between spawn rates and sell price. Finally, I think the amount of catches to unlock will positively correlate with sell price, as a person must have more experience and work harder to find that item, so a higher price would make sense.

Rarity

Below are two graphs depicting number of species by rarity. In plot 1, rarity for bugs appears to go in an intuitive order. The rarity group “Very Common” holds the largest amount of species, “Common” holds the second most, “Uncommon” holds the second least, and “Rare” holds the smallest amount of species. In plot 2, for bugs, rarity behaves differently. The rarity group “Common” has the largest number of species, but “Uncommon” is a close second; “Very Common” has significantly less species but “Rare” does hold the smallest amount of species. This may seem confusing, but rarity is an individual label based on the presence of that species rather than how many different species are in that category.

plot1 = ggplot(bug, aes(x = fct_infreq(rarity))) +
        geom_bar(aes(fill = rare))
  
p1 = plot1 +   
     scale_fill_manual(values =  c("skyblue", "royalblue", "blue", "navy")) +
     labs(x="Rarity", y="Number of Species",
          title = "Plot 1: Number of Bug Species by Rarity") +
     theme(plot.title = element_text(hjust = 0.5, 
                                     size = 14, 
                                     margin = margin(t = 10, b = 10)),
           axis.text.x = element_text(color = "black", 
                                      size = 10, 
                                      margin = margin(t = 5, b = 5)),
           axis.text.y = element_text(color = "black", 
                                      size = 10,
                                      margin = margin(r = 5, l = 5)),
           axis.title = element_text(size = 13,
                                      margin = margin(t = 12, r = 12, b = 12, l = 12)),
           legend.position = "none") 
p1

plot2 = ggplot(fish, aes(x = fct_infreq(rarity))) +
        geom_bar(aes(fill = rare))
 
p2 = plot2 +
     scale_x_discrete(limits = c("Very Common", "Common", "Uncommon", "Rare")) +
     scale_fill_manual(values =  c("skyblue", "royalblue", "blue", "navy")) +
     labs(x="Rarity", y="Number of Species",
          title = "Plot 2: Number of Fish Species by Rarity") +
     theme(plot.title = element_text(hjust = 0.5, 
                                     size = 14, 
                                     margin = margin(t = 10, b = 10)),
           axis.text.x = element_text(color = "black", 
                                      size = 10, 
                                      margin = margin(t = 5, b = 5)),
           axis.text.y = element_text(color = "black", 
                                      size = 10,
                                      margin = margin(r = 5, l = 5)),
           axis.title = element_text(size = 13,
                                     margin = margin(t = 12, r = 12, b = 12, l = 12)),
           legend.position = "none") 
p2

After looking at species frequency and rarity, I’m interested in taking a look at sell prices by rarity. To do this, I’m going to utilize a boxplot. In a boxplot, any dots represent outliers, lines outside the box represent minimum (left) and maximum (right), and the box itself represents the first quartile (left edge of box), the median (line in the middle of box), and the third quartile (right edge of box).

For both plots 3 and 4, the distribution is clearly not very uniform, and the data is not ideal, but there does appear to consistently be a sell price increase when a species is more rare.

plot3 = ggplot(bug, aes(Sell, fct_infreq(rarity))) + 
               geom_boxplot(varwidth = T)  
  
p3 = plot3 +
     scale_y_discrete(limits = c("Very Common", "Common", "Uncommon", "Rare")) +
     labs(x="Sell Price", y="Rarity",
          title = "Plot 3: Bug Sell Price by Rarity") +
     theme(panel.background = element_rect(fill="lightcyan"),
           plot.title = element_text(hjust = 0.5, 
                                     size = 14, 
                                     margin = margin(t = 10, b = 10)),
           axis.text.x = element_text(color = "black", 
                                      size = 10, 
                                      margin = margin(t = 5, b = 5)),
           axis.text.y = element_text(color = "black", 
                                      size = 10,
                                      margin = margin(r = 5, l = 5)),
           axis.title = element_text(size = 13,
                                     margin = margin(t = 12, r = 12, b = 12, l = 12)))   
p3

plot4 = ggplot(fish, aes(Sell, as.factor(rarity))) + 
        geom_boxplot(varwidth = T) 

p4 = plot4 +
     scale_y_discrete(limits = c("Very Common", "Common", "Uncommon", "Rare")) +
     labs(x="Sell Price", y="Rarity",
          title = "Plot 4: Fish Sell Price by Rarity") +
     theme(panel.background = element_rect(fill="lightcyan"),
           plot.title = element_text(hjust = 0.5, 
                                     size = 14, 
                                     margin = margin(t = 10, b = 10)),
           axis.text.x = element_text(color = "black", 
                                      size = 10, 
                                      margin = margin(t = 5, b = 5)),
           axis.text.y = element_text(color = "black", 
                                      size = 10,
                                      margin = margin(r = 5, l = 5)),
           axis.title = element_text(size = 13,
                                     margin = margin(t = 12, r = 12, b = 12, l = 12)))
p4

Spawn Rates

I will graphically look at one other variable, spawn rates, before moving on to linear analysis. In plot 5, I removed one outlier to make the graph readable, since one species’ spawn rate was much higher than the rest. For both bugs and fish, it appears that species with lower spawn rates tend to have higher sell prices.

# Plot 5: Bug Spawn Rates vs. Sell Price
plot5 = ggplot(bug, aes(SpawnRates, Sell)) +
               geom_point(aes(color=rarity), size=3, shape=8) 

p5 = plot5 +
     labs(x="Spawn Rates", y="Sell Price",
          title = "Plot 5: Bug Spawn Rates vs. Sell Price") +
     xlim(0,80) +
     theme(panel.background = element_rect(fill="lightcyan"),
           plot.title = element_text(hjust = 0.5, 
                                     size = 14, 
                                     margin = margin(t = 10, b = 10)),
           axis.text.x = element_text(color = "black", 
                                      size = 10, 
                                      margin = margin(t = 5, b = 5)),
           axis.text.y = element_text(color = "black", 
                                      size = 10,
                                      margin = margin(r = 5, l = 5)),
           axis.title = element_text(size = 13,
                                     margin = margin(t = 12, r = 12, b = 12, l = 12)))
p5

# Plot 6: Fish Spawn Rates vs. Sell Price
plot6 = ggplot(fish, aes(Avgspawn, Sell)) + 
        geom_point(aes(color=rarity), size=3, shape=8) 

p6 = plot6 +
     labs(x="Spawn Rates", y="Sell Price",
     title = "Plot 6: Fish Spawn Rates vs. Sell Price") +
     theme(panel.background = element_rect(fill="lightcyan"),
           plot.title = element_text(hjust = 0.5, 
                                     size = 14, 
                                     margin = margin(t = 10, b = 10)),
           axis.text.x = element_text(color = "black", 
                                      size = 10, 
                                      margin = margin(t = 5, b = 5)),
           axis.text.y = element_text(color = "black", 
                                      size = 10,
                                      margin = margin(r = 5, l = 5)),
           axis.title = element_text(size = 13,
                                     margin = margin(t = 12, r = 12, b = 12, l = 12)))

p6

4. Regression Analysis

When is a bug more expensive?

In regressions 1 and 2, the species being rare is positively correlated with the sell price of a bug species; this result is statistically significant at the p<0.01 level. The species being uncommon is positively correlated with the sell price but about half as much as rare; this result is statistically significant at the p<0.05 level in regression 1 and p<0.01 in regression 2. The species being very common is negatively correlated with sell price, and so are months and hours, but none of these results are statistically significant. Catches to unlock is positively correlated with sell price at the p<0.01 in regressions 1 and 3. An increase in spawn rates is negatively correlated with the sell price of a bug species at the p<0.1 level in both regressions 1 and 2. Lastly, yearly hours is positively correlated to a slight degree, but the results are not statistically significant. The standard errors of these regressions are high.

reg1 = lm(data = bug, Sell ~ rarity + CatchestoUnlock + SpawnRates + Months + 
                    Hours + YearlyHours)

reg2 = lm(data = bug, Sell ~ rarity + SpawnRates)

reg3 = lm(data = bug, Sell ~ CatchestoUnlock + Months + Hours + YearlyHours)

stargazer(reg1, reg2, reg3, 
          type = "html",
          title = "Table 1: Regression 1, 2, and 3 Results", 
          dep.var.labels = "Sell Price of a Bug Species", 
          covariate.labels = c("Rare", "Uncommon", "Very Common", "Catches to Unlock", 
                               "Spawn Rates", "Months", "Hours", "Yearly Hours"), 
          omit.stat=c("f", "ser"))
Table 1: Regression 1, 2, and 3 Results
Dependent variable:
Sell Price of a Bug Species
(1) (2) (3)
Rare 2,717.567*** 5,739.179***
(942.805) (1,220.121)
Uncommon 1,316.485** 2,380.576***
(564.050) (770.580)
Very Common -115.162 -628.030
(517.613) (736.553)
Catches to Unlock 59.825*** 86.197***
(9.170) (7.447)
Spawn Rates -15.807* -21.801*
(8.869) (11.161)
Months -170.648 -92.485
(162.060) (168.620)
Hours -94.845 -67.899
(62.714) (66.077)
Yearly Hours 0.149 0.158
(0.295) (0.315)
Constant 3,150.358** 2,137.503*** 1,836.306
(1,228.713) (555.767) (1,116.780)
Observations 80 80 80
R2 0.750 0.451 0.683
Adjusted R2 0.722 0.422 0.666
Note: p<0.1; p<0.05; p<0.01

When is a fish more expensive?

In regressions 5 and 6, the species being rare is positively correlated with the sell price of a fish species; this result is statistically significant at the p<0.01 level. However, in regression 4, rare is negatively correlated with sell price, which does not make sense. The species being uncommon is positively correlated with the sell price; this result is statistically significant at the p<0.05 level in regression 4 and p<0.01 in regression 5 and 6. Neither months available nor the species being very common are statistically significant. Lastly, average spawn rates is negatively correlated with sell price; this result is significant at the p<0.05 level in regression 5 but it is not significant in regression 7. The standard errors of these regressions are high.

reg4 = lm(data = fish, Sell ~ rarity + CatchestoUnlock + Months)

reg5 = lm(data = fish, Sell ~ rarity + Avgspawn)

reg6 = lm(data = fish, Sell ~ rarity + Months)

reg7 = lm(data = fish, Sell ~ CatchestoUnlock + Avgspawn)

stargazer(reg4, reg5, reg6, reg7, 
          type = 'html', 
          title = "Table 2: Regression 4, 5, 6, and 7 Results", 
          dep.var.labels = "Sell Price of a Fish Species", 
          covariate.labels = c("Rare", "Uncommon", "Very Common", "Catches to Unlock", 
                               "Months", "Average Spawn Rates"), 
          omit.stat=c("f", "ser"))
Table 2: Regression 4, 5, 6, and 7 Results
Dependent variable:
Sell Price of a Fish Species
(1) (2) (3) (4)
Rare -807.708 6,652.561*** 7,635.078***
(773.286) (1,172.057) (1,159.413)
Uncommon 1,313.186** 4,337.800*** 4,849.409***
(498.608) (897.416) (924.720)
Very Common -263.102 782.763 -966.689
(526.494) (1,231.048) (1,089.024)
Catches to Unlock 154.067*** 146.792***
(9.760) (8.279)
Months 46.098 56.877
(56.718) (117.732)
Average Spawn Rates -279.841** -70.153
(114.193) (51.998)
Constant 218.657 2,535.546*** 829.545 1,256.420***
(497.274) (817.214) (1,029.160) (407.427)
Observations 80 80 80 80
R2 0.883 0.523 0.487 0.857
Adjusted R2 0.875 0.498 0.460 0.853
Note: p<0.1; p<0.05; p<0.01

5. Conclusion

Overall, the data was not ideal- it could have been much more uniform. However, it did generally hold true that rare items are correlated with higher price. Contrary to my hypothesis, time was statistically relevant to sell price. Spawn rates are negatively correlated with sell price, but the significance is uncertain. Lastly, catches to unlock is highly correlated with sell price and the results are very significant.

Sources

Animal crossing™: New Horizons for the nintendo switch™ system – official site. Animal Crossing series – Official Site. (n.d.). Retrieved November 12, 2021, from https://www.animal-crossing.com/new-horizons/.

Bugs list - prices & location: Animal crossing (ACNH) - gamewith. GameWith. (2021, November). Retrieved November 12, 2021, from https://gamewith.net/animal-crossing-new-horizons/article/show/16347.

Fish guide - prices & shadow list: Animal crossing (ACNH) - gamewith. GameWith. (2021, November). Retrieved November 12, 2021, from https://gamewith.net/animal-crossing-new-horizons/article/show/16346.

Li, J. (2021, June 6). Animal Crossing New Horizons Catalog. Kaggle. Retrieved November 12, 2021, from https://www.kaggle.com/jessicali9530/animal-crossing-new-horizons-nookplaza-dataset/code.

Robinson, P. byA. (2021, March 16). Animal Crossing has broken Nintendo’s first-year sales record in Europe. VGC. Retrieved November 12, 2021, from https://www.videogameschronicle.com/news/animal-crossing-has-broken-nintendos-first-year-sales-record-in-europe/.