Trending November 2023 # Crypto Taxes Made Easy With Cryptiony # Suggested December 2023 # Top 17 Popular

You are reading the article Crypto Taxes Made Easy With Cryptiony updated in November 2023 on the website We hope that the information we have shared is helpful to you. If you find the content interesting and meaningful, please share it with your friends and continue to follow and support us for the latest updates. Suggested December 2023 Crypto Taxes Made Easy With Cryptiony

Web3 is a volatile space with extensive potential wherein a lot of businesses implement its use cases in various ways while trying to keep up with technological progress. As the crypto space is gearing up for mass adoption, a lot of new users join the space. These users need to be educated and made aware of the various crypto-taxing laws set in place around the world. This stands true regardless of whether the trader made profits or losses on their trades, the tax agencies need a record of the trades, and this is where Cryptiony comes to the rescue of its users. 

Recently, the platform launched in the UK and aims to tap into the 4.2 million crypto userbase thereby offering precise calculations and no data gap along with attractive prices. Fast synchronizations with crypto exchanges and blockchains along with experts ready for support also add to the appeal of the platform. 

What is Cryptiony?

The Cryptiony platform works as a crypto tax automation web app that has been designed for tax professionals and individuals making the process of crypto taxing easy and quick. The platform was founded in 2023 and works with the mission of making cryptocurrency tax calculations easy, fast and cheap for everyone alike be it professional traders, beginners, or accountants through the use of automation and encryption processes that make crypto compliance stressless. 

As there is no set standard or protocol for Web3 exchange data, the platform works on integrating with every exchange and blockchain individually. Additionally, as the space is new and all countries are working on their own laws and regulations pertaining to crypto, Cryptiony also faces the challenge of considering them and adapting their solution to them. 

For users who use multiple platforms and blockchains, it can be difficult to track all their assets and the history of their transactions. Adding to that the complex capital gains rules and crypto tax for each of them, users can get overwhelmed and it can seem impossible to keep up with everything without an automated tool. 

Ease of use and affordable pricing 

Users can avail the benefits of Cryptiony in a few simple steps. They just need to create an account with their email address and then they can import and review their transactions, that’s it! They can then generate their tax report and download it instantly.

One of the most distinct features that the platform offers is unbeatable pricing with up to 500 transactions in the UK for free. Cryptiony’s pricing model is based on annual subscription fees where each plan depends upon the number of crypto transactions performed by the user. 


The Cryptiony platform was recognized as the ‘Startup of the year 2023’ during Invest Cuffs 2023, one of Europe’s largest trade fairs that brings together investment market industries like stocks, currencies, real estate, cryptocurrencies, and crowdfunding. It was also a part of the Top 3 winners during the Fintech Summit in Poland and the winner of the Audience Award. During the chúng tôi Meetup, Cryptiony won the Blockchain Innovations Chains pitch competition. 

The platform is headed by Bartosz Milczarek and Krzysztof Dworakowski is the CTO, while Hanna Milczarek is its CMO. Bartosz and Krzysztof are crypto enthusiasts with more than 10 years of experience in banking, forex brokers, and the blockchain industry. Hanna Milczarek on the other hand comes from a corporate background relating to finance and accounting in the IT sector. As mentioned earlier, the Cryptiony platform looks to help users by providing them with tax reports and other complicated calculations that can be time-consuming and cumbersome to deal with. 

The platform’s launch in the UK is key in supporting the users there in calculating the profit/loss that needs to be done for every individual disposal including activities like crypto-to-crypto trades and purchases, not just cashing out crypto for fiat. 

For more information on Cryptiony, please check out their official website.

You're reading Crypto Taxes Made Easy With Cryptiony

R Programming Concepts Made Easy!


How is Type Casting done in R?

Discussing about the Date datatype in R

Understanding the concept of Encoding in R


While the majority of the concepts remain somewhat similar across the various tools and technologies that we learn for data science, there are few concepts special to a particular tool or a language like R , for example. While we are easily able to deal with the “dates” in Excel and SQL , we need to import a module for working on dates in Python and if R is concerned there is a whole new concept of STRP codes that comes in while dealing with dates.

When one is done with learning the basics of R and R Programming which we discussed in this article: Get to know all about the R Language, it is the right time to look at some of the more complicated topics which we will be covering in this article.

Table of Contents

Type Casting in R

Dealing with Dates in R

The Date data type in R

Concept of Encoding in R



Curse of Dimensionality

Label Encoding

One Hot Encoding

Type Casting in R

Does the name ‘Type Casting’ suggest anything about the concept? It does! ‘Type’ refers to the data type and casting refers to the phenomenon of conversion of the data type from one to another. Essentially , Type Casting is the process of changing the data type of an object in R to another data type.

For your reference : Some of the commonly used data types in R are numeric , logical , character etc.

Suppose we have an object “demo” with us having any particular data type. To see this object in the form of another data type say “new_datatype” we write the command as as.new_datatype(demo) and we are done.

Let’s try type casting! a is an object having value as the number 100 hence its class would be numeric.

To display this object a as a character we can write :

And we get the value of numeric object a as a character i.e “100”(Anything in quotes is considered as a character in R)

But if we again check the data type of a it comes out to be “numeric”

Why is this so? We didn’t save our result from the as.character(a) command into any object.

Time for another example! b is an object having a text value ‘ABC’ and hence its class would be character.

To display this object b as a number we can write the command as.numeric(b) but we get an error!

