why the currency data(such as USD/JPY) is different from different source
A day is a long time and the rate is not the same all day. Some sources will report a close price that averages the bid and ask. Some sources will report a volume-weighted average. Some will report the last transaction price. Some will report a time-weighted average. Some will average the highest and lowest prices for the interval. Different marketplaces will also have slightly different prices because different traders are present at each marketplace. Usually, the documentation will explain what method they use and you can choose the source whose method makes the most sense for your application.
I work on a buy-side firm, so I know how these small data issues can drive us crazy. Hope my answer below can help you:  Reason for price difference: 1. Vendor and data source Basically, data providers such as Google and Yahoo redistribute EOD data by aggregating data from their vendors. Although the raw data is taken from the same exchanges, different vendors tend to collect them through different trading platforms. For example, Yahoo, is getting stock data from Hemscott (which was acquired by Morningstar), which is not the most accurate source of EOD stocks. Google gets data from Deutsche Börse.  To make the process more complicated, each vendor can choose to get EOD data from another EOD data provider or the exchange itself, or they can produce their own open, high, low, close and volume from the actual trade tick-data, and these data may come from any exchanges.  2. Price Adjustment  For equities data, the re-distributor usually adjusts the raw data by applying certain customized procedures. This includes adjustment for corporate actions, such as dividends and splits. For futures data, rolling is required, and back-ward and for-warding rolling can be chosen. Different adjustment methods can lead to different price display.  3. Extended trading hours  Along with the growth of electronic trading, many market tends to trade during extended hours, such as pre-open and post-close trading periods. Futures and FX markets even trade around the clock. This leads to another freedom in price reporting: whether to include the price movement during the extended trading hours.   Conclusion To cross-verify the true price, we should always check the price from the Exchange where the asset is actually traded. Given the convenience of getting EOD data nowadays, this task should be easy to achieve.  In fact, for professional traders and investors alike, they will never reply price on free providers such as Yahoo and Google, they will most likely choose Bloomberg, Reuters, etc. However, for personal use, Yahoo and Google should both be good choices, and the difference is small enough to ignore. "The answer from littleadv perfectly explains that the mere exchange ratio doesn't say anything. Still it might be worth adding why some currencies are ""weak"" and some ""strong"". Here's the reason: To buy goods of a certain country, you have to exchange your money for currency of that country, especially when you want to buy treasuries of stocks from that country. So, if you feel that, for example, Japanese stocks are going to pick up soon, you will exchange dollars for yen so you can buy Japanese stocks. By the laws of supply and demand, this drives up the price. In contrast, if investors lose faith in a country and withdraw their funds, they will seek their luck elsewhere and thus they increase the supply of that currency. This happened most dramatically in recent time with the Icelandic Krona." "Using your example link, I found the corresponding chart for a stock that trades on London Stock Exchange: https://ca.finance.yahoo.com/echarts?s=RIO.L#symbol=RIO.L;range=1d As you can see there, the chart runs from ~8:00am to ~4:30pm, and as I write this post it is only 2:14pm Eastern Time.  So clearly this foreign chart is using a foreign time zone.  And as you can see from this Wikipedia page, those hours are exactly the London Stock Exchange's hours. Additionally, the closing price listed above the graph has a timestamp of ""11:35AM EST"", meaning that the rightmost timestamp in the graph (~4:30pm) is equal to 11:35AM EST.  16:30 - 11:30 = 5 hours = difference between London and New York at this time of year. So those are two data points showing that Yahoo uses the exchange's native time zone when displaying these charts." "For the purposes of report generation, I would recommend that you present the data in the currency of the user's home country. You could present another indicator, if needed, to indicate that a specific transaction was denominated in a foreign currency, where the amount represents the value of the foreign-denominated transaction in the user's home country Currency. For example: Airfare from USA to London: $1,000.00 Taxi from airport to hotel: $100.00 (in £) In terms of your database design, I would recommend not storing the data in any one denomination or reference currency. This would require you to do many more conversions between currencies that is likely to be necessary, and will create additional complexity where in some cases, you will need to do multiple conversions per transaction in and out of your reference currency. I think it will be easier for you to store multiple currencies as themselves, and not in a separate reference currency. I would recommend storing several pieces of information separately for each transaction: This way, you can create a calculated Amount for each transaction that is not in the user's ""home"" currency, whereas you would need to calculate this for all transactions if you used a universal reference currency. You could also get data from an external source if the user has forgotten the conversion rate. Remember that there are always fees and variations in the exchange rate that a user will get for their home country's currency, even if they change money at the same place at two different times on the same day. As a result, I would recommend building in a simple form that allows a user to enter how much they exchanged and how much they got back to calculate the exchange rate. So for example, let's say I have $ 200.00 USD and I exchanged $ 100.00 USD for £ 60.00, and there was a £ 3.00 fee for the exchange. The exchange rate would be 0.6, and when the user enters a currency conversion, your site could create three separate transactions such as: USD Converted to £: $100.00 £ Received from Exchange: £ 60.00 Exchange Fee: £ 3.00 So if the user exchanged currency and then ran a balance report by Currency, you could either show them that they now have $ 100.00 USD and £ 57.00, or you could alternatively choose to show the £ 57.00 that they have as $95.00 USD instead. If you were showing them a transaction report, you could also show the fee denominated in dollars as well. I would recommend storing your balances and transactions in their own currencies, as you will run into some very interesting problems otherwise. For example, let's say you used a reference currency tied to the dollar. So one day I exchange $ 100.00 USD for £ 60.00. In this system I would still have 100 of my reference currency. However, if the next day, the exchange rate falls and $ 1.00 USD is only worth £ 0.55, and I change my £ 60.00 back into USD, I will get approxiamately $ 109.09 USD back for my £ 60.00. If I then go and buy something for $ 100.00 USD, the balance of the reference currency would be at 0, but I will still have $ 9.09 USD in my pocket as a result of the fluctuating currency values! That is why I'd recommend storing currencies as themselves, and only showing them in another currency for convenience using calculations done ""on the fly"" at report runtime. Best of luck with your site!" I'm using iBank on my Mac here and that definitely supports different currencies and is also supposed to be able to track investments (I haven't used it to track investments yet, hence the 'supposed to' caveat). Assuming the data you're referring to is this line: the difference might be related to the different exchanges on which the stock trades.  FINRA could be listing the reported volume from one exchange, while the NASDAQ data might be listing the volume on all exchanges. This is an important distinction because AAV is a Canadian company that is listed on the Toronto Stock Exchange and the NYSE. The Q at the end of the line stands for NASDAQ, according to FINRA's codebook for those data. My guess is that the FINRA data is only reporting the volume for the NASDAQ exchange and not the total volume for all exchanges (Toronto, NASDAQ, NYSE, etc.) while the data straight from NASDAQ, oddly enough, is reporting the total volume. However, FINRA could also face reporting discrepancies, since it's a regulatory body and therefore might not have the most up-to-date volume data that the various exchanges can access.  I don't know if it's related or not, but looking at the NASDAQ historical data, it looks like the volume on March 6, the day you're asking about, was much lower than the volume in most of the days immediately before or after it. For all I know, something might have happened that day concerning that particular stock or the market as a whole. I don't remember anything in particular, but you never know. "The basic idea is that money's worth is dependent on what it can be used to buy. The principal driver of monetary exchange (using one type of currency to ""buy"" another) is that usually, transactions for goods or services in a particular country must be made using that country's official currency. So, if the U.S. has something very valuable (let's say iPhones) that people in other countries want to buy, they have to buy dollars and then use those dollars to buy the consumer electronics from sellers in the U.S. Each country has a ""basket"" of things they produce that another country will want, and a ""shopping list"" of things of value they want from that other country. The net difference in value between the basket and shopping list determines the relative demand for one currency over another; the dollar might gain value relative to the Euro (and thus a Euro will buy fewer dollars) because Europeans want iPhones more than Americans want BMWs, or conversely the Euro can gain strength against the dollar because Americans want BMWs more than Europeans want iPhones. The fact that iPhones are actually made in China kind of plays into it, kind of not; Apple pays the Chinese in Yuan to make them, then receives dollars from international buyers and ships the iPhones to them, making both the Yuan and the dollar more valuable than the Euro or other currencies. The total amount of a currency in circulation can also affect relative prices. Right now the American Fed is pumping billions of dollars a day into the U.S. economy. This means there's a lot of dollars floating around, so they're easy to get and thus demand for them decreases. It's more complex than that (for instance, the dollar is also used as the international standard for trade in oil; you want oil, you pay for it in dollars, increasing demand for dollars even when the United States doesn't actually put any oil on the market to sell), but basically think of different currencies as having value in and of themselves, and that value is affected by how much the market wants that currency." Gold is traded on the London stock exchange (LSE) and the New York stock exchange (NYSE) under various separate asset tickers, mainly denominated in sterling and US dollars respectively.  These stocks will reflect FX changes very quickly.  If you sold LSE gold and foreign exchanged your sterling to dollars to buy NYSE gold you would almost certainly lose on the spreads upon selling, FX'ing and re-buying. In short, the same asset doesn't exist in multiple currencies.  It may have the same International Securities Identification Number (ISIN), but it can trade with different Stock Exchange Daily Official List (SEDOL) identifiers, reflecting different currencies and/or exchanges, each carrying a different price at any one time. I just tried doing that on my PP which is in the Netherlands, I have added a USD bank account (from my dutch bank) and they sent the verification amount in Euros, I called the bank and wonder why they didn't let me choose account currency they said it's not possible and if I cashout Dollars that I have in my PP (cause we usually do international business so we set it to dollars) it will be changed to Euros, So we decided to keep the dollars in account to pay our bills instead of getting ripped off by PayPal in xchange rates. Yes, one such provider is: https://www.fxcompared.com/ They allow you to compare a number of foreign currency providers, and take into account all of the fees and spreads, and give you a simple number which you can use to compare them - the amount of foreign currency you get for your domestic currency. My instinct says that there should be no difference. Your instincts are right. Your understanding of math is not so much. You sold $100K at the current price of 7500000RUB, but ended up buying at 3500000, you earned 3500000RUB. That's 100% in USD (50% in RUB). You bought 7500000RUB for the current price of $100K, but sold later for $200K. You earned $100K (100% in USD), which at that time was equal 3500000RUB. You earned 3500000RUB. That's 50% in RUB. So, as your instincts were saying - no difference. The reason percentages are different is because you're coming from different angles. For the first case your currency is RUB, for the second case your currency is USD, and in both cases you earned 100%. If you use the same currency for your calculations, percentages change, but the bottom line - is the same. Is there not some central service that tracks current currency rates that banks can use to get currency data? Sure.  But this doesn't matter.  All the central service can tell you is how much the rate was historically.  But the banks/PayPal don't care about the historical value.  They want to know the price that they'll pay when they get around to switching, not the last price before the switch.  Beyond that, there is a transaction cost to switching.  They have to pay the clearinghouse for managing the transaction.   The banks can choose to act as a clearinghouse, but that increases their risk.  If the bank has a large balance of US dollars but dollars are falling, then they end up eating that cost.  They'll only take that risk if they think that they'll make more money that way.  And in the end, they may have to go on the currency market anyway.  If a European bank runs out of US dollars, they have to buy them on the open market.  Or a US bank might run out of Euros.  Or Yen.  Etc.   Another problem is that many of the currency transactions are small, but the overhead is fixed.  If the bank has to pay $5 for every currency transaction, they won't even break even charging 3% on a $100 transaction.  So they delay the actual transaction so that they can make more than one at a time.  But then they have the risk that the currency value might change in the meantime.  If they credit you with $97 in your account ($100 minus the 3% fee) but the price actually drops from $100 to $99, they're out the $1.   They could do it the other way as well.  You ask for a $100 transaction.  They perform a $1000 transaction, of which they give you $97.  Now they have $898 ($1000 minus the $5 they paid for the transaction plus the $3 they charged you for the transaction).  If there's a 1% drop, they're out $10.98 ($8.98 in currency loss plus a net $2 in fees).   This is why banks have money market accounts.  So they have someone to manage these problems working twenty-four hours a day.  But then they have to pay interest on those accounts, further eating into their profits.  Along with paying a staff to monitor the currency markets and things that may affect them. Much as I hate to agree with you (because my personal bias is towards the belief China is cooking the books in a significant way) we should consider that this is the most likely explanation. Reconciling exactly a superset of data against hard-to-measure subsets is near impossible and, in an economy as dynamic as China's, it would be very difficult to get this right to such a small margin. "the Yen is *the source* of **""carry trades""**. It means whichever savvy people with means who want to borrow money to invest on a leveraged basis anywhere in the world, come running to borrow in yen. Why? Because (1) Japan is an advanced economy whose currency is freely convertible to many many currencies/countries who are happy to convert yen back and forth. (2) Japanese interest rates are low, lower than in the west b/c of their earlier deflationary crises due to too much debt and due to west requiring Yen to be too strong after the Plaza accords; so it's cheap to borrow there.  So a lot of investment around the world has, in origin, come from borrowing in japan.  As long as that investment is ""on"", the loan to japan remains outstanding. But the investor earns the ""carry"": the rate of difference between the cost of borrowing in Yen, and earning the return from whatever investment it is.   When scary things happen (like war, disaster, coups etc) the big money bags/investors pull their money out of their investments and put it in their banks.  This means they sell their investments, wherever they are, convert some of that money back into yent ( BUY YEN ) to return their yen loans. yen goes up." No. Getting more credit lowers your credit utilization ratio (if you don't use it), which raises your credit rating, this can also be done by asking for a higher limit on your existing credit card. Also, there is a chance that the company you got your first card from won't pull your credit a second time when they go to the underwriter. As any extensions of credit lower your credit score, although the credit utilization ratio is weighted more heavily.