This seems like text in R cannot be converted to numbers. Let’s take another example !

c is an object having a text value ‘500’ and hence its class would be character.

To display this object c as a number we can write the command as.numeric(c) and we get:

This might seem confusing as some text can be converted into numbers while others can’t be but we will be able to clear this out by the end of this section !

The process of type casting obeys some rules : Not every data type can be transformed to another data type. There is a precedence that these data types follow according to which type casting is done.

Considering the most commonly used data types in R : character , numeric and logical , the precedence is as follows !

Here type casting can be done from bottom to top but not vice versa.

For any object generally the class cannot be converted from character to numeric or logical and from numeric to logical.

However there are certain special cases that need to be taken into consideration.

Case 1 : character to numeric

Consider objects a, b and c of character type and try converting to numeric.

Conclusion : This type of conversion is possible only if the data stored in double quotes (i.e the text ) is a number including decimal numbers.

Case 2 : character to logical

Consider objects a, b and c of character type and try converting to numeric.

Works ! 

Conclusion : This type of conversion is possible only if the text is one amongst these – T , F , True , False , TRUE , FALSE

Case 3 : numeric to character

Consider numbers 99 , -99 , 98765432198765

There are no conditions to this one , we can always convert numeric data type to character data type. In Fact any data type can be converted to character.

Case 4 : numeric to logical

Conclusion : For 0 we get FALSE and for any non-zero number we get TRUE.

Case 5 : logical to character

There are no conditions to this one , we can always convert logical data type (i.e TRUE , FALSE) to character data type. In Fact any data type can be converted to character.

Case 6 : logical to numeric

This conversion is always possible. The logical value TRUE is saved as 1 and logical value FALSE is saved as 0.

Dealing with Dates in R

Unlike other data types in R like character , numeric, integer , factor and logical , Date is not a naturally occurring data type instead it is a derived data type.

While in tools like Excel we can easily write the dates like 20/06/2023 and in tools like SQL dates are written as “20/06/2023” , these ways of writing do not work in R.

Let’s try creating such objects in R,

These objects x and y store the following data :

Let’s check their data type ,

None of them is a Date !

The Date Data Type in R

However we can convert these into proper dates using something known as the STRP codes but there is a prerequisite to that , if I want to convert a date into a proper date in R having data type as Date then my date should be of character type. In layman’s language we can convert the strings into dates in R.

Why do we need this process?

To make the computer understand that the characters I am writing in the string (which can be both numbers or alphabets) are actually the date components. For example for the object ‘y’:

We want the computer to understand that 20 means the day number , 06 means the month number and 2023 means the year with the century. For this we need to write some codes and then finally use the as.Date() function !

Some of the STRP codes for your reference are :

Now let’s convert our object y into a date.

Since y is of character data type we are good to go. Now understanding the date components and writing the corresponding codes we get ,

20 : Day Number : %d

06 : Month Number : %m

2023 : Year with Century : %Y

Delimiter : /

Finally use the function as.Date(object_name , format)

For the object y the format is going to be ‘%d/%m/%Y’

And we get our date y_date corresponding to the character object y we had. Trust me this is a date , we can check it !

This is how we can convert any character object having a date into the Date data type. But there is another way to do this by using a third party library/package. In R we have a library called lubridate which contains a lot of functions that help us work with dates. Let’s try this out.

Using Lubridate

Creating an object demo with the data ‘01/23/18’ in it and using the function mdy defined in the lubridate library to type cast the character data type of demo into Date data type. (Don’t forget to install and further load the library first).

This is how we get the string ‘01/23/18’ as a date.

Concept of Encoding in R

What is our motive for learning R? To perform statistical analysis or run machine learning algorithms could be an answer. To run machine learning algorithms the data needs to be processed and we need to convert the data into the required format which is numeric i.e. in the form of numbers so that we only put the numeric variables into our model.

Don’t worry , we won’t be converting all the categorical variables into numeric variables because there is no way to do that. Instead we will give the categorical variables a numeric representation and this is what is called ENCODING.

This process of encoding can be categorized into 2 parts :

Label Encoding : For the Ordinal Categorical variables i.e. the variables in which the categories can be ordered.

One Hot Encoding : For the Nominal Categorical variables i.e. the variables where the categories are at the same level and cannot be ordered.

But before moving forward with the actual encoding part in R one needs to be familiar with the concepts of binning , multicollinearity and The Curse of Dimensionality which we will be referring to in the process of encoding mainly in one-hot encoding.


It is the process of grouping the variables in a data set on the basis of some criteria into bins so as to reduce the dimensionality. Binning can be done on both the categorical and the numerical variables. In the case of a numerical variable, values falling in a certain range can be binned together into categories and this is how we convert a numerical variable to a categorical variable. In the case of a categorical variable the numbers of categories can be reduced by clubbing together some of the existing categories.


As per our requirement to perform encoding in R just know that ‘A derived variable in a dataset causes multicollinearity’ and you will be good to go. If I had to give an example I would like to go with the profit calculating example , if our data has all the 3 variables cost , revenue and profit then since profit = revenue – cost so profit causes multicollinearity.

The Curse of Dimensionality

So we are all set up to learn about encoding now. Let’s discuss each of them one by one :

Label Encoding

As previously mentioned , label encoding is done for giving the ordinal categorical variables a numeric representation.

The ordinal categorical variables have a property that we can actually order the categories(values) within the variable (column of a dataset) and according to that well defined order we provide natural numbers corresponding to them.

Let us take a dataset and actually perform label encoding on that ! Consider the following dataframe having the data of employees at an organization:

Let’s read the dataset as a data frame in R,

Identify the ordinal variable in the employee dataset? Yes, “Designation”

We can easily encode this variable assigning values in ascending order of designation as :

Intern – 1

Analyst – 2

Senior Analyst – 3

Manager – 4

Using factor data type does our work of assigning levels within the Designation variable.

Creating a new variable Designation_Encoded to show the Designation column as label encoded.

Now let’s have a look at our dataframe !

The data frame has a new column Designation_Enc containing the numeric representation of the original Designation column and hence we are done !

We can now drop the Designation column from our dataframe.

One – Hot Encoding

Since the ordinal categorical variables have been taken care of , now it’s the time to look at the second type of categorical variables which are the nominal categorical variables. When we give the nominal categorical variables a numeric representation it is known as one-hot encoding.

Since in the case of nominal variables we cannot explicitly order the categories (values) that we have in a variable (column of a dataset) so we go for a relatively new concept of dummy variable creation.

What do we need to do here? Just identify the distinct categories you have within a variable and create a dummy variable for each of them.

I did a survey with some of the corporate employees and recorded their responses as to what factors drive them to work harder in their job. Sharing the responses :

Let’s read the dataset as a data frame in R,

‘Response’ is a nominal categorical variable here , let’s perform one- hot encoding on this !

There are 5 different categories so creating 5 dummy variables i.e 5 new columns will be introduced in the dataset which will cause the ‘Curse of Dimensionality’ so instead of creating the dummy variables right now first we will go for ‘Binning’ the categories in the ‘Response’ variable.

Using the ifelse we binned the categories and reduced them to two : Monetary and Non-Monetary.

Now we just need to create 2 dummy variables !

Wait! We need to install a package fastDummies first,

Two dummy variables Response_Monetary and Response_Non-Monetary have been created. Why do we need 2 such variables? We don’t ! We just read about Multicollinearity and it’s evident that to avoid multicollinearity we need to drop one of them.

Let’s redo!

And we are done ! The “Response” variable has been One-hot encoded. We can further drop the “Response” variable from the dataframe.

Done people!

So this is how we perform One-Hot Encoding , try creating dummy variables for multiple variables simultaneously.


So we are at the end of this article and I hope that by now you must be very well aware about how to perform type casting in R , how to type cast the character data type storing a date value into a proper Date data type and finally how to work towards the pre-processing of the data to be fed into a model with encoding.

Where there can be multiple ways to perform a particular task it is always good to know about the various options available.

Hope you liked my article on R Programming Concepts. Read more articles on our website.


Using Android Architecture Components: Lifecycles And Sqlite Made Easy


dependencies { implementation "android.arch.lifecycle:runtime:1.0.3" annotationProcessor "android.arch.lifecycle:compiler:1.0.0"

If you want to use Java 8.0 with the Lifecycles library, then you’ll also need to add the following:


implementation "android.arch.lifecycle:common-java8:1.0.0"

The Lifecycles library introduces the following components:

Lifecycle – An abstract class that has an Android Lifecycle attached to it. Objects can observe this state and act accordingly.

LifecycleOwner – An interface that’s implemented by objects with a Lifecycle. Fragments and Activities already implement the LifecycleOwner interface (in Support Library 26.1.0+), and are therefore LifecycleOwners by default. You can observe LifecycleOwners— and any class that extends a LifecycleOwner— using a LifecycleObsever.

LifecycleObserver – LifecycleObserver receives updates about LifecycleOwner events. Prior to the Lifecycles library, you could only react to methods that were triggered by lifecycle events, like onCreate and onDestroy, but now you can create methods that are triggered by changes in a LifecycleOwner’s state. You can make a method lifecycle-aware by adding the @OnLifecycleEvent annotation.

Observer – An Observer receives an update whenever their assigned LifecycleOwner enters a new lifecycle state. An Observer that’s assigned to an Activity will be notified when this Activity enters a paused state, and again when it enters a resumed state. You add an Observer to a lifecycle, using lifecycle.addObserver(this).








ON_ANY is triggered by any lifecycle event. If you use Lifecycle.Event.ON_ANY, then the method should expect a LifecycleOwner and Lifecycle.Event argument.

Let’s look at how you’d create a LifecycleObserver that responds to changes in an Activity’s state. In the following code, we’re printing a message to Android Studio’s Logcat whenever the associated LifecycleOwner (MainActivity) enters a started or stopped state:


import; import android.os.Bundle; import android.arch.lifecycle.Lifecycle; import android.arch.lifecycle.LifecycleObserver; import android.util.Log; import android.arch.lifecycle.OnLifecycleEvent; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getLifecycle().addObserver(new Observer()); } public class Observer implements LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_START) public void onStart() { Log.e(TAG, "ON_START"); } @OnLifecycleEvent(Lifecycle.Event.ON_STOP) public void onStop() { Log.e(TAG, "ON_STOP"); }   }


@OnLifecycleEvent({ON_STOP, ON_START})

If your project already has methods that handle lifecycle events, you can add the @OnLifecycleEvent annotation to these existing methods, rather than re-writing your current implementation.

Performing operations based on the Lifecycle state

You’ll usually only want to perform an operation when a Lifecycle is in a certain state.

For example, if you attempt to perform a FragmentTransaction after an Activity state has been saved, then the FragmentManager is going to throw an exception. By using getState.isAtLeast, you can ensure this operation only happens when the Lifecycle is in a compatible state:


public void startFragmentTransaction() { if (lifecycle.getState.isAtLeast(STARTED)) { } }

The isAtLeast method can check for the following Lifecycle states:






You can also retrieve the current lifecycle state by calling getCurrentState().

LiveData: Keep track of changing data


implementation "android.arch.lifecycle:extensions:1.0.0" Easier data storage with Room


compile "" 1. Database

The @Database class provides the bridge between your application and SQLite.

Your @Database class must be an abstract class that extends RoomDatabase, which defines tables present in your database, provides Data Access Objects (DAO) classes, and includes a list of entities associated with the database.


//List the entities contained in your database. Separate multiple entities with a comma// @Database(entities = {List.class}, version = 1) public abstract class MyDatabase extends RoomDatabase { public abstract ItemDao itemDao(); }

You can acquire an instance of Database by calling Room.databaseBuilder() or Room.inMemoryDatabaseBuilder().

2. Entity

Room creates a table for each class that you annotate with @Entity, where each field corresponds to a column in the table. Entity classes are usually small model classes that don’t contain any logic.

Room can only persist fields it has access to, so you either need to make a field public, or provide getter and setter methods. Each entity also needs to define at least one field as a primary key. Even if there’s only a single field, you’ll still need to annotate that field with @PrimaryKey.


@Entity public class List { @PrimaryKey private int id; private String item; public String getItem() { return item; } public void setItem(String item) { chúng tôi = item; }

Room uses the class name as the database table name, unless you override it using the tableName property:


@Entity(tableName = "list")

Room also derives the column name from the field name, unless you explicitly define the column name using the @ColumnInfo(name = “column_name”) annotation, for example:


@ColumnInfo(name = "productName")

Room creates a column for each field that’s defined in the entity. If there’s a field you don’t want to persist, then you’ll need to annotate it with @Ignore.


@Entity public class List { ... ... ... @Ignore Bitmap image; }

Even though most object-relational mapping libraries let you map relationships from a database to the respective object model, Room doesn’t allow object references. The reasoning behind this restriction is that this type of lazy loading typically occurs on Android’s main UI thread, which can result in unresponsive user interfaces and application crashes. Instead, you’ll need to explicitly request the data your app requires.

3. DAO

@Insert. When you annotate a DAO method with @Insert, Room generates an implementation inserting all entries into the database in a single transaction.

@Update. Modifies entities in the database.

@Delete. Removes entities from the database.

@Query. This is the main annotation you’ll use in your DAO classes and it’s how you’ll perform all your read/write operations.

The following DAO interface contains various operations that we can perform on our table:


@Dao public interface ItemDao { @Query("SELECT * FROM List") @Update void update(List list); @Delete void delete(List list); }

Each @Query method is checked against the table schemas at compile time. If there’s a problem with a query, you’ll get a compilation error rather than a runtime failure.

When performing queries, you’ll often want your application to update automatically when the data changes. You can achieve this by using Room in combination with LiveData – specifically, by using a return value of type LiveData in your query method. Room will then generate all the code necessary to update the LiveData when the database is updated.


@Query("SELECT * FROM List")

If you’re using the RxJava library in your project,  you can create Room queries that return a backpressure-aware Flowable. Flowable is a new addition to RxJava 2.0 that helps you avoid the issue of a source Observable emitting items too quickly for the downstream Observer to process. This can result in a backlog of unconsumed, memory-hogging items.

To use RxJava with Room, you’ll need to add the following dependency to your module-level build.gradle file:


implementation ""

If you’re interested in learning more about using RxJava 2.0 in combination with the Room library, then Google has published a Room and RxJava Sample app.

Wrapping up

Text Mining Hack: Subject Extraction Made Easy Using Google Api

Let’s do a simple exercise. You need to identify the subject and the sentiment in following sentences:

Google is the best resource for any kind of information.

I came across a fabulous knowledge portal – Analytics Vidhya

Messi played well but Argentina still lost the match

Opera is not the best browser

Yes, like UAE will win the Cricket World Cup.

Was this exercise simple? Even if this looks like a simple exercise, now imagine creating an algorithm to do this? How does that sound?

The  first example is probably the  easiest, where you know “Google” is the subject. Also we see a positive sentiment about the subject. Automating the two components namely subject mining and sentiment mining are both difficult tasks, given the complex structure of English language.

Basic sentiment analysis is easy to implement because positive / negative word dictionary is abundantly available on internet. However, subject mining dictionaries are very niche and hence user needs to create his own dictionary to find the subject. In this article, we will talk about subject extraction and ways to automate it using Google API.

Also See: Basics of creating a niche dictionary

Why is subject extraction not a common analysis?

The most common projects using text mining are those with sentiment analysis. We rarely hear about subject mining analysis. Why is it so?

Hash tags could also help to find sarcasm to some extent.  Consider the following tweet :

Indian batting line was just fine without Sachin. #Sarcasm #CWC2023 #Sachin #Indian-Cricket-Team

Think of this sentence without hash-tags. It would be incomplete and would give a different meaning. Mining for hash tag(#sarcasm) will indicate that the sentence is most probably a negative sentence. Also, multiple subjects can be extracted from the hash tags and added to this sentence.

Hopefully, you can now realize the importance of these hash tags in data management and data mining of social networks. They enable the social media companies to understand our emotions, preferences, behavior etc.

Why do we even need subject extraction?

However, social media do a good job with subject tagging, we still have a number of other sources of unstructured informations. For instance, consider the following example :

You run a grocery stores chain. Recently you have launched a co-branded card which can help you understand the buying patterns of your customers. Additionally this card can be used at other retail chains. Given, that you now will have transaction information of your customers at other retail chains, you will be in a better position to increase the wallet share of the customer at your store. For instance, if a customer buys all vegetables at your store but fruits at other, you might consider giving the customer a combo of fruits & vegetables.

In this scenario, you need to mine the name of retail store and some description around the type of purchase from the transaction description. No hash-tags or other clues, hence you need to do the hard work!

What are the challenges in subject extraction?

There are multiple other scenarios where you will need to do subject mining. Why do we call it a “hard work”?  Here are the major challenges you might face while subject mining :

Rarely do we find a ready-made dictionary to mine subjects.

Creating a subject based dictionary is extremely manual task. You need to pull a representative sample then pull those keywords and find a mapping subject.

Standardization of subjects is another challenge. For instance, take following transaction description :

“Pizza Hut paid $50”

“Pizzahut order for $30”

Now even if we build a system which can populate the first/first 2 words as the subject, we can’t find a common subject for the above two. Hence, we need to build a dictionary which can identify a common subject i.e. “Pizza Hut” for both these sentences.

Possible Framework to build a Subject Extraction Dictionary

There are two critical steps in building a subject mining dictionary:

Find the keywords occurring frequently in the text. This has been covered in detail in this article.

Create a mapping dictionary from these keywords to a standardized subject list.

For second part, here are the sub-steps you need to follow :

Find the most associated word with these frequently occurring word. (You again need to assume a minimum association threshold)

Combine the frequently occurring words with associated words to find searchable pairs.

Now all we need to do is to match subjects for each of these pairs.  We search pairs and not single words because we need enough context to search for the phrase. For example “Express” might mean “American Express” or “Coffee Express”, two words can give enough context whereas more than two words will make the dictionary too big.

Here are some examples of this process :

“Wall Mart has the best offers” 

“Tesco stores are not good with discounts”

“New Wall Mart stores are supposed to open this year”

“Tesco Stores have the coolest loyalty programs and discounts”

Most Frequent words: After removing stop-words : 1. Wall  2. Mart  3.Tesco  4. Stores

Most Associated words: 1. Wall  & Mart , 2. Mart & Wall , 3. Tesco & Stores  , 4. Stores & Tesco

Now we’ll use these words to search for the right subject.

How to automate the process of Subject Extraction Dictionary Creation?

Second step of subject mining is creating keyword to subject pairs. This step is generally done manually, but let’s take a shot at automating this process. Here is what we intend to do :

Pick up the keyword pairs found significant in the context (coming from last step).

Google Search on this pair

Pick the first 4 links which Google would give.

If two of the first 4 links are same, we return back to the URL. In case the search is not unanimous, we return “No Match Found”.

Let’s first create a function which can retrieve the first four links from Google on a search and then find if we have a common link. Here is code to do the same :

Now, let’s create a list of keywords which our code can search. (Notice that each of these keywords are quite different but Google will help us standardize them)

Its now time to test our function :

And Bingo! You see that our code was given different inputs but our code has done fairly well to spot the right set of subjects. Also notice that this dictionary is not limited by any scope of the subject. Two of its searches are Fast Food chains. Third one is an analytics website. Hence, we are creating a more generalized dictionary in this case. Now all we need to do is build rules using these keywords and map them to the matched links.

Here is the entire code :

[stextbox id=”grey”]

import urllib import json import numpy as np from urlparse import urlparse from bs4 import BeautifulSoup def searchengine(examplesearch):       encoded = urllib.quote(examplesearch)       searchResults = jsonData['responseData']['results']       links = np.empty([4, 1], dtype="S25")       i = 0      for er in searchResults:            link = er['url']            link1 = urlparse(link).netloc            links[i,0]=link1            i = i + 1       target = "No Match found"       if links[0,0] == links[1,0] or links[0,0] == links[2,0] or links[0,0] == links[3,0]:          target = links[0,0]       if links[1,0] == links[2,0] or links[1,0] == links[3,0]:          target = links[1,0]       if links[2,0] == links[3,0] :          target = links[2,0]       return [target] import numpy as np import pandas as pd import pylab as pl import os os.chdir(r"C:UsersTavishDesktop") Transaction_details = pd.read_csv("Descriptions.csv") Transaction_details["match"] = "blank" Transaction_details for i in range(0,11):        descr = Transaction_details['Descriptions'][i]      Transaction_details["match"][i] = searchengine(descr) Transaction_details


[stextbox id=”grey”][/stextbox]

End Notes

The approach mentioned in this article can be used to create a generalized dictionary which is not restricted to any subject. Frequently, we use the super powers of Google to auto correct the input keywords to get the most appropriate results. If this result is unanimous, it tells us Google has found a decent match from the entire web world. This approach minimizes the human effort of creating such tedious subject extraction dictionaries.

Thinkpot: Can you think of more cases where Google API’s are used? Share with us useful links of related video or article to leverage Google API

Did you find the article useful? Do let us know your thoughts about this article in the box below.

If you like what you just read & want to continue your analytics learning, subscribe to our emails, follow us on twitter or like our facebook page.


Making Leverage Trading Easy With Wowswap

Traditionally, Leverage or Margin Trading has had a very niche group of users who had to be highly skilled and technically sound in their knowledge of the market in order to reap its benefits. With the creation of cryptocurrencies, this scenario has seen a significant change as almost all major crypto exchanges now offer the option of margin trading.

With the steady growth in DeFi (Decentralised Finance), this too has changed. What was originally a centrally controlled system wherein platforms and exchanges controlled and leveraged their trading rules, liquidation procedures, assets, and capital lending rates, is giving way to a decentralized system lead by the community.

Driven by this mission, WOWSwap is a decentralized exchange run by the community, one that allows users to benefit from its protocol and make profits through leveraged trading. Its community-driven approach gives the user an opportunity to create and operate common liquidity pools, liquidation procedures, and much more.

What is leveraging?

Leverage Trading refers to borrowing funds in order to increase a trader’s position size and market exposure, therefore, increasing its profitability. A trader’s initial investment is called the ‘margin’ and is the collateral used in case the asset’s market price moves in the opposite direction. Margin trading lets the traders benefit from both bullish and bearish markets by opening both long and short positions.

How WOWSwap works?

WOWSwap’s platform caters to the most liquid tokens on PancakeSwap with up to 5x leverage. These tokens include ETH, WOW, CAKE, BTCB, ATOM, AUTO, DOT, YFI, UNI, SFP, ALPHA, TWT, SXP, LINK, ADA, SPARTA, BRY, BAND, FIL, LIT, LTC, JULD, UNFI, BIFI, BDO, XVS, BSCX, and zSEED. Later on, the community will have the chance to vote on the addition of any more tokens for trading on their website.

WOWSwap’s mainnet app was launched on the Binance Smart Chain on top of PancakeSwap DEX. As one of the main problems faced while trading is a high gas price, WOWSwap solves this and charges a minimal gas fee for transactions.  It is available on Binance Smart Chain on top of PancakeSwap DEX and on Polygon on top of quickswap DEX.

The platform allows individuals to provide liquidity to BNB and BUSD on BSC network and MATIC, ETH and USDC on polygon network. This allows traders to use these funds in order to finance their leveraged swaps on decentralized automated market makers (AMM). The individuals earn a passive income from traders who pay an Hourly Interest Rate on the amount. The platform is also all set to start liquidity mining from the end of April.

Proxy tokens, Liquidations, and Portfolios

In the case of liquidity providers, their tokens need to be converted from BNB/BUSD to ibBNB/ibBUSD, which are interest-bearing tokens in order to add liquidity to the pools.

While buying a token with leverage on the platform, a user is given information regarding the borrowed amount and the Hourly Interest Rate (HIR) for it. After a swap is done, ‘proxy tokens’ (ERC-20 transferable tokens) are provided to the user which is pegged 1:1 to the real tokens.

These ‘proxy tokens’ are then changed into real tokens for BNB/BUSD on PancakeSwap to repay the loan to the liquidity pool and the remaining amount is then transferred to the user.

The protocol charges 5% of net profits made by the traders and divides it equally between their insurance fund and expenditure to buy and burn WOW tokens. The users are aided through this extensive process, through the interface used by the WOWSwap platform which is minimal and relatively easy to use even for amateurs.

As Liquidation events cannot happen on their own on the WOWSwap platform, a margin caller needs to trigger it. If a successful liquidation occurs, the margin caller would receive a liquidation reward which is currently set at 5% but can be changed later.

The Portfolio section provides extensive details about the user’s transactions and other details such as its current position size, its value, debt, HIR, and position health.

Instant governance model

As mentioned earlier, the WOWSwap protocol is managed by a decentralized community of token holders and their delegates. These delegates control the addition or deletion of tokens by voting and presenting proposals, which are both executable codes. Users can delegate and/or receive their voting rights from other users. Once a user proposes voting on a proposal, it remains open for 3 days and once a majority is achieved, a 24-hour timelock kicks in after which the proposal is broadcasted to the network.

Their team is currently working on the platform’s governance and the interface for adding proposals and voting is in the pipeline and scheduled to be launched very soon.

ICO and public sale

The WOW token public sale which took place on the 25th of February 2023 achieved the record for the fastest ICO sale in the world. The backers of the token sent over $11 million worth of BNB (Binance Coin) to the token sale smart contract and therefore, the $700k hard cap closed within just 9 seconds of the sale’s opening.

A BSC Scan of the transaction history of the public sale contract showed that over 1000 unique wallets participated in the sale, but only 111 buyers succeeded in acquiring the token. For the 954 remaining users, the platform later rolled out a special rewards program.

Tokenomics and distribution

The WOW token has a limited supply of 1,000,000 tokens which would be used for the protocol’s governance and community rewards system. Currently, the WOWSwap token has a market cap of $7.71 million dollars with its current price at $29.78 dollars for a token at the time of writing.

The community tokens will be distributed to the users over a span of 18 months in the following manner,

200,000 tokens will be reserved for community contests, marketing activities, bounty campaigns, white hacking rewards, and airdrops

200,000 tokens will be distributed to liquidity providers

100,000 will be distributed to leveraged traders

50,000 tokens to be distributed to margin callers

In the public sale, 230,000 WOW tokens were up for sale with a 3-month lock-up period. The funds collected from the public token sale would be used to provide initial liquidity for leverage traders and accelerate the development of the protocol.

While 90% of the total funds would be used to provide liquidity on PancakeSwap, protocol development, marketing, BNB lending, and audit, the remaining 10% would be kept as a reserve for further expansion of the protocol.

Final Word

WOWSwap seeks to bring the concept of Leveraging and DeFi together and presenting it in a simple yet effective manner for its users. The platform set records even before its actual launch with its ICO, proving that it is building an enthusiastic user base.

With its instant governance model, it is looking to create a community-driven platform where each user will have a say in the implementation of its proposals. While lenders can earn a passive income by becoming a liquidity provider, borrowers can make profits and save up on gas. In this way, WOWSwap is looking to offer something to everyone.

For more information, check out their website.

WOWSwap also has an active Telegram, Medium, and Twitter to get in touch with its users.

Small Business Taxes In 2023

Tax obligations can be confusing and change frequently, so take time to review the latest tax changes for this year.

Most of the tax rules put into place during the COVID-19 pandemic are expiring this year or have already expired.

Working with a certified public accountant (CPA) can help you ensure you are complying with current regulations and paying the right amount.

This article is for small business owners who want to know what to expect for their tax obligations for the 2023 tax year.

As a small business owner, it’s important to stay up to date on tax laws. Several changes to the federal tax code will affect small businesses this tax year. Read this guide to find out the most important things to know about filing taxes next year. 

Tax changes for 2023

The following changes are in effect for the 2023 tax year, which you prepare and file in 2024.


Doing your taxes on your own? See our reviews of the best tax software for small businesses.

Modified credit for pension plan startup costs

The SECURE Act increases the Section 45E credit for all or a portion of employer contributions to small employer pensions for the first five employer tax years, starting in 2023. The credit for employer contributions is capped at $1,000 per employee. The full credit is available to employers with 50 or fewer employees and is phased out completely for employers with more than 100 employees. 

Net operating rules

The rules around how to claim a net operating loss are changing this year. A net operating loss occurs when your deductions exceed your gross income. As a general rule, you can carry the loss forward to offset income in later years. You cannot offset more than 80% of your taxable income. 

However, a net operating loss generated in 2023, 2023 or 2023 that you are carrying forward is not subject to the 80-percent-of-taxable-income limit. For net operating losses generated after 2023, the 80-percent-of-taxable-income limitations again apply. 

Excess business-loss limitation rules

Through a temporary suspension of Tax Cuts and Jobs Act rules in 2023 and 2023, businesses could carry net operating losses back five years or carry them forward indefinitely. However, the suspension has ended. Taxpayers cannot deduct losses of more than $540,000 per year if married filing jointly or $270,000 if single. This applies to all business income and losses, including Schedule C and pass-through-entity income and losses. You can carry forward losses in excess of these amounts to lower your taxable income in future years. 

In addition, W-2 wages can no longer be used to offset the business losses. Spousal income is taxed separately and may result in a tax bill even if the business losses are greater than the spousal income. 

Interest expense limitation rule

The interest expense limitation rule generally limits the amount of deductible interest expense for the year to the total of the following:

Business interest income for the year

30 percent of adjusted taxable income

Your floor plan financing interest expense

This tax rule was temporarily suspended during the pandemic, but it is back in force in 2023 and beyond.

Charitable contributions increased limits expired

The charitable contribution rule that allowed C corporations and individuals to deduct a greater percentage of their income for charitable contributions is no longer in force for the 2023 tax year.

New 1099-K form deferred

According to the American Rescue Plan Act of 2023, beginning in tax year 2023, small business owners and freelancers who receive more than $600 from third-party digital platforms were scheduled to receive Form 1099-K reporting that income. Platforms such as Amazon, Etsy and eBay also were to report this income to the Internal Revenue Service. 

After pushback from taxpayers and businesses, this requirement has been postponed for one year. If it’s applicable to your business, expect to receive a Form 1099-K in 2024 for the 2023 tax year. 


A tax professional can help make sure your business taxes are correctly prepared and filed in accordance with the latest federal, state and local laws.

State and local tax (SALT) cap

Since 2023, filers can deduct only up to $10,000 in state and local property and income taxes. The deduction is the same for single filers and couples filing a joint return. 

Many business owners who operate a pass-through entity in a high-tax state find their deductions limited by SALT rules. Wayne Winegarden, senior fellow and director of the Center for Medical Economics and Innovation at the Pacific Research Institute, said all business owners should be aware of this cap. “I really think in the high-tax states, the SALT cap is going to be meaningful, more for small businesses, just because they’re going to be filing through their personal taxes,” he said.

Tax benefits for pass-throughs and corporations

The tax reform law created a significant deduction for both pass-through and corporate entities. Pass-through businesses are small businesses structured as S corporations, limited liability companies (LLCs), sole proprietorships and partnerships. Pass-throughs make up approximately 95 percent of U.S. businesses. The law now provides a 20 percent deduction for those businesses. The 2023 deduction phases out at taxable income levels between $170,050 and $220,050 (between $340,100 and $440,100 for joint filers), and the 2023 phase-out levels will be adjusted for inflation. This deduction is set to expire at the start of 2027. 

C corporations also got a big tax benefit: The Tax Cuts and Jobs Act lowered the corporate tax rate from 35 percent to 21 percent in a bid to bring major corporations back to the U.S. to employ workers and create wealth.

First-year bonus depreciation

The first-year bonus depreciation deduction was changed to 100 percent through the end of 2023. In other words, businesses that made eligible equipment and property purchases could deduct the full purchase price instead of writing off a portion of it each year. This provided businesses with more money upfront, which lawmakers hoped would be invested back into the business or be used to hire workers.

Starting with the 2023 tax year, the 100 percent bonus depreciation amount is scheduled to be reduced every year. Josh Zimmelman, founder of Westwood Tax & Consulting, said this enables businesses to write off the cost of assets in one shot.

“A company can invest in vehicles, computers and equipment, and claim the entire expense on their … tax return,” Zimmelman said.

Winegarden said the break is an incentive for businesses to spend more. “Anything that gets you closer to complete expensing is going to increase the value of the depreciation, lower the tax burden and reward those capital-intensive firms,” he said.

Did You Know?

Some provisions from the 2023 tax reform law may still affect your business today.

Important 2023 deadlines

Take note of the following tax deadlines for 2023:

2023 tax returns and payments are due by midnight on April 18, 2023, for sole proprietorships, household employers and C corporations. For S corporations and partnerships, taxes are due March 15, 2023.

Quarterly tax deadlines for 2023 for estimated income tax are April 18 for Q1, June 15 for Q2, Sept. 15 for Q3 and Jan. 15, 2024, for Q4.

2023 tax returns and payments are due April 18, 2024. S corporations and partnerships must file by March 15, 2024.

Top small business tax deductions

This isn’t a comprehensive list of tax deductions available to small businesses (and you need to ensure your business is eligible for these deductions), but it’s a great starting point:

Rent: If you rent your office space or retail location, the cost of your rent is fully deductible.

Home office: If you have a dedicated workspace in your home (it must be regularly and solely used for business), then you are eligible to deduct expenses related to that portion of your home.

Advertising: Promoting your company not only helps to grow your business; it also may shrink your taxes, as these expenses are fully deductible as well. Advertising expenses include things such as business cards, flyers and digital marketing.

Vehicle: As long as you can document and verify that the vehicle is used for business purposes, you can deduct the operation costs. As with the home office deduction, you can choose to use the simple deduction, which is 65.5 cents per mile for 2023, or you can itemize the specific costs.

Travel: Business travel costs are fully deductible. These include flights, hotels and other transportation costs you incur while on a business trip.

Employee salaries: Salaries — along with many benefits, like retirement and education offerings — are tax deductible. [Learn how to build a great employee benefits plan.]

Types of small business taxes

Small business taxes vary based on the structure of the business, but here are the five primary small business taxes:

Income tax: Except for partnerships and other pass-through entities, all businesses file annual income tax returns. Pass-through entities file information returns.

Self-employment tax: The self-employment tax is on your net earnings from self-employment and consists of Social Security and Medicare taxes.

Employment taxes: If you have employees, you have taxes (and forms) related to their Social Security and Medicare taxes, federal income tax withholdings, federal unemployment tax, and other taxes, such as local transit taxes. These are referred to as payroll taxes.

Sales and excise tax: Most states require you to collect and remit sales tax on qualifying sales. You also pay excise tax on sales in specific categories. You may even have to register and collect sales tax in other states in which you do business.

Estimated taxes: Many businesses (sole proprietors, partnerships and S corporation shareholders) must pay quarterly estimated tax payments. This requirement applies if you don’t have taxes withheld from each paycheck or don’t have a sufficient amount withheld from each paycheck.

Key Takeaway

Small businesses must account for several types of taxes, including income tax, self-employment tax, employment taxes and excise tax. These vary based on your company’s structure, but there are ways to reduce your business’s tax liability.

Things to remember

If you started your business in 2023, remember these key takeaways:

To file your tax return, you will need a tax ID number. This is typically either the employer identification number issued when the articles of incorporation were approved (for corporations and LLCs) or a Social Security number, although, in rare cases, other numbers can be used. If you need an employer identification number, you can apply for and receive one online.

In addition to income taxes, you pay 15.3 percent in self-employment tax on net self-employment income. This equals what an employer would normally deduct from an employee’s paycheck for Medicare and Social Security taxes, plus the employer-paid share.

All income, including cash and noncash payments, must be reported on your tax return.

If you pay your own health insurance premiums, you may be able to deduct them as a business expense.

If you’re not ready to submit your taxes by April 15, you can file for an extension. However, you should pay your estimated taxes to avoid penalties and interest. The deadlines for requesting extensions are March 15 for S corporations and April 15 for C corporations.

Employee bonuses are taxed differently than regular wages are, with a special bonus tax of 22 percent, as well as a distinct rate for Social Security and Medicare taxes.

If you have a side hustle that supplements the income from your regular job, the IRS considers what you make on the side to be self-employment income and you are taxed accordingly.


Business travel is 100 percent deductible, but personal travel isn’t deductible at all. So, if you have airline or hotel points, use them for your personal travel and pay cash for your business travel expenses.

Tax planning should be a year-round strategy

It’s important to be proactive about tax planning for your business. Waiting until the last minute makes tax preparation more complicated and limits your money-saving options. Keeping up with current and future tax changes helps keep you in charge so you can maximize all tax benefits and run a profitable business.

Jennifer Dublino contributed to this article. Source interviews were conducted for a previous version of this article. 

Update the detailed information about Crypto Taxes Made Easy With Cryptiony on the website. We hope the article's content will meet your needs, and we will regularly update the information to provide you with the fastest and most accurate information. Have a great day!